The future is being built on software, and if you want a seat at the table, you should probably know how to make software. The problem is building software, like with any career, is incredibly complex and requires deep knowledge to do well.
It's like believing that if you know how to read and write at a basic level, you will become a writer. It doesn't work like that. Knowing how to read and write is obviously a life skill, but it takes years hard work at master the skill.
Don’t get me wrong; I do believe that engineering and programming are important skills. But only in the right context, and only for the type of person willing to put in the necessary blood, sweat and tears to succeed. The same could be said of many other skills. I would no more urge everyone to learn to program than I would urge everyone to learn to plumb. Focusing on coding inflates the importance of finding the “right” method to solve a problem rather than the importance of understanding the problem.
A world where everyone knows how to code at an amateur level may not be much more efficient, either.
This is my nightmare vision—"everyone" approaches programming as a set of arbitrary technical details just because he or she should. With only bits and pieces, users can’t appreciate the ways that languages are designed to solve problems, and they are left with an even larger black box. With this approach to programming, their knowledge will eventually float into the ether in the company of other meaningless knowledge, like how to talk nicely to that broken Nintendo 64 cartridge.
And mandating it as a skill may have unintended consequences in our educational system. Coding won't solve our biggest problems.
I’m not sure it’s even possible to teach everyone how to code, but I do know that to mandate programming as a general education requirement would displace something else that we’re already failing to teach, and that’s not good, either. We don’t need everyone to code—we need everyone to think. And unfortunately, it is very easy to code without thinking.
However, coding is a valuable to have in your skill set. Many jobs are evolving to require coding, even if it's not a programming job. Coding isn't necessarily just about building software.
Coding isn’t some niche skill. It really is "the new literacy." It’s the essential 21st century skill that every ambitious person needs to learn if they want to succeed.
Jobs are always being reinvented and adapt to the current needs. In the 21st century, you need to work with computers, and doing it at a high level means coding.
Don't believe me? Just look at the legal profession. Software is turning it inside out, and causing mass unemployment for the lawyers who can’t code. The same is increasingly true for managers, marketers, accountants, doctors, and pretty much every white-collar job in between.
Of course, being able to code is also extremely helpful in getting and keeping a job. "Software developers" is one of the job categories expected to grow the most over the next decade. But in addition to many thousands of software professionals, we need far more software amateurs. McKinsey & Co. argued a few years ago that we need more than 1.5 million "data-savvy managers" in the U.S. alone if we’re going to succeed with big data, and it’s hard to be data-savvy without understanding how software works.