Thoughts from a reflective educator.
Imagine a day in the future when you sit down at your terminal (or perhaps while taking a walk in the park?) and you can design your own software through a verbal user interface. Here's a story to try and explain what I mean.
While walking in the park...
You: "Computer, I would like to create a program today."
Computer: "What do you want your program to do?"
You: "I need it to process this data I'm collecting for my company and present it so that my employees will understand it."
Computer: "Do you mean the data set you collected yesterday at 2:35pm?"
Computer: "Do you want me to access the public code repository? There are some libraries there that will help."
You: "Yes, please."
Computer: "Processing, processing, processing. Done. Do you want to view your program?"
You: "Can you send it to my office so I can view it there?"
Computer: "Yes. Done."
Back at the office...
You: "Computer, bring up the program I started in the park."
Computer: "Now displaying."
You: "Okay, can you change the theme? I'd like it to be a bit more metallic. Use the Zen design principles please."
Computer: "Processing, processing, processing. Done."
You: "Hrmm. This isn't working quite as I'd like. Do you have a subroutine to allow them to edit the data at this point (points to screen) and add an overlay of the data in a visual timeline?"
Computer: "Checking public repository.... I have found a similar algorithm but it will probably need some minor changes. Would you like to use it and modify it yourself? The license allows you to use it for commercial purposes."
You: "Okay. I have a couple of hours here, I'll work on fixing that part of the code."
Computer: "Would you like to automatically share your code to the public repository?"
You: "Yes. Thank you, use the CC-BY-NC license."
I expect some day that most software will be mostly designed visually rather than written in text. Software libraries will exist in public repositories, and computers will assemble the code for us, rather than us assembling the code on a computer. Programmers will be more like artists, finding ways to combine algorithms and subroutines much like a painter assembling paint onto a canvas.