I’ve been doing a lot of interviews lately, and I’ve been watching the rise of Lambda School — which I think is fantastic, incidentally — and the combination has me wondering two things:
- How educated do software engineers need to be?
- And how well does that map to what they actually learn from formal education?
Let’s step back and define some terms before we try to answer those questions. First, by “formal” education I generally mean a four-year accredited university, whereas people with e.g. Lambda School or boot camps behind them are “informally” educated, and in turn distinguished from autodidacts. This is not universal. Early Google didn’t seem to consider anyone with less than a masters “formally” educated.
Second, of course there’s no absolute need. Since the dawn of the first vacuum tube, and very much including hardcore grotty stuff like compilers and cryptography, software has been a field in which people with no formal training whatsoever have thrived and succeeded wildly. Obviously neither a formal nor an informal education is actually necessary. What we’re actually asking is: in general, is there reason to believe software engineers with formal educations are better hires?
Note that, speaking as an employer, I don’t actually care whether this is due to selection bias, i.e. whether it’s because capable people are more likely to be formally educated or because they actually learned from it. I’m happy to accept that the entire university system in any country, especially yours, is deeply and increasingly pathological, unfairly and jealously hierarchical, terrifyingly high-priced and deeply flawed at credentialing and capability signaling.
Stipulating that the system which determines who gets a postsecondary education is unfair and unjust, the question is: how valuable is that received education? Are its signals meaningful? Are those people, in general, as a group, more or less likely to succeed, or make a mess I will subsequently have to clean up?
It’s awfully hard to find applicable statistics here, let alone any whose compilers didn’t have some implicit axe to grind. And of course I have my own biases: I have a four-year degree, from a (Canadian) school outside the hierarchy of the (American) nation in which I live, but with a strong international reputation (Waterloo), in a field (electrical engineering) only somewhat associated with software development.
I used to ask an interview question or few about theory. One of my go-to questions used to be: “Do you have a favorite algorithm, and why?” I’ve stopped asking it, because the answer is almost always some variant of “no.” Even those who have formally studied algorithms rarely care about them. Sometimes I get some variant of “I know what an algorithm is, but I’ve never actually written one.”
That’s not surprising. A whole lot of modern software engineering consists of connecting pre-existing components in slightly new ways. “Algorithms,” as we usually understand them, come baked into our tools and libraries. Does a formal education in big-O notation and Turing machines help at all? Short answer: no. Is prior experience with matrix multiplication and eigenvectors useful? Actually, yes, in the rarefied case that you want to understand modern machine learning … but, as the tooling improves, not so much if you just want to use it.
Modern software engineering often — but not always — has much more in common with plumbing or carpentry than with hacking art, architecture or computer science. It’s more like cranking out aggregative blog posts, or writing business nonfiction than it is like crafting a novel, much less writing poetry.
Of course, this comes with the important caveat that the analogy only stands if every few years the tools which plumbers and carpenters used changed completely, along with the occasional rise of whole new approaches to their fields. But still, the need for constant re-education is probably an argument against formal training; why spend four years learning how to use tools that will probably be obsolete two years after you graduate?
So it seems reasonable to argue that if — if — you strip out theory and history, then the pedagogical content of “formal” education, versus “informal” education plus a year or two of experience, is roughly equivalent. Autodidacts? …They’re a difficult edge case. They tend to be highly intelligent, and both hard and fast workers, but they haven’t spent as much time implicitly learning from others’ mistakes, so if still anywhere near their larval stage, they’re more likely to make them anew. An autodidact with an extensive history / portfolio, though, has no strikes against them.
What about the credentialing and selection bias of smarter people being drawn to universities? I concede there’s something to that. If it’s a university I’ve heard of (again, I didn’t grow up here) then that biases me in favor of a candidate. But at the same time, America’s education system is so screwed up, giving such advantages to the already privileged, and the existence of “legacy” students (who don’t really happen in Canada), that at the same time I’m extra wary.
You might conclude that ultimately I don’t distinguish between formally and informally trained students. But you’d be wrong. Most of the time they actually are surprisingly equivalent. But software engineering isn’t always like plumbing — and because of that, I find myself pretty unwilling to strip out theory and history from the analysis after all.
Formal education, whether it be engineering or the liberal arts, is supposed to teach you how to think critically, how to analyze systematically and strategically and how to educate yourself efficiently, more than it’s supposed to import any particular body of knowledge. It doesn’t always succeed at this. And most of the time you don’t need any of those skills (except the last, which you need forever).
But on the occasions that you do need those other meta-skills, you need them badly — and it seems to me that you’re somewhat less likely to gain them from informal training or autodidacticism. You’re probably right to be suspicious of this view. I’m suspicious of it myself. It’s probably essentially impossible to measure and test.
It still seems to me, though, that what you gain from formal education is not so much an expansion of your mind as a specific and (somewhat) controlled expansion of your worldview, one which hasn’t yet been consistently replicated elsewhere. That doesn’t mean it can’t be. But there’s more to it than just intensive training in technical skills … and maybe that kind of meta-skilling is the next step in nontraditional education.