david karapetyan Nov 10 '17
But surely new systems will emerge, perhaps for different, limited purposes, allowing for smaller systems. One wonders where their designers will study and learn their trade. There is little technical literature, and my conclusion is that understanding is generally gained by doing, that is, "on the job". However, this is a tedious and suboptimal way to learn. Whereas sciences are governed by principles and laws to be learned and understood, in engineering experience and practice are indispensable. Does Computer Science teach laws that hold for (almost) ever? More than any other field of engineering, it would be predestined to be based on rigorous mathematical principles. Yet, its core hardly is. Instead, one must rely on experience, that is, on studying sound examples.
On the one hand I like the democratization of computing but on the other hand I think we have forgotten an important piece of the puzzle. We have forgotten about purpose built systems that require deep understanding of computing fundamentals and how those fundamental pieces are engineered.
Modern computing systems are large and unwieldy. They've become impossible for a single person to understand in enough detail to be able to extend, re-architect, or re-engineer for other purposes. Now we build by accretion instead of minimal design constraints and considerations so it's no wonder we have so many layers of abstraction.
I wonder though, could computing have been democratized without so many layers of abstraction? Could we have made better building blocks? Could we have gotten here without so much cruft?