As a rule of thumb, we may consider that about one percent of the population in advanced countries like USA are computer scientists.
- Can we/ Should we go beyond this 1% level?
We know that computer scientists do not directly produce goods like farmers, or build houses like bricklayers, electricians, plumbers, carpenters, etc. How far can an advanced society go? Can we imaagine a society with 30% computer scientists? If everybody is just skilled to produce software, then we’ll starve and we’ll have no house to live. More computer scientists we have in a society, less skilled people remains for other specialized essential tasks like medical doctors, bus drivers, hair dressers, etc.
- Should we educate the remaining 99% so that they also learn a general purpose programming language like Java
My personal opinion is that we should answer a clear no to both these questions. No we don’t need more than 1% of the population as software professionals. No we should not try to educate the remaining 99% of the population with Java-like languages.
But of course having said this, we face the problem of having to produce in the coming decades an exponentially growing number of new software applications for all the needs of society: personnal, professional, familial, social, etc. And we know that the productivity of individual prrogrammers will not increase too much in the future. So, this is the impossible equation:
How, with the same amount of people (code producer and managers, about 1% of the total population), to produce an order of magnitude more of software applications than now?
The basic statement of this impossible equation may be sketched as follows:
We need to find a solution to this problem. For me the keywords that may help here are EndUserProgramming, DSLs (Domain Specific Languages, a branch of language engineeing), and Higher Order Generation. Computer scientists should not anymore write “programs that solve problems“, but “write programs that generate programs (that generate programs) that solve problems”.
This will not be easy, but this is the only way to go if we want to propose a solution to the impossible equation.
So, the army of computer scientists (1% of the population) should focus on the definition and implementation of DSLs and the remainder of the people (99%) should be educated in using these DSLs in helping to perform the tasks they are skilled for. This is of course very simplistic and needs to be discussed and refined, but there are many arguments in favor of this solution.