One of the great things about the tech industry, and the root of its innovative nature, is that one doesn’t really need a degree or formal training to jump in and get their hands dirty. Anyone with an internet connection can work their way through some tutorials, and with enough time, patience, and Googling, they can make a rudimentary app. If they get good enough, they can land a job.
I’ve met a number of accomplished people in the field who eschewed a Computer Science degree to major in things like Russian, Theater, Business, and Chemistry. They’re smart, good at what they do, possess a deep knowledge of their product, and they build great things without any formal training. What’s more, their diverse background lends an outsider’s perspective to what might otherwise become an echo chamber.
This is also, by the way, also one of the worst things about the tech industry. Without a certification or degree, how do you know that a developer is actually qualified to do the work? Will he or she write a regex or SQL statement that runs fast locally but melts the servers when deployed to production? Will he or she have a basic understanding of things like TCP/IP, TLS, XSS, SSH, VPN, TDD/BDD, SQL-injection, and a host of others? What’s true cost of a dev without a complete skill set?
The Manager’s Dilemma
Given two candidates for a job, what matters more: training or experience? Given the fact that there is a much broader range of quality in self-taught developers than those who completed a program, there is presumably a greater incentive for hiring someone with a degree.
However, that degree will come with a price in the form of higher salary demands. And technically, there’s no guarantee that the extra dollars will actually result in superior work. Mark Zuckerberg launched a billion dollar enterprise without completing a program, and I’ve met guys with CS degrees who couldn’t explain a FSM if their life depended on it.
So, how do we value experience? Let’s try some thought experiments:
The Two Surgeons
Imagine you have a life threatening condition requiring immediate surgery. You arrive at the hospital, and are informed that there are two surgeons who are able to perform the operation. Both of them graduated top of their class from the same medical school, both completed their residency at the same prestigious hospital, and both have specialized in this type of surgery. The only difference between them, you’re informed, is that Doctor A just completed residency last week and this will be his first time performing the operation on a live person, while Doctor B has been doing this exact procedure for 20 years.
Who do you pick to be your surgeon?
I imagine some would make the case that Doctor A is younger, and hungrier. He could have a steadier hand, more occupational stamina, and be more able and willing to throw himself into the work. He could feel a need to prove himself and demonstrate his abilities. He’ll have greater intrinsic motivation than Doctor B, and therefore Doctor A is the best choice.
However, I think that if the situation wasn’t hypothetical, and their life was actually on the line, these same people would overwhelmingly opt to have Doctor B perform the procedure. No one wants to be the guinea pig, and Doctor A is unproven (despite his identical pedigree). Experience and a proven track record are far more valuable than potential.
The Two Mechanics Problem
Consider a variation of this example. Your car, made by ACME, breaks down and needs repair. A tow truck arrives and informs you that there are two repair places within range. The first is an ACME dealership, and their repair tech is Mechanic A, a kid fresh out of trade school where he specialized in ACME vehicles. The second possible location is an independent auto shop. Mechanic B there has been working on all types of cars, including ACME, for 20 years. In lieu of formal training, he learned on the job and eventually opened his own successful shop.
Where do you send your car?
Again, one could make a compelling argument in favor of Mechanic A: he specialized in ACME vehicles, and has a certification to back it up. Like Doctor A, he’s younger, and hungrier, with a steadier hand, more occupational stamina, and more able and willing to throw himself into the work. Mechanic B’s lack of formal training suggests there could be gaps in his knowledge; will he know how to diagnose and fix a problem as well as Mechanic A? What is the relative probability of failure (leading to further problems with the vehicle)?
This decision is a bit harder (and more controversial). Mechanic A’s experience in the field is limited; he hasn’t worked long enough to develop any degree of analytical sophistication. He’ll be very process-oriented: he’ll want to check the ECM for error codes, then look those codes up and refer to a service manual for the make, model and year of your vehicle. He’ll then follow the steps outlined in the manual, and expect that the problem will be resolved.
This sounds like a reasonable approach in theory, and it works well most of the time. But life isn’t always so simple. What will Mechanic A do if he comes across an ACME vehicle without an ECM? Or a problem that the ECM doesn’t capture? What if there is a bug in the ECM that indicates a problem with a healthy component? What if he doesn’t have the service manual he needs (or his internet connection is down)? The process he was trained to use is rigid, and doesn’t allow for the unexpected. At some point, he’ll need to improvise on the job, and there’s absolutely no reason to believe that he’ll do it well (if he can do it at all).
Mechanic B will have a much more abstract approach. Over the years, his cumulative experience has given him a much more holistic understanding of how cars work and why they fail. ECM codes are only a symptom, a part of the overall picture. He understands that sometimes error messages are wrong, or misleading. Sometimes they’re caused by other problems. Is a component failing because it’s faulty, or because it’s downline from another component that’s quietly failing? In the latter case, addressing the proximate failure doesn’t fix anything. The problem will just resurface.
Mechanic B is relying on all his senses and memory of past jobs: what does he see, smell and hear when he looks over your vehicle, and how does that reconcile with his experience? If the ECM indicates a problem with the fuel injector, Mechanic B relies on his understanding of how fuel injectors work to corroborate. He’ll inspect the fuel pump and lines, and look for blocks or frayed wiring upstream. He’ll perform a hundred checks and heuristics of his own that he’s picked up over the years that would never occur to Mechanic A. B will know how to validate the problem before he attempts to fix it.
Mechanic B is perfectly capable of following the same simple process as Mechanic A, but B’s method will be richer and full of context. He’ll know when to deviate and can comfortably problem solve outside the established process. In short, Mechanic B can do everything Mechanic A can do, and more. You would be slightly better off sending your car to B.
Again, experience and a proven track record prove far more valuable than formal training alone.
A general heuristic
The previous examples consider the value of experience in two ways: the first assumes identical training between the candidates, the second assumes one candidate has formal training and the other candidate does not. In both of the given examples, experience is a stronger factor in candidate selection.
The caveat here is sufficient experience, which includes some demonstration of skill in a professional context. Any self-taught dev can read a few articles online and pick up on enough lingo to pass as knowledgeable on a subject. Which is why without some actual, demonstrated application of that knowledge, the matter of qualification is moot.
The takeaway here is that you’re better off to defer to applied experience in a given job role rather than simply considering credentials. You’re more likely to end up with the better candidate.