What it feels like to talk to Software Recruiters

Hiring developers in the Software Age

Universities are churning out CS graduates at record pace.This would make you think it has become easier to scale a development team. It has become much harder to separate the wheat from the chaff. Counterfeits and muppets abound in the software industry, and while a 10xer could make a startup, a muppet can just as easily break them.

Like the Bronze age and Iron age, the years since the 1990s at least until now and for the foreseeable future will be known by the main material around which we organize our societies: “software.”

Welcome to the Software Age

This new machine of innovation needs meat for the grinder, more digital peasants to toil in the feudal fields of what has become the software industry.

But unlike the past ages, the kind of labor needed doesn’t require a strong back, or a strong mind, it needs a special kind of person. A New Scribe, a Ninja, a Unicorn, a Full Stack Developer. Someone capable of translating the needs of technocrats into the arcane language understood by the spirit in the machine.

A technocrat asking Human Ressources to recruit a Unicorn

These are not the unicorns you’re looking for…

The great software developers, indeed, the best people in every field, are quite simply never on the market.

The average great software developer will apply for, total, maybe, four jobs in their entire career.

People who apply to developer jobs are rarely any good. If you want your unicorn, you are going to have to seduce them away from other companies and other localities.

One current innovation in hiring that has cropped up in the last few years is that of hiring remote developers. Hiring remotely allows you to cast a much wider net, and you’re more likely to pick up a talented, but location locked, developer in some remote area of the world.

If you read Joel’s article you’ll find some good advice for finding great developers. I am going to talk about what it is like being on the other side.

I am not a hiring manager, though I have performed technical interviews. I am a developer. I won’t be so arrogant to say that I am a great developer, but I am rarely on the market. In fifteen years of development, I have only sent out my resume once to a recruiter who found me a post at Orange writing code for their intranet.

I was, until recently, very happy with my position. But due to some contractual mishaps, I’ve decided I would like to move on from working for a French Company. I’ve learned my lesson, and would never again accept a post from a one.

Once I opened myself up on Linkedin as actively searching for a new post, I have received a deluge of interview requests, I completed 4 last week, and have 11 more scheduled over the next two weeks.

I want to talk to recruiters in general about what they do that is good, and what they do that is not good.

I can tell within 5 minutes if I like the company enough to continue with the interview, and usually, I find myself wanting to just hang up the phone, or close skype and never talk to this recruiter again.

The stupid things recruiters ask

I find that an immense amount of my energy in a job interview is spent keeping myself from being snarky and rude. I feel like a spider on a diet during a mass wave of fly depression. They just keep walking right into idiocy.

I did mention I’m a tool right? Carl Jung once said “I’d rather be whole than good.”

Recruiters really don’t make it easy, here are some gems I hear in interviews that make me twitch.

Why do you want to work here?

My favorite response to a recruiter who asks this question is: “I don’t. You called me.”

The problem with this question is that it is often asked way too early in the conversation. We’ve barely gotten to know each other, I have literally no idea yet if I do want to work for your company.

The best way to find out if someone wants to work for you is if they take a second meeting.

Do you know what we do here?

Yes, I read your website and company description as well as a description of the post, but no — I really have no idea what you do, or what you’re about.

You called me. Tell me what you do, and what you need.

How much do you make in your current position?

I don’t want to anchor you to a number. How much I make now is relevant to the company and the job I work at — now. You aren’t the same company or the same job. This isn’t the industrial age where all jobs are more or less uniform. A manager of a textile factory is not that much different from a manager of a tin can factory.

Make your offer, we’ll talk about it. Sometimes I feel like acting like one of those snooty upscale boutiques. If you have to ask how much it costs, you can’t afford it.

For me, wages are relative to the area I am working in. I gauge my salary needs based on 3.5x the cost of a furnished apartment + utilities in the area I’ll be working. There are all kinds of balancing goodies that can make that better, such as diner’s checks, covering gym membership, a new development laptop, compensating travel expenses, health insurance, 401k matching, covering continuous learning and so on.

$200,000 a year sounds like a great salary, but not necessarily in San Francisco.

My current thinking is I want two things, the amount you intend to pay, and the address of the building I’ll be working in. I’ll look at the local cost of food and apartments and if it seems like you’re making a reasonable offer we can negotiate. If it’s insultingly low, I just won’t call you back.

