TL;DR: Is a computer science degree worth it? For me, partially. For you? You tell me.
In August 2018, I enrolled in college to get my computer science degree. However, I wasn’t your typical CS student. First off, I was almost 30 and already had a college degree from nine years earlier. Secondly, I was already a professional software developer with a full-time job.
The vast majority of the other students in my classes were looking either to break into the technology field or to leverage the degree for a better job. But I wasn’t trying to do either of those. So why did I even go back to school if I was already a software engineer? That’s a question I heard a lot. And rightfully so. It seems like a waste of time and money. Or at least it did to the people I told.
There were a number of reasons I chose to get a CS degree, such as improving my computer science and algorithm fundamentals — those areas aren’t my strongest. But there was one primary reason that motivated me to go back to school: to see what all the hype was about.
You see, I’ve written about my journey into tech as a self-taught developer a couple of times. I’ve heard people claim that a CS degree is the only way to become a real software engineer. While those people are in the minority, they were loud enough to make me scratch my head and wonder if they knew something that I didn’t.
Despite the rise of free or cheap online resources, was it still worth forking over an arm and a leg for a college degree? Was it still the best way to become a software engineer?
Fortunately, I was in a position to answer that question myself. I had an employer that offered reimbursement for college courses, and I found a university with an online CS program that I could do part-time outside of work hours. So I decided to conduct an experiment. I would earn my CS degree and finally see for myself if it is really worth it.
But what does being “worth it” mean? Everyone has their own definition. For my experiment, I decided a CS degree would be worth it if it both offered more job opportunities and would have prepared me for my job better than my self-taught route did.
Fast forward one and a half years to April 2020, and my experiment has concluded. I am now a computer science graduate with the diploma to prove it.
As for the results of my experiment? That’s what the rest of this article will be focused on.
As a side note: Take all of this with a grain of salt. This experiment was meant for entertainment rather than as peer-reviewed analysis, and my findings pertain only to myself. I hope my experience offers some enlightenment, though.
One of the parameters of my experiment was to determine whether having a degree would result in job opportunities. It didn’t take long to find the answer.
When I first enrolled in the CS program, one of the first things I did was I updated my website, resume, and LinkedIn. Hey, I was excited and wanted everyone to know about it. I’m allowed to be a bit vain from time to time.
Within a couple of weeks of updating my LinkedIn, there was a noticeable uptick in InMails from recruiters. Not only that, they outright referenced my degree in their messages.
But that itself wasn’t very convincing. So to test whether recruiters would notice the CS degree, I re-uploaded my resume to Hired. I had created a Hired profile six months earlier, though the results had been pretty dismal. I was curious to see if I would fare better this time around.
I did. By a lot.
Six months prior, I had only gotten a couple of hits, all of which tried to negotiate me down from the salary I was seeking. With the updated resume, I got eight hits within a couple of days, all of which accepted my suggested salary (which I had increased).
Now, I doubt the new section on my resume stating “computer science degree (2020)” was to thank for all of this newfound interest. I did have six months more work experience, after all. But I do think it played some role, as many job listings these days have a line saying “computer science degree (or related experience).” My degree made for a nice tick in that checkbox.
I can’t say I was surprised by the new attention. A CS degree can signify to recruiters and hiring managers that you have been vetted by an accredited institution and have a basic understanding of software engineering that they have come to expect for entry-level engineers.
A self-taught engineer, on the other hand, is a wildcard. Since they don’t have prior experience, it’s difficult to know if they are ready for a job without diving into their portfolio. But most recruiters don’t know how to do that or don’t have the time.
It’s worth pointing out that not every recruiter or hiring manager will care about a computer science degree. I got a job without one and many companies are eliminating the degree requirement from their job listings. However, from what I’ve seen, having one is definitely a boon to your resume, especially early in your career.
The second portion of my experiment was to assess whether a CS degree would’ve prepared me for my job better than my self-education did. I thought this would be a close call.
I grew up in Seattle, home to Microsoft, Amazon, and one of the most prestigious computer science programs at the University of Washington. Every software engineer I knew had a CS degree and most companies wouldn’t hire anyone without one. I grew up thinking that a CS degree, and college in general, was the best training to get a job.
However, going through college twice now has made me realize that this couldn’t be further from the truth. A computer science degree is not job training. The curriculum is broad, shallow, and covers a wide array of subjects.
Speaking from experience, I took courses covering calculus, discrete math, operating systems, computer architecture, data structures and algorithms, network security, project management, artificial intelligence, machine learning, and much more. Not only that, but I learned about three different programming languages over the span of a year and a half.
While all of those subjects are important to learn about over the course of a software engineer career, it’s a lot upfront. It’s tough to master a specific skill or language when the course material jumps from subject to subject every month or so.
And mastery is important because employers want expertise. They want people who can perform well and provide value in a given role as soon as possible, be it back-end, front-end, data science, etc. If you’re a candidate who is kind of knowledgeable in several different skills and languages, you’re more likely to be passed over for someone with a more focused proficiency.
Let me be clear. I’m not saying college is bad. College was designed as a gateway to higher learning and is fantastic at propelling prospective students into careers in research and academia.
However, too many people confuse a degree for direct job training. For someone who wants a job in web development and isn’t interested in learning how Linux avoids POSIX thread deadlocking, a computer science degree isn’t what they’re looking for.
In the past, a CS degree was enough to get a job, but times are changing. The job market gets more and more competitive every year, and employers’ standards for entry-level engineers keep growing higher.
From what I’ve seen, the computer science curriculum itself is not enough to prepare students for jobs. Oftentimes, they have to supplement their learning with side-projects, open source, and, if they’re lucky, internships. And the students who don’t, fall behind.
This explains why more and more CS students are attending coding boot camps and why more and more new graduates are emailing me for help finding a job.
Based on the criteria of my experiment, the answer to whether my CS degree was worth it is: kind of.
I have more recruiters popping into my inbox than I did before I got my shiny diploma. However, in regards to whether it would’ve trained me for my job better than my self-teaching did, the answer is resounding no.
There were certainly courses that were relevant to my day-to-day work, but even more that weren’t. And when it comes to moving into a new career, whether it’s your first career or your fifth, any time spent learning information you won’t use is an opportunity cost.
However, that’s not to say that my CS degree was worthless. In terms of supplemental education on top of my self-taught background, it was perfect. It expanded my knowledge of the computer science field and solidified my fundamentals. For example, while I don’t directly use cgroups and namespaces in my job, I do use container systems like Docker. Learning how an operating system uses cgroups and namespaces taught me a lot about how containers operate under the hood.
Despite all the articles titled “Self-Taught vs. CS Degree” and “How I Got a Job Without a CS Degree,” it doesn’t have to be one or the other. After all, there are gaps in both approaches. It’s all about finding balance.
For those of you studying for your computer science degree, make sure to hone your programming skills with side projects. And for you self-taught developers, take time to learn the computer science fundamentals. You don’t need to earn a degree as I did; you can simply teach yourself CS.
But this article isn’t to offer career advice. In fact, take everyone’s opinion on education with a hefty level of skepticism. While I have my own preferences, that doesn’t mean they’ll work for you. It’s all about trade-offs and finding the ones that work for you.
There is no right or wrong way to learn, just your way.