Trevor_featured

The world needs more programmers.

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.

VIEW POSTS BY THIS AUTHOR
Jonathan is a software engineer at Knewton. He graduated from New York University with degrees in English and Music. He spends his days at Knewton developing the adaptive learning platform students use to get customized content every day. Jonathan speaks three languages (English, Japanese, Chinese) and is an avid comic and video game fan.

  • Christina

    The quote from Andy Young is beautiful. Expressing your “intent in a consistent, understandable, repeatable way.” Love that. 

  • Paul9290

    I’m surprised you didn’t mention initiatives like Codecademy and it’s competitors (Treehouse, CodePupil, etc), as learning thru gaming is immensely popular these days.

    I think such initiatives are a good start to get the masses excited about coding.  

    I had a tough time learning a few years ago.  I do wish these sites were around back in the day, especially Codecademy.  I really enjoy their style of teaching!

    • Anonymous

      Good article, and nice comment.  I think people will enjoy a more casual learning environment that these websites provide (i.e. CodePupil, CodeAcademy, etc)

    • Bethune

      Thanks for the comment. I considered discussing some of the great resources you mentioned, but I decided to focus the piece on just illustrating the value of learning in the first place.

      There are TONS of great sites out there. I personally have tried CodeAcademy, CodeSchool, Singpath, and TopCoder. There are numerous other sites that are good for specific technologies and general CS along with coding, such as Lynda.com or HowStuffWorks.

      I am considering doing a follow up that will be about teaching yourself to code.

  • http://twitter.com/Tendaijoe Tendai Sean Joe

    let us CODE away! 

  • http://pulse.yahoo.com/_743663TLP4D2ZBPSMZAZM7CNJA Ernie

    “the supply of talented engineers is not even close to meeting the demand. ”

    The key word here is “talented.” Every company in existence wants superstar employees that are perfect in every way, or even just talented in their field. However, just like in basketball, you can’t just will your way to talent. Some people just aren’t all that good, and the vast majority will never qualify to be in that top 5%. 

    As for your statement that everyone should learn to code for the side benefits it brings, that’s pure crap too. Anyone who runs a business can tell you the pitfalls of asking people with soft skills to have better technical skills. Generally speaking, it makes it so that people are more focused on fixing things than they are with helping the customer. This is *not* a good combination.

  • anotsu69

    For a non-programmer, what would you is the skill set they need for a software engineer position at Knewton? I’ve seen some of Knewton’s job postings say willingness to learn java and python. If the candidate has a good general grasp of programming and can pick up java and python on the job (or a few weeks before their first day of work), would that be enough? Thank you.