Stupid things recruiters do

Surprise technical interview!

I work and have worked with a lot of technologies over the years. But I don’t keep that stuff in my head. No one could. I get contacted by all kinds of companies, and I am seriously interested in working with their tech, but I know at the end of the day I’m not going to be in anything remotely approaching top condition so springing a pop quiz on me is just mean. I won’t like you, and I probably won’t work for you no matter how well I do on the test (which is usually pretty well anyway.)

The right way to do a technical interview is to provide an outline of what is going to be discussed so that I can prepare. It takes the average developer something like 30 minutes to get their mind going on a particular technology, giving them some advance information ensures they can start preparing, and you will end up getting a more realistic example of their competence and workflow.

Timed tests

It’s not all bad

I think of the 20 or so recruiters I’ve talked to in the last couple of weeks, 3 stand out as having been amazing.

They asked great questions, they represented their companies with distinction, and they are the only 3 posts I’m seriously considering.

The following is what I feel they did right.

It’s a conversation, not an interview

This is usually conversational. It’s a kind of structureless exploration of both parties that is fun and engaging, revealing who both parties are at a deeper level.

One phone interview went over by one hour just geeking out about tech and discussing the nuances of language implementation and how it guides algorithmic choice when coming up with solutions, or strategies for refactoring monoliths into microservices.

Albeit in this instance, the recruiter was also in charge of the development team, and so we spoke a common language.

In one of the interviews, the recruiter was not technically inclined, so instead they focused on asking me questions about the technology that their client was looking for. This strategy was very good because they were able to see if I could discuss fluidly on the needs of the job, even if they were ultimately unable to decide if I actually knew what I was talking about. At the end of that interview I was scheduled to talk with the CTO, and we ended up geeking out on 2D side-scrollers in C using SDL and discussing the finer points of using AWS Lambda to implement serverless architectures.

In every instance, the focus of the “interview” was a conversation, with a basic understanding that if a developer has a general and broad understanding of different technologies, then they’ll probably be able to do the job.

In the third interview, although the person doing the interview was also a developer, we spent most of our time talking about developer culture, unit testing, and the barriers to innovation in large companies. We talked about more open and inclusive environments, the need for rigor in software engineering, and why company politics poisons creativity.

Take home projects

I really dislike timed tests, or quizzes, I don’t think they give accurate results. But a small project is just the thing to really see how someone thinks about a solution to a possibly real-world problem.

The best questions I’ve been asked

Do you have a github account?

Whenever a recruiter asks for my github, to me it’s a signal they are very keyed in. In fact, it’s really the single most important question you can ask, because everything else (even take-home projects) are superfluous. You can see my code already.

Do you have a stackoverflow account?

What editor do you use and why?

There are only four good answers to this question, and they are Vim, Emacs, Eclipse, and TextMate.

Anyone else is by definition a dilettante (there are a few exceptions, like QTCreator, or RAD Studio or 4Coder — or mandated environments like MSVS).

What’s your favorite language and why?

The same is true of any craftsman. The moment he becomes interested in the quality and construction of his tools is the moment he moves from journeyman to master.

Being able to have a meta-discussion about programming is an essential stage in the development of a programmer.

To give you an example, I work with PHP programmers who don’t even know the name of the man who created PHP, nor do they know the history of PHP, or any details of its implementation. They’ve never read the source code or even looked at it. They’ve never tried to extend the language, nor can they weigh the pros-and-cons of different module implementations.

I’m an accidental PHP programmer, it just so happens all the jobs available when I was looking to try a French company were for PHP. I’d prefer to work in another language, Ruby, or Javascript (NodeJS), or even Python.

Most of the companies I am talking to now are as far away from PHP as I can possibly get.

PHP is to web programming what Java is to systems programming. A brain rotting experience.

Just to feel better about myself and cleanse my palette, I downloaded GHCI and started poking through “Learn you a Haskell for great good.”

I’m starting to feel like one of those cliché characters in a story who try to break out of the inner city into a better life, but keep getting drawn back by former gang cronies into a life of crime. If I never have to program PHP again, it’ll be too soon.

Nerdmatic, Programmer, Gamer, Production Engineer