Abstraction and the Future of Technology
Otobong Peter
Software Engineer & Systems Researcher | Currently Immersed in Web technologies, Blockchain & AI
Abstraction is the process of taking away or removing characteristics from something to reduce it to a set of essential characteristics. (source - techtarget). We are living in a world of increasing abstraction, kubernetes and docker have abstracted the process of running servers, and AWS has made deployment as simple as pushing a button.
While all these are plausible it makes one wonder what the aim of abstraction is.
Why Abstraction?
The idea of abstraction is to build layers that remove the technical details from a certain process. Say a process has 10 steps when you abstract it, you make it such that the steps are reduced to 4 while an underlying process handles the remaining 6 steps.
One argument for abstraction is that it makes things supposedly easier. But more recently we can all agree that this has not been entirely true. The problem with shielding layers of systems on top systems is that newer technologies become cranky.
For instance, you could build a very efficient system that works well but because it depends on another broken system that depends on another broken system to interact with the foundational system you end up with issues.
Another argument in support of abstraction is that it reduces the barrier of entry. Imagine if computers could only be programmed by writing binaries (1s and 0s). Of course, we would find ourselves in a position where very few elite would be the de facto experts in the field. But with higher-level languages like Python, Java, Javascript etc the space has been more democratized and that means there is a level playing ground for the human spirit to drive innovation from all angles.
In the end, abstraction has its importance especially if we want a more inclusive world with more persons empowered to contribute. The bad side of it is that, we have systems that work perfectly and the barrier to entry is not particularly steep but we have big tech who just want to monopolize a space to allow them to capture wealth and become gatekeepers.
The world is inherently decentralized, but with capitalism, the best way to often make a profit is to build a gate around the resources. For instance, you could have a perfectly functional system that is free, but then you find a company come around and say - the process and stressful, we will make it easier for you to use an the click of button all you need to do is pay a subscription or rent.
In times like this, we find out that systems built this way introduce needless complexity for the sole purpose of profit. I just needed to balance it out.
领英推荐
Forgetting how to build
Can we forget how to build?
That could be a question with a thousand and one answers. But, when the builders of the pyramid thought about the future, I am sure they wondered the grandiose we will build based on their establised works. Well years later we had to literally rediscover the art of architecture and building technology. Most of what we enjoy today was only built or rediscovered in the last 300yrs.
We had stretch of centuries when there was no recorded progress.
The problem with abstracting is that, when you build layers on top the core system, more persons become dis-incentivised to understand the core technology. The problem with this is that we end up with a situation where fewer and fewer minds know how to build the core tech. As time passes we find ourselves in a spot where there is no one available to rebuild or even improve the core system - and without the art of building is forgotten.
First Principles to the Rescue
First principle is about going back to the basics. It is stripping down a system down to its fabric as a means to understand essentially how it works and how to improve on it.
In the early 1960s, NASA put a man on the moon without supercomputers, high-speed internet, or cutting-edge chips but a few decades later there was no major progress. It became increasingly difficult to put a man on the moon.
The issues were:
When Elon Musk decided to get into the rocket space the first task was to strip existing rocket technology down to the basic parts and components. They were then able to figure out what could be improved upon. With a first-principle approach to rocket design innovation could be more fluid and cheaper. With that done, SpaceX could build rockets at a 10th of NASA's budget.
The problem with building on top layers of abstraction is that you can only stick to the existing rules set by the person who abstracted the layer you want to build. For real innovation to happen, we often have to get back to the base layer to think out how things work. Some things don't need abstraction except when it's extremely necessary. Also, incentives should be in place to inspire people to stay interested in core & base technologies if we really want to drive innovation.