by Tom Eisenmann
“Should I learn to code?”
MBAs who lack programming skills often ask this question when
they pursue careers in technology companies.
Bloggers like Yipit co-founder Vin
Vacanti have shared views on the payoff from learning to code, as have
several students at Harvard Business School, including Dana
Hork, Matt
Boys, and Matt
Thurmond.
I thought it’d be helpful to supplement bloggers’
perspectives with some survey data. I received responses from 24 of the 41 HBS students
who enrolled over the past two years in CS50,
the introductory computer science course at Harvard College.
My survey didn’t ask for comments on the quality of CS50 itself.
The course is widely acclaimed; my colleague David Malan has grown its enrollment
five-fold to 715 students over the six years he has served as lead instructor.
Rather, my goal with the survey was to learn whether MBAs saw this well
designed and rigorous course as a good investment of their time, given their
career objectives and other course options. The tradeoffs are tricky: survey
respondents reported spending an average of 16.3 hours per week on CS50—perhaps
2-3x more time than they would spend on an MBA elective that yielded equivalent
academic credit.
So, was it worth it? Of the 18 survey respondents who
founded a startup, joined an existing startup, or went to work for a big tech
company upon graduation, 83% answered “yes” to the question, “On reflection,
was taking CS50 worth it for you?” and 17% said “not sure.” Of these 18
respondents, none said that taking CS50 was not worth it. By contrast, of the six
respondents who pursued jobs outside of the tech sector—say, in consulting or
private equity—only two said CS50 was a worthwhile investment; three said it
was not; and one was not sure.
Benefits
Respondents cited several benefits from taking CS50.
Writing Software.
Respondents differed in their assessments of their current ability to
contribute working code on the job, based on their CS50 learning. Several said
they regularly do so, for example:
- Kyle Watkins, who joined an existing startup, said he has “used CS50 skills to create a half dozen VBA programs that will likely save the startup I'm working for tens of thousands of dollars."
- Michael Belkin, who founded his own startup, said, “After taking CS50, I was able to build an MVP that would have cost at least $40K to outsource. And it was better, because I understood all the small details that drive a user's experience. After HBS, I became one of the lead developers at my startup, which has saved the company several hundred thousand dollars.”
Communicating with
Developers. Other respondents, especially those employed in large tech
companies, said they couldn’t really write production software, but felt more
confident in their ability to discuss technical issues with developers as a
result of taking CS50. For example:
- Jon Einkauf, a product manager for Amazon AWS, said, “I work with developers on my team every day to define and build new features. In addition, the users of my product are developers and data scientists. Taking CS50 gave me a glimpse of what it's like to be a developer — to get excited about complex computer science problems, to get frustrated when you hit a bug. It taught me enough about software development that I don't feel lost in my current job. I can ask intelligent questions, I can push back on the developers when necessary, and I am confident that I could teach myself anything else I need to learn."
- Luke Langford, who joined Zynga as a product manager upon graduation, said that CS 50 “gave me a working knowledge and confidence to be able to review code. PMs at Zynga don't often work in code, but there were several times when I was able to diagnose issues and help the engineers identify why certain algorithms that calculated scores were wrong. Pre-CS50, I wouldn't have been able to do that.”
Recruiting.
Several respondents mentioned that their CS50 experience had helped persuade
recruiters that they were committed to a career in technology. As one anonymous
respondent reported, “I wanted to get a job at a tech startup and ended up as a
product manager at one of NYC's hottest tech startups. The founder, who is a CS
PhD, was really impressed that I'd learned to code. I think it made a difference in getting the
offer.”
Costs
The benefits from CS50 came at a considerable cost, however, in terms of workload. In addition to lectures and section meetings, the course has weekly problem sets, two mid-terms exams, and a final project that requires students to design and build an application.
Beyond the heavy workload, respondents who were less
sanguine about the payoff from CS50 often cited its use of C to teach
fundamentals such as functions, loops and arrays, rather than a more modern
programming language. While acknowledging that C is well suited for this
purpose, these students would have preferred more focus on languages used in
web development (e.g., JavaScript, HTML, and PHP), which are covered in the
last one-third of CS50’s syllabus. Likewise, some students said they understood
why certain “academic” concepts (e.g., algorithm run times, security) were covered
in an introductory CS course, but they did not view such concepts as salient to
their “just learn to code” personal priorities.
Advice
I asked respondents for advice on how MBAs who enroll in CS50 can get the most out of the course.
- An anonymous respondent said, “Go to office hours Monday night; it’s the least busy night, so you have the best chance of getting lots of TA help. Get to know the undergrads: they are fabulous! Build something for your final project that you're passionate about, and use a language that’s relevant to your career plans.”
- Einkauf added, “You need to really commit to it. If you just watch the lecture videos, complete most of the problem sets, and build a basic final project, you can get a decent grade—but you'll only get a fraction of the possible value. You should plan to attend your section meetings, set aside plenty of time for the problem sets, really invest in the final project, get to know the other students, go to the hackathon, etc.”
- Vincent Ho-Tin-Noe advised, “The class is very easy for 2-3 weeks, and then it just gets crazy. Don't be caught off-guard. Start working on your problem sets as soon as you get them to gauge the amount of time you'll need. Don't start 2 days before the deadline; you won't be able to manage your workload otherwise, even with all-nighters. Also, make sure to watch the lectures live or within 24 hours online. Don't try to catch up on lectures and short videos all at once, right before starting your problem set, or you'll get swamped. Watch all the videos, including problem set walkthroughs and shorts, if you want to get the most out of the class. Finally, make sure to attend sections. They're extremely useful, and bonding with your teaching fellow will definitely be helpful.”
Many respondents acknowledged that there are online options
for learning to code that would not require as big a time commitment as CS50.
However, they saw a graded course for academic credit as good way to ensure
they would actually get the work done. An anonymous respondent said, “I knew
that I would never learn programming if I didn't have something—a problem set
or test—to keep me accountable every week. I don't want to generalize, but I
highly doubt that most HBS people after doing their cases/travel/socializing
are going to set aside time to consistently do Codecademy or Treehouse every
week.”
Justin Ekins added, “You can learn everything in this course
online, but, let's face it, you're not going to force yourself to do that. And
you won't get the depth of knowledge that CS50 will provide. It's an
outstanding course, and it's incredibly well taught. I'd recommend taking it
and then spending J term [three weeks in January when regular HBS classes do
not meet] with Stanford's online CS193P, which will get you to the point of
building iPhone apps.”
Sixteen of the survey respondents are happy to be contacted
by current HBS students who have questions about taking CS50. You can email me
to get their contact info.