I was explaining the mechanics of how a computer works to a friend, when I realised that although I knew the basic concepts, I lacked the exact details. This reminded me once again about a fantastic courseware entitled _“The Elements of Computing Systems”_ by Noam & Shimon. If you have not yet come across this courseware I highly recommend it. In twelve steps the student builds a real computer as the quote states “from NANDs to Tetris”.
I have noticed a trend that seems to be on the rise at the moment. It feels like a new “learn to program in x weeks” startup launches every other week! Although I’m not in a position to judge the successfulness of each of these companies. I can’t help feel that a new IT bubble is forming. As a professional programmer, bubble aside this feels like the “new” VB6 fiasco.
Around 20 years ago Microsoft launched “Visual Basic Studio” and it was designed to enable “Rapid Application Development” (RAD). And in many ways it could be said that it succeeded at doing just that. It’s simple to use “drag and drop” style of programming enabled applications to be made with disgusting ease. It had in effect “lowered the barrier” to development and made it accessible to a much wider audience.
Much to the chagrin of professional developers the IT industry was flooded with what can only be described as “cowboy programmers” (in the UK a cowboy is a negative term). These cowboy developers (many without programming backgrounds) created extremely poor software. In some cases modern developers are still cleaning up that mess from a decade ago. I must emphasise that there were also competent engineers that did use VB6 to great effect (but they were in the minority).
Sadly it appears history is once again repeating itself. The selling point before was “productivity” This time round it is about “everyone should be able to code”. I fear the outcome will be the same. While the idea of teaching programming to everyone is noble, it is perhaps trying the solve the wrong set of problems.
As part of the US military doctrine the term “Full Spectrum Dominance” or “Full Spectrum Superiority” to give its official term are defined below:
The cumulative effect of dominance in the air, land, maritime, and space domains and information environment that permits the conduct of joint operations without effective opposition or prohibitive interference.
The general concept is to “cover all bases”. I would like to extend this concept to the engineering world. In the engineering version I like to call it “Full Spectrum Engineer”. There are many discrete disciplines within engineering (electronic, mechanical, computing). In my mind a full spectrum engineer is one who has a good grasp of all of them.
Although in modern times academia and industry has followed a path of specialisation, this has not always been the case. The giants of history and the classical scholars followed a very different path. In 384 BC Aristotle who was a student of Plato was a scholar who covered many domains from poetry to physics. Aristotle and many great figures like him were all polymaths, that is they were all involved in many diverse fields.
If you think about programming as a domain it is a highly specialised field. Getting more people into programing means pushing more people towards perhaps a more specialised domain. I genuinely believe that what the world needs today are more polymaths in a sea of monomaths.
I’m not going to extol the numerous advantages of being a polymath, as I feel that there are certainly enough space for both to coexist. Having said that the balance currently seems biased towards monomaths, this is most probably as a result of modern academia.
The ultimate goal of engineers are to solve problems. In order to solve problems there are various tools that can be used to bring about a solution. Programming is one particular tool, however solutions need not be solved from this singular perspective. In some cases it is impossible that a single tool is sufficient to solve a particular problem. Recently a lot of focus seems to be drawn towards programming. While this is commendable I feel this is a narrow focus, I believe the focus instead should be made as wide as possible. I think Abraham Maslow described the situation of a monomath engineer the best:
“if all you have is a hammer, everything looks like a nail”
Until next Monday. keep safe and keep learning.