Introduction
It has been a long time since I have written anything here. I have been working on my 2nd Master’s Degree (in Data Analytics). This requires a tremendous amount of time and dedication. I will say the experience is certainly worth it and will write a future article about the journey.
Getting on to the topic of this post, it would be incredible if there was a single, personal device anyone could carry around and do absolutely everything. It could be used with all software and can connect to monitors, keyboards, trackpads, NAS, networks, and any other component.
Starting to sound familiar (those who want an iPad to be a laptop replacement)? Is it realistic? Why has there not been the ultimate all-in-one device? The answer is not necessarily marketing. Monetary figures are still a factor, though.
Let’s talk about the difference between specialization and generalization. A specialized device has focused functionality. It also has specific hardware that is well defined for supporting that functionality. These devices seek to be the masters of what they are called upon to do.
Remember those TI-84 Graphing Calculators? That’s a specialized device and adheres to certain functions and supporting hardware (ex: it requires a certain set of keys to actually function). What it does, it does very well which is why it is still around today.
What about something more advanced? Would the following be considered a laptop?

No, it is not a laptop. It is a specialized device. It is a phone. Specifically, it is an Apple iPhone 12 mini which means it runs iOS. How do we determine that it is a iPhone 12 mini and not a laptop? Keep that question in the back of your mind and let’s continue with generalization.
Generalization takes on a broader expanse of functionality and supporting components. Functions that do not require a specific hardware component can now be implemented. It can be expanded upon. This is made possible due to generalization of the device. These devices are the Jack of All Trades.

There are certain aspects of generalized devices that come into play. Is the following a Mac mini?

Again, no, that’s a Dell XPS13 Laptop running Windows. We think that we know this because of the visual parts and OS. Now, this is a Mac mini:

There is something interesting here. Even though it is in the Mac Camp, can we run virtualization and put another OS on it? Yes, that is true and generalization helps make that possible. How about the Intel Macs running Windows? Are they now Wintel PCs? That is a great debate but being able to switch OS around like that is a feature of a generalized hardware.
Is generalization better or is specialization the right solution?
Why Specialized Devices Even Exists?
A question everyone should have asked by now is “why would anyone want a bunch of specialized devices rather than one device to rule them all?” This question can be answered by looking about your person.
What would you rather carry with you to make texts: a PC Desktop and monitor or a phone? After all, you can send texts on that desktop like a phone. Unless you like punishing yourself and looking silly, you understand a phone is more realistic and practical.
You also have to consider that there are cases where the best level of performance is needed. I’m going to talk about holy ground now, so be kind.
A video game console, vs a PC, has a well defined hardware and software architecture it needs to follow. This specialization allows all of those cutting-edge developers to code close to the metal. They understand what they are coding goes to a well defined architecture.
If you compare that to a generalized device, both hardware and software efforts go up (along with cost) to get the same level of performance. Costs go up as well. This is due to generalization requiring multiple levels in architecture to support many types of hardware from different manufacturers.
Is it possible that there will be a device that can “do it all?” Someday, maybe, but it would have to do some interesting things with materials that change shape based on function. In other words, there are certain laws of physics at play which make a morphing device physically impossible (at the time of writing).
With all of this put out there, how are we to make the decision of what is best? The answer is that it depends on the goal, the requirements, and any restrictions. We need to develop a functional specification (i.e. a spec)!
Why a Spec?
Remember when we saw that an iPhone is not a laptop. The reason is that there are functional specifications for iPhones and we recognize that without even seeing a document. We see the familiar form-factor with its buttons and shape. We also note that it can make calls with a mobile network, support Apple’s app architecture, and further such things that an iPhone can do. When in doubt, you can find a public version of the functional spec here.
Reading through that specification, we see in a very concrete way what makes up that iPhone. Of course, low-level design specifications are proprietary but do exist to take those high level ones to physical reality.
What about that laptop? That’s a bit odd as more factors come into play because of generalization.
Is a PC laptop the same a MacBook Air? One could say that the OS is what is different. In some cases, the OS defines the hardware. For example, there are specs developed by Microsoft. A classic PC 99 adhered to what you find here.
If interested in how Microsoft defines its hardware support, you can read quite a bit more here.
Again, what makes a laptop a laptop? I think you can search for yourself (hint, Seiko) but let’s get to the point of this whole article. A specification is necessary for proper definition and implementation.
For those interested in any form of engineering, you need to understand this concept of a specification. Essentially, it is the blueprint on what and how you are to build your end goal, your gadget/widget/software. It requires upfront thought and work before constructing.
A heavily detailed functional spec can have many layers, such as environment, security, external interfaces, and so on. Listing out the bits and pieces separately is a good start. At the very minimum, a spec should have the following sections:
- Description of goal – what are you trying to build?
- Background – how did you get here?
- Functional Points – What is this going to do?
- Acceptance Criteria – How do you know what you built meets the goal? Never forget to involve the quality assurance people.
- References – What did you use to build this spec?
There are times that you do need to tweak those specs mid-cycle. There are different design principals, such as Agile, that can be followed to help. Here is an article that relays the well known approaches.
Please, do research, dive deep into those methodologies. They are often software related, but other project types have followed the same or similar approaches. For those looking for a more data-oriented project lifecycle, you will want to read up on the CRISP-DM.
With this basic concept of a functional spec, we can now go back to our question of whether or not we understand why specialization is needed. Do you want something small, portable, and have specific functions which would allow tight control of the product? Do you want something that can do as much as possible and cost is not an issue? In all cases, you write down the requirements in a specification and carry forward from there. That’s when you will determine if you are creating a specialized device.
Finally
I hope this article provided a very basic introduction into why specifications are necessary for building something. It is noted that an idea can be built with brute force and tiresome redos. This often leads to big costs and big headaches. No one needs those aspects in a project.
It is essential that we properly take time and define the system. This avoids making something you do not want to make. Specs can be tweaked but make sure the goal is always focused on. Steady direction will lead you to success.
Please, read-up on techniques, think, and follow-through on proper design practices. The last thing anyone needs is another house built without a front door.
Thank you and Take Care
You must be logged in to post a comment.