Speedrunning College

March 29, 2024

A few decades ago, universities were the only place where it was possible for students to use and learn about computers; now it’s possible to teach yourself the entire curriculum without leaving your basement. This has led to the popular social-media trope of “first line of code to FAANG engineer in X months”, and the frequent discussion of “college vs bootcamp vs self-taught”.

My experience in college and the job market has led me to the conclusion that both the traditional 4-year degree and the modern self-taught-developer path are both deeply flawed, and that, for many people, getting a 4-year degree in less than 4 years is the optimal choice.

College: The Downsides

Cost

This is the obvious one. Thousands of dollars in debt is a sorry way to start a career. If somebody’s paying for your education, then speedrunning probably isn’t the ideal path, unless you’re looking for a challenge or you resonate strongly with the other downsides. However, for most students, more time in school means more debt, and a faster graduation is a direct path to greater financial security.

Format

At its core, school is an abstraction over the real world: it sets up an artificial environment to simulate the requirements and rewards of the workplace, with the hope of having learning as the primary outcome rather than a side-effect. The abstraction is loose, though, and it has a tendency to shift and stretch over time due to its loose bound to the environment it’s attempting to emulate and the heavy influence from the students/faculty/administration who tend to mold it to fit their own selfish interests. This leads to a multitude of problems:

Many of these are true for school in general (not just college). It’s especially common for younger (i.e. elementary/middle school) students to “not like school”; I suspect that these reasons are core1 towards that feeling. For a long time, I thought I didn’t like school because I couldn’t study the thing I was passionate about (computers), but as I began to take more and more computer classes once I got to college, I still felt the same frustrations, I realized that my dislike for school was only partly related with my disinterest in the subject matter, and was really about the bad abstraction at school’s core.

A lot of these problems are deeply embedded into the format of school and can’t be fixed. Many of them can be improved with great effort and resources, and a few can be improved with minimal effort, but doing so is a low priority for the people in power.

There are flaws for every system as big as a university, and I wouldn’t be so critical if there weren’t a better solution: learning on your own. Being self-taught fixes the vast majority of these issues. Unfortunately, it comes with problems of its own.

Self-Taught: The Downsides

Getting Hired

I’m a huge advocate for being self-taught: if you have the necessary passion, discipline, and direction, it’s by far the most effective and enjoyable way to learn. However, I’m very skeptical about about the scalability of independent-study as a complete replacement for college, particularly when it comes to starting a career. The demand for junior developers isn’t going up very quickly2, yet supply is at an all-time high: the CS major is rapidly increasing in popularity. This makes getting hired a difficult feat, even for the most qualified applicants (those with degrees and experience).

Furthermore, it’s incredibly difficult to prove competence3 gained outside of job-experience. The résumé is the great equalizer on this front. The standard format uses the following sections:

If you’re self-taught, “education” and “experience” are mostly empty, so your bread-and-butter is “projects” and “skills”. “Skills” is generally ignored, though, unless there’s something especially relevant to the position (in which case it’s usually more of a non-negative impact than a hugely positive one), and “projects” section means very little, as trivial projects look almost the same as highly-involved projects through the lens of three bullet points, especially to recruiters and HR-people with minimal technical knowledge.

The only reliable way to get hired in software today is through networking and appealing to “experience” (other jobs), and if you don’t have leads on that front, you’re bound to be demoralized trying to find a job as a self-taught developer.

Direction

It’s also more likely for self-taught developers to have uncertainty about what they should learn, and to what degree they are making progress. College is very good at setting a concrete path of things to study, and giving you regularly timed progress reports, reminding you you’re on the right track. When you’re self-taught, you decide everything, and that flexibility is both an advantage and a weakness. The degree to which this will be a problem is highly dependent on the person doing the studying, and the situation they’re in. Confidence and uncertainty must be balanced, which can be hard to get right.

Spending time becoming self-taught is not very socially acceptable: I suspect most parents will be more skeptical of this path over getting a college degree. This adds an extra factor of pressure and self-doubt to what’s already a tough sell. Even with maximal time and effort, going from programming noob to employable is bound to take a few months (in most situations, it’s probably more like a year): I’d imagine most people would run into some serious doubts within that time4.

The Third Option

Luckily, the downsides of college can be lessened by spending less time there. And in most situations, that’s easy enough to do, especially when wielding the powers of self-teaching.

So here’s the third option: go to college, but graduate as fast as possible. Use the framework of college to decide what to learn5, teach it to yourself, then breeze through as many classes as possible in the shortest amount of time.

Advantages

Doing this decreases the downsides of going to college:

It also removes all the disadvantages of being self-taught, namely:

Disadvantages

It’s a lot of work. So is being self-taught. This entire post assumes you’re in for the work. It’s hard to get anything done if you don’t want to work.

Less time for:

Logistics

Graduating early can be broken down into three steps:

  1. Knowing what you must do to graduate
    • Find, read, and re-read the graduation requirements at your university
  2. Making a plan for packing that in a short time
    • Come into college with as many credits as possible
    • Take the maximal number of credits each term (or even overload)
    • Take prerequisites as early as possible
    • Taking courses over the summer (or possibly the winter)
    • If you want good grades, have a plan to study before/during those classes
  3. Executing it early enough
    • By far the hardest part
    • Getting college credit in high school

As an example, here’s my 2-year plan at UW. Here’s a video from a guy who managed to pull it off in 1 year.

Reservations

Speedrunning isn’t for everybody: it probably doesn’t make sense if you fall into any of the following categories.

Preemptive Defense

There’s a lot of college romanticism out there, and I foresee criticism towards speedrunning college, as it discourages many of the traditional aspects of the “college experience”. There’s a popular notion that college ought to be a place of high-level academic exploration, personal discovery and socialization. The overtones usually imply that these things should be done in a relaxed and low-pressure environment.

I don’t completely disagree, but I’m much more realistic than that. I think academic exploration (in the “deciding my major” sense) should be done before a financial burden is accepted. Personal discovery is something that happens over time, usually in uncomfortable and uncertain circumstances (rarely in idyllic ones) - it isn’t something to be bought through tuition. While socialization is theoretically good, it should not take priority over the ultimate goal of education, especially when it establishes unhealthy habits and incontinent behavior. And above all, college ought not to be a time of relaxation, but one of hard work and distinction, as it sets the stage for the remainder of a career and a life.


  1. There are certainly other factors at play, like a repulsion from responsibility and difficulty, but I’m not convinced that those explain everything. ↩︎

  2. This makes a lot of sense considering how junior developers generally begin as a liability (it takes time for them to get up to speed with the industry), and they have a tendency to hop jobs very quickly. ↩︎

  3. At least in a compelling enough way to land an interview. ↩︎

  4. For this reason, if you do choose to take this path, it’s highly advisable to have a mentor or some other technical support structure to avoid this pitfall. ↩︎

  5. Use it to decide a baseline of what to focus on (don’t necessarily follow it dogmatically or use it as an excuse not to study other things). ↩︎