Learn to code. Or don't!

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.

March 11, 2013
Jonathan Libov

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?

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.

A positive outcome

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.

At the time I was trying to buttress my standing in my new professional environment by educating myself on how to program. I learned HTML via a charmingly goofy book, Head First HTML & CSS. I bit off more than I could chew with a massive "Beginner's C++" book that I could barely penetrate. I blew $600 in a Beginner's Java course at Baruch College - I was quicker to print "Goodbye world!" than "Hello world!". But a $1K JavaScript Continuing Education course at NYU, taught by a passionate and entertaining instructor, quickly proved a worthwhile investment.

Over the course of a few weeks I built a little Javascript app, tapping into some basic Joost API's, that told you in which countries a video was not available. Our internal tools couldn't do this! It was exciting to have finally built something that did something, and it was rewarding to show off to some of my brainy counterparts on the engineering team that I had done something cool.

How useful was the tool to our team? Barely. We used it sparingly over the course of two days, the amount of time it took to schedule some time with one of our Senior Platform Architects. My superior showed him my tool in the spirit of "Look at what we have to resort to - an entry-level ad scheduling coordinator fumbling in Javascript - to get some proper scheduling tools!" Within 20 minutes of the end of the meeting, he had recreated my tool in Java and delivered query results in a quarter of the time it took my tool.

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.

That was an example, not a lesson

To reiterate Atwood, the goal of programming is to solve problems. It's a tool, a means, not an end in itself. Did the Javascript tool I built solve the problem of getting our team more information about geographic restrictions of videos on Joost? No, we hardly used my tool in the 48 hours before a better one was built. But it did solve the problem of giving one of our technical counterparts - in this case a senior technical manager with some serious sway - a kick in the ass about how woeful our internal tools were.

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.