Around half of all software engineers are self-taught,One way to approximate this number is via the Stack Overflow developer survey. Another rough approximation comes from the fact that over the last decade, typically only 40-60K students graduated each year with a CS major from a US university, whereas the total number of software engineers is roughly 4 million. Assuming uniform attrition over 30 years, and adjusting both for foreign CS degree holders and local graduates who don’t enter the industry, again we see that roughly half of incoming software engineers have CS degrees. including yours truly.I learned to code at a young age, well before I attended university, where I majored in mathematics and took only a few computer science courses. On a good day, we the uncredentialed feel grateful (even proud!) to be able to work in this industry without formal qualifications. But in our darker hours, we wonder: where would I be if I had a CS degree?
Of course, few mid-career software engineers would accept the opportunity cost of a four year undergraduate program. Instead, we commonly find ourselves drawn to CS master’s programs. Unfortunately, these too are a poor choice.
The credential illusion
It’s tempting to believe that there’s a glass ceiling for self-taught engineers. Perhaps you survey the Staff/Principal engineers at your company and notice that the overwhelming majority are formally educated. Or that a certain company employs very few self-taught engineers. Might there be an invisible gatekeeper? Could a CS master’s degree be a ticket in?
This is an enticing model as it comes with a simple solution: get a degree to advance your career. Unfortunately, it’s also wrong.
After a few years in the industry, engineers are judged primarily on their demonstrated abilities and experience. Unlike other industries, there’s no professional body requiring software engineers of a certain level to hold a degree, and there’s no incentive for companies to impose such a requirement themselves. Yes, the most senior engineers tend to understand software systems in great depth, and yes, schools strive to teach this. But there are few barriers for those who obtain the same knowledge through some different path.
Even if you believe there really is a glass ceiling, there’s still the question of whether a master’s degree would actually help.
If you’d like to answer this for yourself, I’d suggest that you ask a few hiring managers and recruiters. The best technical recruiter I know personally is Aline Lerner, who now runs interviewing.io. She had this to say:
In my experience, an MS degree has been one of the strongest indicators of poor technical interview performance.
And:
One tempting option is to try to get an MS from a top computer science school to legitimize yourself on paper. If you actually are passionate about programming, I would urge you not to do that. Although you will look more legit on paper, many startups are catching on to how useless an MS degree can be.
Overall, the industry is at least striving to move beyond credentialism, and to assess engineers on their merit.Again, this is particularly true for candidates who already have a year or two of industry experience, which I assume to be the vast majority of those considering a master’s program. Recruiting for entry-level roles is quite different. interviewing.io is itself a good example of this, since candidates are interviewed entirely anonymously. Triplebyte is another: candidates are assessed on the basis of extensive technical interviews, leading to surprising outcomes like bootcamp grads achieving roughly equal success with college grads. In these cases—and as the trend that they represent continues—your credentials aren’t even visible, let alone a deciding factor.
The knowledge you seek is assumed
Perhaps you don’t care about the degree, and are drawn to master’s programs as a way to learn computer science fundamentals. Unfortunately, MS programs are nominally designed to build upon corresponding BS programs, so most CS master’s programs will expect you to already know the very things you’d like to learn.
There are a few interesting consequences of this:
- Self-taught engineers are all but disqualified from the more rigorous programs, which tend to require an undergraduate CS degree;
- Less rigorous programs still maintain the pretense of advancedness by offering advanced courses that are unlikely to be well calibrated to student backgrounds; and,
- Students can graduate without ever learning the fundamentals they signed up for in the first place.
This third point is what Aline suggests may account for the poor performance of MS grads in interviews:
Part of the problem is that CS fundamentals instruction tends to happen in undergrad computer science courses. If your undergrad degree was in some other field, you can get through an MS in CS without ever taking an algorithms or data structures class. Or you could take a graduate-level algorithms class where the grading curve is going to be different because a good portion of your classmates have never done any programming either.
The knowledge you seek may be elsewhere
If you’re primarily interested in a university’s capacity to teach you industry-relevant computer science, you may be disappointed to realize that US universities spend a lot of their organizational energy on other things.
Over 100 colleges and universities in the US have an endowment of $1 billion or more. Many are large enough to be considered “A Hedge Fund That Has a University”. If the proceeds of these funds could sustainably be directed solely to instruction, they would surely be tremendous bastions of teaching and learning. But the typical US university also conducts research, grants credentials, provides a socioculturally significant “student experience” at a scale greater than most towns, organizes sports teams, often runs a hospital… OK wait, how much teaching goes on? According to the National Center for Education Statistics, around 30% of expenses go toward “instruction”:
“Instruction” here includes faculty salaries and benefits, and a typical faculty member spends around 40% of their time on teaching-related tasks, so it’s fair to say that universities spend 10-20% of their budgets overall on teaching.
This raises another question: to what extent would the instructors of your CS master’s program actually prefer to be doing research? While this is very hard to answer, consider that the designation “R1”, intended to indicate that an institution engages in a “very high” level of research activity, includes 131 universities. R2 universities have only a “high” level of research activity, and this includes an additional 135.
Many researchers are still excellent teachers, and those in computer science often have at least a little industry experience. But if you’re undertaking a master’s program to make you better at your job, and your job is not “research computer science”, then you may be in the wrong place.
Learning without feedback
The recent COVID-19 pandemic forced many unprepared professors into the world of online teaching, often with embarrassing results:
The technical failure is excusable, under the circumstances. To me what’s striking is that the professor didn’t ask a question, make eye contact with students or otherwise remotely attempt to engage with his class for those 20 minutes. He just happily vocalized his slides into the void.
Unfortunately, much of tertiary education can be characterized as vocalizing slides into the void. Most MOOCs are just recordings of those vocalizations, designed to be replayed asynchronously into the void at 2x speed.
But you don’t learn tennis by watching it. You don’t learn music by listening to it. And you don’t learn how to understand and build good software systems by watching lectures.
The best CS programs strive to keep class sizes relatively low, incorporate labs and challenging projects, and have instructors give feedback. Unfortunately, most self-taught engineers—particularly those on a budget—are more likely to end up in a program like Georgia Tech’s OMSCS, where they work through a series of Udacity courses alongside 2,000 others, with feedback coming entirely from teaching assistants.
If your goal in attending a CS master’s program is to actually learn
something, I hope that you’re a capable
autodidact.David
Pengelley is one of the few heroic teachers directly battling the
status quo of lecture-based education. His observation about
successful autodidacts:
“As a student, I survived and prospered despite a lecture setting, but
only by reading text material repeatedly and integrating this with
tackling homework challenges. I now realize this was essentially
autodidactical, my instructor’s role chiefly being to provide a
schedule, expectations, homework feedback, and evaluation via exams. My
subsequent decades teaching thousands of students suggests that few
students will very successfully self-teach in this way.”
The most common review of these programs is “you get what you put into
it”. But if you’re essentially self-teaching, what is the point?
The master’s degree cash cow
Between September 2013 and April 2016, over 1,000 students of the University of Northern New Jersey obtained student and foreign worker visas without attending any classes. While this could describe any number of institutions, what’s exceptional about UNNJ is that it was a fake university created by the US Department of Homeland Security to investigate student visa fraud. Between a comically phony website, a location in an office park, and classes suspiciously cancelled due to bad weather, it should have been obvious to all that this was a ruse. And, well, in a way it was, at least to the brokers responsible for organizing student visas. One agent told a broker “I don’t want anybody, you know, showing up at my doorstep thinking they’re gonna be in my… advanced calculus class or anything like that… That’s not gonna happen, right? We know this is just to maintain status.” To which the broker allegedly replied “Yeah, yeah, oh yeah… We’ve been doing this for years. No worries.”
UNNJ wasn’t the only fake university in recent history… It wasn’t even the only fake university set up by the Department of Homeland Security! In 2019, DHS announced that they’d been running the University of Farmington since 2015, with no classes but hundreds of students, most of whom have since been deported.
While I can certainly picture DHS and ICE employees conducting these sting operations with a feeling of irrepressible glee, they were primarily motivated by the observation of existing widescale visa fraud, most notably Tri-Valley University, among others.
Fraud aside, international students account for approximately 80% of full time graduate students in computer science. I have no doubt that the overwhelming majority of these students certainly do have an earnest intention to learn computer science and complete their degrees. But there’s no denying that F-1 student visas (which also allow for 12 months of “practical training” after graduation) are more attainable, sadly, than other visa classes for many potential software engineers.
This may account for at least some of the market for CS master’s programs, and partially explain the historical success of these programs despite their shortcomings.This essay was written in April 2020 in the midst of the COVID-19 epidemic which has all but shut down travel to the United States, as well as in person teaching. It may be the case that the market for CS master’s programs shrinks dramatically as a consequence. Unfortunately, to the extent that schools can survive based on these ulterior sources of demand, they can get away with not delivering the product that bona fide students are seeking.
An alternative
In short, master’s degrees in CS are not highly regarded by industry, are too long and expensive, cover too much irrelevant material from too much of a research orientation, provide too little student feedback (particularly at massive scale like Georgia Tech’s OMSCS) but get away with all this due to artificially inflated demand.
It’s true that as a self-taught engineer you should invest in your understanding of foundational computer science concepts, and how they apply to real systems. But a master’s degree is the wrong solution to this problem.
I’m confident that most people can just teach themselves, which is why I wrote teachyourselfcs.com. But let’s say you were looking for a structured, instructor-led option instead. What should you seek? Well, it should be highly regarded by industry,I appreciate that it will take some time for industry to recognize the quality of graduates from this program. I’m patient, and our motivating goal for the program is to in fact produce graduates who’ll shine in their careers… A motivation suspiciously absent from most master’s programs. short and affordable, cover only the topics that are relevant to practicing software engineers, and offer a lot of opportunities for feedback on actual programming problems. This is what we have designed the Bradfield Computer Science Intensive to be.