Learning how to code is seen today as key to building a successful life. Barack Obama, Michael Bloomberg, and even Enrique Iglesias have all urged people to study coding. This goes against the grain of history. Why, in our modern day, are we expecting people to speak like computers? Shouldn't computers learn to speak our language instead?
In the '80s and the '90s, engineers built products so people wouldn't need to 'speak computer.' Apple and Microsoft made their fortunes by making computing accessible to everyone, through a visual, intuitive user experience. When they were founded, people had to master the command line to use computers. The Mac II and Windows replaced this command line with a graphical user interface, allowing computer use to expand from a few specialists to nearly everyone. This is a general trend in technology: everything becomes easier over time, and as it does, more people use it.
Programming hasn't followed this path yet. BASIC, one of the very first programming languages, celebrated its 50th birthday last May, and yet, modern programming languages still reflect this archetypal approach. The way people program today is by typing highly structured text -- the code -- in a text editor. We have to write things so that it's easy for the computer to parse them, instead of being easy for us to read them. True, a lot has been done to make the coding process faster, through better learning tools (forums like Stack Overflow), and code-sharing (the Open Source movement). However, and in spite of these efforts, you still need to be trained as an engineer to build software.
50 years from now, I can't imagine people programming as we do today. It just can't be. The future I imagine is a world in which programming is self-explanatory, where people talk to computers to build software. To get there, programming tools should first use our language. For instance, to turn a button red, we shouldn't have to write code. We should just be able point to the button and select a shade of red. Instead of talking about concepts the computer cares about (like variables and servers), programming tools should talk about things the programmer cares about (an image or a cloth order).
This could change everything in the way we live. With more accessible programming, farmers could program robots to intelligently tend crops based on local soil conditions; teachers could build software to adjust their teaching based on what happened the day before around the school; chefs could set up systems to buy fresh fish from the nearby market in real time as people place orders. However, that won't happen if farmers, teachers or chefs have to learn code to do it, because it's not their expertise. Instead, programming tools should be able to speak like a chef, to a chef. Software tools should be created by their users, because their users know their needs better than anyone else. A software engineer will never know cooking as well as a chef does. Teaching people how to code to turn them into engineers is not the solution.
Revolutionizing programming is one of the most amazing opportunities of our time. There isn't a field where computers haven't had an impact yet, and it's only the beginning. This is fantastic, as it allows doing more with less. But how do we want to get there? There are two ways. One way is to rely on engineers to build the products that will transform everything else. We would -- in fact, we've already started to -- turn engineers into an elite class that runs our world. Major tech companies would control how we live. People that do not know how to program will at some point become redundant. Think about taxi drivers. Do you think they will still be needed after Google's driverless cars go mainstream? We're talking about a lot of people: the United States has 3.5 million truck drivers and 300,000 taxi drivers. Globally, hundreds of millions will eventually lose their jobs.
The other option is to give the power of creation to everyone. Instead of being consumers of technology, people will produce it. This will unleash tremendous economic potential, as the number of people able to build new products and companies will skyrocket. It will create new jobs and opportunities for more people. It will also be extraordinarily empowering to enable people to build their own solutions to their own problems. That's why making programming accessible to everyone is an incredible opportunity. As technologists, it's our responsibility to make this happen soon. I hope to see others join us to make this a reality.