One of the questions that frequently comes up when I give career talks is “will the future provide tools that regular people can use that will mean that we will not need programming?” We see the occasional articles such as this one titled “A future without programming” that inspired this post and wonder if the need for programmers will go away. Well let’s for the minute ignore the suggestion that programmers are not regular people and look at this a bit. I kind of look at this and wonder if people asked “if books become easy to read and write will the need for writers go away?” Of course more access to and more approachable books really made everyone a reader and a writer. But it is a reasonable issue to discuss and to understand.
The big fear is that if people can create their own applications without getting tangled in programming language syntax will the need for programmers go away? I believe the answer is no in two ways. In way one, people will still be programming even if using natural languages. They still need to know concepts such as loops, parameters, and especially Boolean operations. So we will really wind up making more people programmers in a general sense. Computer science might actually be forced into the general curriculum.
And secondly these more approachable applications will still have limitations that require going back to real code. “Real programmers” by which I mean programmers as we traditionally think of them will still have to add extensions to user programming environments and they will still have to write custom code for those applications that just don’t fit the simplified view of the world that end user programming tools will support. The simple things will be done and the more complicated, challenging things will still be open to people who really like to code.
This is a path that we have travelled before BTW. In the late 70s and early 80s I worked with a database language called Datatrieve. Oh it was awesome. Really it was. You could point it at a database and in seconds be creating all sorts of wonderful reports that would take traditional programming days to create. It was essentially English and inherently self-documenting. It’s pretty much no where today. Why? I’m not sure. Perhaps it was too user friendly for people who had too much invested in traditional programming. I think it probably just got lost in the shuffle with a lot of other 4th generation languages that showed potential but never built up the audience. But the fact is that even in its prime people were using it for simple reports and prototypes. Once they experimented with it they often wanted more detailed or specialized and analytical reports that required traditional programming. I doubt any programmers lost their jobs because managers could create all the reports they wanted on their own.
And then there is spreadsheets to think about. Now there is an application that lets people create custom applications without programming. Or does it? Oh sure lots of people get a lot of use out of spreadsheets with just simple formulas. But the power users are creating their own functions, using all sorts of conditionals, and writing macros to do things the spreadsheet designers never anticipated. If that is not programming what is?
Now none of this means that we shouldn’t be creating applications that make it easy for more people to create their own applications and get more from their computers. Mashup tools like Popfly, tools to make accessing databases easier, more powerful spreadsheets and even application generators like the ones described in the article that started my thinking are all valuable and even necessary. We’re never going to have enough full-time (or even part-time) professional programmers. And we should not see that as a goal – though getting closer should be. By empowering more people to do more on their own the people who really love programming and computer science will get to spend more time and energy on the more interesting (to them) problems. Just think of the interesting problems people get to work on just because people are creating there own (exciting to them but perhaps boring to me) spreadsheets!
Frankly I became bored with writing report programs decades ago. I want to look into ways of getting deeper into the process so I can create applications for the people who care about the data itself while I work on the process. Applications that empower people to create, manipulate and otherwise maximize their use of data are opportunities for “real programmers.” And they will always exist. I think. What do you think?