Philip Guo (Phil Guo, Philip J. Guo, Philip Jia Guo, pgbovine)

Why universities should offer a programming interview prep elective course

Four years ago I went through the programming interview prep process (which I wrote about in Programming Interview Tips) to get a software engineering job at Google. Since on-campus hiring season is in full swing right now, a bunch of students are asking me about how to prepare for interviews. Here's a thought:

University CS departments should offer a programming interview prep elective course.

Why? (Listicle warning)

  • Because no matter how much we professors feel that we're giving students a valuable education about deep CS principles and not vocational fads-of-the-moment like “Learn Node.js v0.12.7 on Docker in 10 weeks”, students will (rightly!) stress about getting internships and jobs. One way to alleviate this stress is to make programming interview prep into a real course that counts as elective credit for their major so that they can fit it into their schedules without overloading on credit hours.

  • Why make this an official course? Shouldn't students take responsibility for preparing by themselves? I strongly believe that making this into an official course increases inclusion and equity. Right now students prep by themselves “underground,” so the most privileged, well-connected, and highest-self-efficacy students are the ones who can both carve out the time for prep and have the social capital to find the best ways to prep (e.g., from their friends who have gotten top internships and jobs).

  • My hunch is that such a course will alleviate the concerns of students (and random college-haters on the Internets) that a rigorous CS curriculum isn't preparing them well for their future careers as software engineers. Although well-taught CS courses lead to indirect future career benefits, the point of learning shouldn't be purely vocational. (If it were, then why would anyone study Shakespeare?) In contrast, a programming interview prep course will be ruthlessly vocational; its sole goal will be to prepare students to ace these interviews. Then they can enjoy the rest of their CS courses for their intellectual value without worrying about whether it can help them get jobs. “No, this sweet course on advanced compiler theory isn't meant to help you get a job, but if you're concerned, take the programming interview prep course, which will!” This hunch was inspired by Hacker School (now Recurse Center). As its cofounder Nick wrote, “we now help people with jobs whenever they want and have optional interview prep sessions throughout the batch on Fridays. We've found that these changes have made it easier for people to focus on their education (and not worry about jobs) during the rest of their time at Hacker School.”

  • Having this course in the curriculum will make college a strict (super-)superset of “Learn to code in N weeks” bootcamps. Although many in the Ivory Tower (me included!) scoff at these bootcamps, there's no denying that they get their students hired into the same programming jobs as our own students, who went through an expensive four-year university education! If we can't even compete with bootcamps in terms of job placement, that sucks. Of course, learning CS in college should be way, way, way more than a bootcamp, but it's unfair to expect students to essentially run their own underground prep bootcamps to get jobs, in addition to taking a full four-year course load. With this course in place, the university CS curriculum becomes “one course on interview prep to get you a job so that your parents feel good about paying your tuition, plus dozens of awesome intellectually fulfilling courses and research experiences that you can't possibly get at a bootcamp.”

  • Possible objections:

    • But this isn't CS! Actually it is :) Programming interview prep is basically a review of algorithms and data structures, with a ruthlessly pragmatic bent.
    • Will this “water down” the rigor of the official CS curriculum? No, it's one single elective course. Not a revamp of the curriculum.

Great, so who's gonna teach this course? That's a hard question. Pre-tenure faculty like myself don't have any personal career incentive to do so. Tenured faculty, by definition, have been deeply immersed in academia for at least seven years and probably don't care to teach a so-called vocational course. Adjunct faculty and lecturers are hired to directly serve department needs, and this course is unlikely to gain administrative support without someone strongly vouching for it. (Who's gonna vouch for it? Same problem ... pre-tenure faculty don't have an incentive to do so, and tenured faculty likely have other priorities.)

Perhaps the easiest way to make this course a reality is to have it be student-run, with light faculty supervision. Students currently run their own hacking groups, maker groups, hackathons, and programming competition clubs. The main required change is to officially recognize this activity as a credit-bearing course rather than as an extracurricular.


Addendum on 2015-10-20: readers from the Internets have pointed out that several schools do indeed offer such elective courses (e.g., Stanford and MIT).

Created: 2015-10-15
Last modified: 2015-10-15
Related pages tagged as jobs: