Sometime ago I discovered a quite interesting lecture made by Alan Kay. For those of you who don’t remember him, he’s one of the pioneers of the object-oriented programming and widowing graphical user interfaces.
So the lecture in question is asking if Programming is really Complex of if we just made it Complicated. A question that seems to come back in our minds from time to time.
On the visual comparison side, he shows us that 1 foot (30cm) of books which is an average of 15 books without the covers represent 300 000 lines. The average person reads 10 books a year and systems like windows and the office suite is about 220 000 000 lines of codes (11 000 books); well beyond the reading ability of the average reader. You should come to the obvious conclusion that in any modern large scale system nobody can claim knowing it all.
Then he goes on explaining how in physics, mathematics, biology and so on, scientist have been able to distill the essence of the field knowledge to a number of highly abstracted formulas which could be printed on a t-shirt. Something we are far off in computer science.
One of his finding is that reducing the programming effort by abstracting its constructs makes sense, but it cost an exponential inventive effort which peoples are not investing. So we stay the old fashion way in programming and do it all by hand.
One of his conclusion is that if it so, it’s because we simply allows it. He gives as an example Old sailing boats or Nuclear Submarines manned by more than a hundred men. It needs that many people because it can… On the other side of the range, if you take one of the big aircrafts we have in service (comparable size as a submarine); it takes only 2-4 people to man it… simply because a crew of more than a hundred men would kill the use case in a second. You just can’t.
Considering the case of Software Engineering, haven’t we reached the point where we simply can’t have that many people to do the trick?
Kay continues showing us examples from the past that could be created with way less “lines of code” that would be considered today as we made software engineering way more complicated than it is complex. He then propose a start of a journey to develop a less complicated way of developing software and shows some progress along that journey.
If you have some time to spare, it is a really interesting exposé to listen to, and since he has a soft voice, you can easily speed him up to 1.25x thanks to youtube!