As I’ve noted previously, I’m back on the job market, looking to trade up my position at BearingPoint for one with a more tech-focused company doing more deeply technical work with the best people and lavish institutional support.
Though it may surprise you, in my 9+ years as a professional programmer, I’ve actually searched for a job only once before, and that was what led me to work as a contractor at BearingPoint, which later became a full-time employee position. Every other job I’ve had has come to me through me network as a target of opportunity. Thus, despite being a grizzled old veteran of the trade, the job search experience is still a bit novel to me, and I suspect rather strange to anyone who’s looked for a job in some other field.
First, it must be understood that software developer jobs (and, I imagine, other tech jobs) are hard to fill. Not only is there a shortage of developers on the market, but there’s a dire shortage of developers that don’t suck. Even more difficult is that it’s very hard to tell the difference between a developer that doesn’t suck and a developer that does on the basis of a resume and a phone conversation. As a result, the process of gathering a list of candidates for a position, winnowing them down, phone screening them, then running the survivors through a face-to-face interview and skills assessment is time-consuming and error-prone.
Thankfully, our advanced service economy has evolved a response to such problems: outsourcing. By outsourcing recruitment to a professional recruiter, the first few layers of the selection process are done by someone else, leaving your hiring manager to simply filter through a slate of qualified candidates and pick the best. What could be easier?
Not surprisingly, this idealized vision bears little resemblance to reality. In reality, employers have difficulty articulating their needs in terms recruiters can understand, recruiters have difficulty filtering candidates on anything more than “Does the word ‘C#’ appear on their resume?” or “Do they have a degree?”, and employers have difficulty screening the candidates they get in any meaningful way.
So, here’s what happens, at least with me:
Yet another wrinkle in the whole process is the coping mechanism the industry have evolved to address the fact that it’s very hard to tell if a developer sucks or not based on an initial impression. Enter the contract-to-hire gambit.
Under contract-to-hire rules, a recruiter for a staffing company will hire you in lieu of the actual employer, and will contract you out to the employer (at a ridiculous profit) for some set period of time, usually no more than 6 to 12 months. You’ll sign documents certifying your understanding that it’s an at-will assignment, you’re a contractor, in the order of things you operate below the intrinsic value level of a gnat, etc.
If you suck, the employer has only to make a call and they never have to see you again, no HR crap, no lawsuits, no unemployment insurance, nothing. If you don’t suck (or you do but the employer is desperate), the employer pays the staffing company (your ‘pimp’, in effect) a one-time fee and then hires you away from them. Everybody wins.
What’s unfortunate about this process is the layers of indirection it places between the people you’ll ultimately work with and for, and you. As a result, crappy people with the right job history sail through the first few filters, and people with intrinsic talent who haven’t used the exact technology or tool the employer wants never get to the face-to-face. Furthermore, if you as a candidate are particular about the type of team/culture/tech sophistication you want to deal with, you typically must go through the process up to the interview with the hiring manager before you reach someone who can answer those questions.
Plenty has been written by my betters about the programmer interview and hiring process, from the perspective of the candidate as well as the interviewer, so I won’t rehash that here. Suffice it to say, for a seasoned developer like me it’s hard to tell if someone is good or not without at least spending a few hours at the keyboard with them, so for a recruiter without a deep tech background wading through tons of resumes, it’s impossible.
As a result, the tech hiring process tends to relegate those with intrinsic talent but not alot of experience or education down at the lower ranks of the junior programmer level, and elevate some genuinely shitty programmers to the sr. dev or, God help us, architect level. For these people especially, and devs generally, referalls by existing employees is a much better route, and one the employer benefits from as well in savings on recruitment costs and a higher liklihood of a non-shitty candidate.
This isn’t an indictment of any participants in the process; indeed I’ve played both hiring manager and candidate on more than one occassion, and don’t have anything against recruiters either. I’m certainly not complaining about the horrors of being in high demand. However, to my knowledge tech talent presents a uniquely hard HR problem, which is somewhat interesting to behold particularly if you’re not immersed in the tech world.