I say this for two reasons.
For one, labor studies show that the supply of talented engineers is not even close to meeting the demand. This is true both in the United States and across the developed world. Businesses, from startups to multinational conglomerates, simply need more highly skilled engineers to help them grow. In the right markets, even novice coders can find themselves juggling scores of recruiting e-mails and multiple attractive job offers.
In response to this trend, this Fall will see the opening of The Academy for Software Engineering, a New York City high school that will specialize in training the next generation of programmers. Like a number of other small specialty high schools that have appeared in NYC over the last few years, the new Academy will allow interested students to focus on developing their technical skills while still ensuring minimum competence in a range of standard high school subjects like English and history.
Small specialty schools for teenagers are fairly common in Europe and parts of Asia and South America. As the demand for talented engineers increases, you can expect to see more of such schools in the United States. It is not only the recent tech/startup boom that is fueling the need. Many global issues, from environmental preservation to access to high quality education (Knewton may have something to say about the latter) are, at root, problems of technology. The world needs more programmers not only to fill job vacancies, but also to solve mankind’s biggest problems.
The second reason why I say the world needs more programmers is related to the whole “improving the world” thing, but is more straightforward: learning to code improves lives.
Most professionals can benefit from some basic programming ability. Kapil Kale from giftrocket makes the case specifically for marketing and biz dev, however it applies to just about anyone who interacts with a computer as part of their job.
I began seriously learning to code when a colleague and I wanted to automate a few annoying tasks that required the use of a slow graphical interface. We learned enough BASH and Python to write scripts to automate the work. From that simple start I studied long enough to become a software engineer at Knewton, however the work I did would have remained useful had I not bothered to continue. Points three and ten from Kapil’s post make the point that coding helps non-techies expedite annoying tasks and that it makes one more versatile.
Being a more versatile employee is a good thing. A line or two about your comfort writing BASH scripts or using SQL can only help your resume. Years of blogging experience is great for people looking to get hired as a social media expert. Years of blogging experience coupled with an ability to actually build a front-end using WordPress is even better. As industries rely more on the internet and other technologies, the ability to programmatically solve problems will help individuals distinguish themselves.
Even if you have zero computer tasks to do at your job, some basic coding knowledge can help you solve practical problems outside of the office, like deleting duplicate files in your music collection, renaming and reorganizing batches of documents and directories, or setting up a home server to create your own cloud solution.
The value of learning to code is not simply the sum of the tasks you learn to accomplish. Learning to program is good for your brain. Writing good code demands a deep understanding of a programming language, sound planning, a clear vision of the code’s purpose, and an eye for detail. For many students, the last point is the most useful. Good software development requires an appreciation for precision – for getting the work exactly right before you submit it. One typo, syntax error, or forgotten function parameter and your program won’t run.
Andy Young put it well in his fantastic piece, “Coding for Success”:
Learning to code is learning to use logic and reason, and express your intent in a consistent, understandable, repeatable way. Learning to code is learning to get under the skin of a problem and reduce it to it’s simplest form. Learning to code is learning to harness power external to yourself and provide instructions to realise your ideas – whether that be directly to a computer, to delegate to one or more professional programmers or even a human team that work for and with you in any discipline. Learning to code is ultimately a fantastic way to gain a multitude of transferable skills.
The meticulousness coding instills is one of its greatest benefits. I find that I am more exacting in other areas of my life, from writing to teaching and even just keeping my office organized. In that way, learning to program is much like learning to cook or play a musical instrument; it isn’t so much the specific skill as it is the dedication and work required to develop the skill that ultimately bears fruit.