A few days ago I posted this tweet:
My tweet was prompted by seeing a constant stream of job postings containing lines such as the following (taken from actual postings on craigslist:
- BSCS or equivalent industry experience
- Hold a BS or higher degree (or equivalent) in Computer Science/Engineering or related field
- BS degree in Computer Science, Engineering or equivalent
- Degree in computer science or similar
- Four-year degree or Masters in an analytical or technical field (e.g. Economics, Computer Science, Mathematics, Statistics, or Finance)
Between my experiences as a tech manager and participating in open source communities I’ve met a lot of incredibly talented programmers. A few have CS degrees; most have degrees which have nothing whatsoever to do with computer science; some have no college degree to their name at all. Of the most talented and skilled programmers I know the majority are in this last group: they hold no degree and yet *gasp* they are absolutely brilliant. Unfortunately I’ve seen some very good people be discounted (and typically therefore not hired) because they lacked what some on the hiring committees deemed “a proper education.” This inevitably meant that the candidate did not have a degree in computer science or—even more unforgivable—did not have a degree at all.
Since I do know so many excellent and self-educated programmers I found myself becoming exceedingly annoyed on their behalf at these requirements. When the annoyance reached a head I blew off steam by way of the tweet, crying “elitism”.
In the time since the tweet was posted I’ve simmered down a bit and started to think things through a bit more clearly. I came up with a question:
What, really, is the purpose of an education requirement for a tech job posting?
From what I can tell, an education requirement is shorthand for a minimum level of knowledge. “You must be this high to ride this ride.” The expectation is that if a programmer has a degree in computer science she knows data structures and recursion and how to solve the Tower of Hanoi in Java. However I see this as redundant data, at best. The same information is going to be readily apparent from skimming the applicant’s resume and code sample. Seeing a degree listed on an applicant’s resume does not excuse me, as a hiring manager, from reading the remainder of the document.
In addition there is an entire raft of vital skills which aren’t taught in most computer science degree programs. Using source control. Writing tests. Working on a team. I’m sorry to say, but if I see a resume from a new compsci grad I assume he does not know how to do these things. Unless he has experience coding outside of the classroom I’m likely to set his resume aside in preference to the applicant with no degree but with open source experience, who has worked on a team and contributed code which has seen the light of day. I don’t care much for towers—Hanoi, ivory or otherwise; I care about results and that’s not something you can determine from the one line in a resume stating, “Bachelors of Science, Computer Science, Wossamotta University (2003).” It’s all those other lines which matter.
There are definitely times when having a degree requirement makes sense. I don’t mean to imply that they should be entirely banished from tech job postings. However I do believe that we, as an industry, need to put as much thought and care into our job postings as our code design. We would never stand for bullshit requirements for our code. We should not stand for them in our job postings either.