Let us define a professional programmer as one who is making a life of programming, for different subjects or domains, usually in a General Purpose Language (GPL) like Java or C#.
1. Slow increase of professional programmers
The total number of professional programmers in the world is only slowly increasing. The extended capacity of universities and engineer schools is limited and does not overtake the number of professional programmers that are going to retire. The additional number of professional programmers in emerging countries (India, Brazil, China, Russia, etc.) is compensated by the lack of interest by technical programming careers in many industriellay developed countries.
These trends are likely to stay similar in the coming 25 years period.
2. Rapid increase of applications to develop
The number of application that will have to be devloped in the next years, for professional, social, ludical, individual or other needs is likely to follow an exponential increase.
3. Solving the impossible equation
An application is mainly made of software and this is not likely to change in the future. Whatever the language used, a professional programmer is able to produce a limited amount of software par day. Since fifty years, the individual productivity of the progrmmers has increased with better programming languages, but in an order of magnitude that let us pessimistic on the chances of making a breakthrough in the coming years, with another technique like automatic programming, program genaration from formal specification or another supposed silver bullet.
If we draw these two observations on the same diagram, we see that with the population of professional programmers in 2015, it will not be possible to deal with the production of all needed software-based applications.
Massively educating non-programmers into programming techniques means that we may miss these competencies for other important tasks (health care, building, commerce, law and police, manufacturing, etc.).
The problem is quite serious and will rapidly hit industrialized countries. Outsourcing will not be an acceptable solution.
4. Interdisciplinarity consider harmful.
One solution could be to develop systematic interdiscipliary education. This means that every professional (chemist, architect, artist, farmer, lawyer, book-keeper, etc.) should develop a competency to use general purpose programming languages as part of her/his education. Then s/he will be able to develop specialized computer programs for her/his corporation, in addition to the day to day work in the specialty.
This has been tried in some countries where special curicula have been set up (computers and chemistry, computers and management, computer and biology, etc. ). The net result is that people educated in such a way often perform poorly in both computer and the additional discipline.
5. An old success story.
If we want to seriouly plan for the future, we should analyze the past. A long time ago this kind of situation was already met once. This is nicely recorded in Dan Bricklin’s Web site : http://www.bricklin.com/
. Dan Bricklin invented a language for accountants called Visicalc in the late seventies. The first advertisement for this language appeared in the May 1979 issue of Byte.
Visicalc came as a nice solution to the needs of many acounting people that had the repetitive task of establishing several similar lines (number of items, unit price, total price) and then a summarizing gran total line. Instead of asking a professional programmer to develop such a program with the correct formula each time in Pascal, Fortran, Cobol or C, the great idea was then to provide the accounting people with a system in which they would not need this help.
This was a great idea at the time and when we see the current success of Excel (the successor of VisiCalc), we can imagine the catastrophic situation we would face if each excel user were to ask a Java programmer to write a program for the particular task.
This invention was one of the most important in computer science. Only now we start realizint that it introduced a new kind of actor in the system, namely the end-user programmer. On the contrary of the professional programmer, the end-user programmer does not belong to the computer corporation and has an objective of doing a work in a particular domain with the tools suited top this domain. In many cases s/he will work with a DSL (Domain Specific Language). Visicalc and Excel are domain specific languages.
6. The importance of End-User Programming
Brad Myers in this presentation provides many definitions, as the following ones:
He also gives some figures as the number of actors in the USA:
90 Millions computer users;
50 Millions Spreadsheet & DB users;
12 Millions self described programmers;
3 Millions professional programmers
These definitions are quite helpful in undertanding the current situation and coping with the problem aforementioned. The only solution to the impossible equation mentioned earlier is to bring end-user programmers in the scope. But of course we cannot ask them to work with professional programmers tools like Java or C#. And this is where the DSLs arrive.
7. DSLs at the rescue.