Why do we even use languages to generate programs? Why isn’t there something available that is better (or at least less error prone) at generating software applications than pseudo-English programming languages?
I believe that there is a very simple reason that we keep getting new languages instead of new solutions. The reason is that we always pick the people who were most successful using the “last big thing” to design the “next big thing”. And since the last big thing was a programming language, they will probably suggest a programming language to be the next big thing.
This isn’t a criticism of language developers; it’s an observation of human nature. If you asked Babe Ruth how to become a better batter, he would probably tell you all the things that he did that helped him hit so many home runs. Stance, swing-plane, power techniques, etc. But if what you really wanted to do was get on base more often, his advice might not help.
So too with the rock-stars of programming. If you ask them how to improve software development, they will probably suggest new programming languages that would make their own individual future development efforts easier and/or more comfortable.
But if what we want are innovative solutions, outside the box solutions, then we are putting the wrong people in charge of finding those solutions. Instead of picking the best programmers, we should be asking ordinary people how to create error-free programs.
Instead of studying the best and the brightest programmers, we should be studying competent people to see where they make mistakes and how to prevent those mistakes. Perhaps then we will have the insight necessary to create systems that the rest of us mere mortals can use to effectively and efficiently develop software applications.
In the next blogs, we’ll investigate first human shortcomings and then language shortcomings, and how these shortcomings interact to produce the same slow-motion development cycle.