With all the hubbub about why you should you learn to code, should you? Definitely maybe. I argue that the motivations behind learning to code should not be much different from learning Powerpoint or Excel to the extent that your career demands.
By now you may have seen the video by Code.org - starring Mark Zuckerberg, Bill Gates, Will.i.am, Chris Bosh, and others - encouraging students and professionals to learn to code.
In the last two years, as programming environments have become much easier for non-engineers to digest, there's been a rash of new online services - CodeAcademy and CodeSchool - as well as brick-and-mortar 12-week trade schools - The Flatiron School.
There's something slightly self-important about the "Learn to Code" video and these educational services. Why should the rest of us be verse in someone else's profession? Moreover, is coding really so valuable that even the Mayor of New York City has something to gain?
My New Year's resolution is to learn to code with Codecademy in 2012!Join me. codeyear.com #codeyear— Mike Bloomberg (@MikeBloomberg) January 5, 2012
I'm fairly skeptical of this initiative. While I'm not an engineer (with years of coding experience), I largely agree with über-engineer Jeff Atwood of Coding Horror in "Please Don't Learn to Code": "learning to code for the sake of learning how to code" doesn't seem worthwhile.
But as Atwood points out, the goal of programming is to solve problems. And depending on your place in life, there are a variety of ways that even limited programming skills can solve the kinds of problems and challenges you'll face in your professional life.
Here's my story.
In 2007, I entered the tech world with gusto. Once I had discovered that I didn't have the disposition to spend each and every day as a researcher in a lab, and my side project/pseudo-startup (for which we paid up the wazoo to get a prototype built in...Windows CE) was little more than wishful thinking, I took a three-month temp job working on AdWords at Google. I parlayed the "Google" notoriety and my analytical background to Ad Operations job at Joost, one of the most hyped, most anticipated startups back in the early days of online video.
Technically and operationally, Joost was a mess. We had a crazy amount of talent across the board, an impeccable set of investors, and top-tier advertisers from the Fortune 500 sponsoring our beta. Yet our internal tools were frighteningly rudimentary, certainly not befitting the level of quality we expected, and were expected, to deliver.
On the one hand, this might be seen as proof that it's a waste of time for non-engineers to learn to code. And yet, while my rudimentary tool was quickly made obsolete by someone with serious engineering chops, it had a positive outcome on our organization. It boosted our team's performance (now that we had a fast, new tool) and our reputation for getting things done (even if it had to be done the hard way). And personally it raised the level of esteem held for me among colleagues and superiors.
If you're thinking about learning to code, ask yourself if you can envision any positive outcomes with the coding skills you'll acquire. Positive outcomes might include:
Contributing to a resource-starved small business or startup. Even if you're on the business side of things, you greatly alleviate the burden on your technical counterparts by being able to pitch in with basic web stuff (e.g., pages built in HTML/CSS that don't require technical chops to achieve their desired effect). Perhaps it's a marketing page on your website that's effectively another slide in your Powerpoint. In almost any endeavor, whether it's at your day job or a just a side project/hobby, it's useful and cost-efficient to know how to be able to put up a simple webpage.
Building a prototype that's good enough to evaluate the merit of your business idea (but then again, you'll barely need to understand code to set up an e-commerce site, as the Birchbox founders did).
Expressing yourself. While the likes of Squarespace, Wix, Wordpress and Smore make it possible to build everything from single-page websites to impressively functional web apps, you still might not be able to build precisely what you want with these tools.
I wouldn't deign, as others have, to tell you whether or not to learn to code. Fundamentally it's not much different than learning, say, Microsoft Excel at an advanced level. If your career path would be better served by advanced spreadsheet skills, you'd be wise to learn Excel in and out. Likewise, if you have something to gain by learning to code (frankly, many people have nothing to gain), then go for it.
All in all, I'd only encourage you to consider the potential outcomes and upside of learning to code, as you would before endeavoring to learn any new skill.