When I first wrote programs in 1953, there was no software and few programmers. I entered programs in the computer’s binary language (octal notation) directly into the machine’s registers. And the machine was all mine: there was no operating system to allocate its resources among multiple programs or operate the input-output devices.
Then, programming aids and compliers evolved, and operating systems to allocate the computer’s resources. Programmers no longer dealt with the machine directly, but with an easier-to-use (maybe) interface. In some respects, programming got easier (anyway, it was a lot quicker) and many people learned to program.
Then the minicomputer and then the personal computer evolved, and three pivotal inventions occurred. Xerox PARC and Apple developed the desktop-icon interface, the spreadsheet was invented, and word processing was introduced. I feel that each made many more people into programmers.
The significance of the desktop, icon-based interface is obvious: as it has evolved over time, it has enabled generations of users to manage desktop and portable devices with minimal training.
I think the spreadsheet was equally important. An ordinary businessperson could populate the cells of a spreadsheet with limitless logical and mathematical processes, all invoked by the entry of a datum. Taken as a whole, a spreadsheet is a very complex and sophisticated program.
The significance of the word processor as a programming tool is less obvious, because in its basic form a word processor requires little programming by its user. But think of how it has grown. The word processor now enables its user to create and manipulate graphics of unlimited complexity, to format both virtual and hardcopy documents with three-dimensional structures, and to provide documents with interactive features, as in computer games. Surely when a user has created a word processing application with capabilities in all these areas, he/she has written a sophisticated program.
The Worldwide Web has created still more opportunities for programmers. The designers and builders of Web sites form a new, lucrative specialty. Even the people who create complex YouTube and Facebook posts are in a sense developing software.
What has happened is that human and machine languages have converged. The computer interface has become more intuitive, more symbolic and more flexible. At the same time much, if not most of the human race is learning about computer language as part of growing up. Booting up, managing and interconnecting computing devices; operating keyboards; selecting among icons; and interacting with the Internet and Web sites are activities performed by small children in all the more developed countries. All these children are being invited by the riches of the Web to try more experiments, to learn more, and to become more proficient programmers. Seamless Internet connections enable them to form teams, to cooperate, and to work together to exploit their best ideas. For instance, what will cloud programmers be able to do with shared 3-D printers?
I envy the trained programmers of the next generation, who will be able to search for inspiration among the contributions of billions of their less-trained fellows and create the software products of the future. We’ve seen nothing yet!