Should everyone learn to code?
Raghu Betina is a recent graduate from the 11 week program at Starter League (formerly Code Academy), a similar software academy in Chicago, USA. In a TEDx presentation, he relates the invention of the printing press to widespread literacy to the education revolution where everybody could read and write. He argues that a similar revolution is taking place in the computer technology field, where tools and code literacy will usher in a digital revolution, where the majority of humanity will become digital creators rather than just consumers. The is a matter of power, voice and creativity.
In Ancient China and other civilisations, the population that could read or write were the rich, powerful and educated. They were the minority and through the power of reading and writing, they alone had the ability to direct the future of their civilisation and incidentally as we read history books, we realise all history is written by the literate elite. In the case of China, no written history comes directly from women. Unfortunately we have no idea what the female perspective of Ancient China was. When we lack perspective, we get a distorted view of history, as if whole pages were torn out of the book of history.
When the majority of humanity became literate, there was an explosion of new ideas, perspectives and histories that were recorded and written down. The written word became integrated into every aspect of people's lives. People who were once illiterate now had a voice. When the majority of humanity gains the ability to code, then computer technology will become integrated into every aspect of our lives. There will be an explosion of creativity and collaboration between the fields external to computer science. Innovation happens at the cross roads and cross pollination of different ideas and experiences.
When you give experts of other fields the ability to code, they become dangerous.
Now what's the difference between being able to program and other skills? Couldn't the same argument be made for possibly learning how to play music? Or learning how to fly? I think the main difference is simply the ubiquity of computer technology. One can survive in this world without being able to fly a plane, but one won't be able to if one isn't able to read or write. Now we haven't reached the point where being able to program is a necessity for daily life. But that point is approaching. This brings up an interesting point about how certain skills become so important that everybody has to be able to do them. Raghu missed a crucial step between having a printing press and widespread literacy.
That step was economic. The turning point was the industrial revolution. When there was an economic pain point, people were motivated to upskill and demand better education. The industrial revolution made paper and books affordable to everybody. This in turn standardised and formalised widespread education.
Today, we have the tools. There are many open source and free applications that allow you to get started building your application. The resources are free, you can find thousands of tutorials on Google. We also have a growing economic pain point. Take a look at 3D printers. Imagine what would happen if 3D printers could self-replicate. Oh look they can! Imagine then if we scaled that up. What could we be printing in the future? Skyscrapers? The point is, manual labour is going to be automated away, even complex labour like construction. Controlling machines and computers is the domain of software. Software is disrupting every part of our economy (web software is even disrupting software itself). Even the thin layer of separation between what is real and what is cyberspace is getting thinner as we speak. Just take a look at augmented reality.
If you you want to catch the next revolution and ride the wave, then you should learn to code.
What we lack is widespread education of coding, and in some parts of the world, we even lack the resources to access the internet. It's called the digital divide, and it exists in both developed and developing countries. It's not enough to have CS courses in University. They don't actually teach programming as a trade anyway. The technology in highschools and primary schools are completely outdated and of course some schools don't teach it. Closing this digital divide is the next step before Raghu's envisioned revolution, and Polycademy will be doing its bit in making that future closer to today.
The world is changing, software is making that happen. If you you want to catch the next revolution and ride the wave, then you should learn to code. Start today. You can do tutorials, you can learn from books, or you can even join Polycademy. Codecademy is a great place to start if you're a complete beginner. It won't be easy, but it's not impossible. Even the Mayor of NYC is doing it!
Advocating code literacy is not about displacing professional developers. Even though most of humanity can read and write, there still exists professional writers and novelists. In fact without people being able to read and write, those writers would be out of a job! Code literacy != everybody should go become a web developer. Similarly, writing and reading literacy != everybody go become a writer. Code literacy means empowerment. It gives people the ability to create, express and share ideas through cyberspace. It gives people a voice that can influence the future direction of human technology. Take a look at this TED presentation where programmers have actually built a better form of democracy that lawyers and politicians could never come up with.
Now if politicians and lawmakers did come up with it, then maybe we'd all be living in a better digital democracy. This is just a small fragment of what is to come. There could be innumerable innovations if coding was integrated into other fields, and there in lies the growth of development jobs and the growth of humanity. Should you learn to code? My answer is pretty obvious: Yes you should!