The reasons for why you’re hiring have a great deal of impact on how you go about the hiring process.
If you’re hiring because of another developer leaving, you’re going to be much more time-crunched than, say, a situation where you need more developer bandwidth for upcoming projects or simply future growth.
In general, though, you might find it useful to keep the following overarching guidelines in mind when you begin the hiring process:
Be flexible: You’re always going to look to hire the best-possible person (note: I didn’t say “developer”) you can. But there might be times and circumstances where you find a pair of more junior-level hires instead. And maybe that makes sense. Or you might find a heavy-duty frontend developer with some light backend chops when you’re looking for a backend person to complete a particular upcoming project.
The key is to think more about how a possible hire fits in with the atmosphere and general workflow of your company than it sometimes is to fill a specific need.
It might be the old sportswriter in me, but in general my philosophy reminds me the philosophy some NFL teams have when it comes to their annual draft: Draft the best available, regardless of position.
And, for me at least, that’s generally how I look at hiring: I try to hire the best available, even if they may not be a perfect fit for the particular need I had in mind when I started the hiring process.
I’ve hired more senior guys when I went looking for junior-level candidates. I’ve also hired frontend guys with a wee bit of backend when I’ve gone looking for backend talent.
The key in all circumstances is that you take the long view on a hire. What you’re hiring for right this second - whatever pressing need you’re trying to fill - might not be a pressing need in a few month’s time.
Even more importantly, the developer you hire today will not be the same developer you’re employing six months or a year from now. The name badge will have the same name, but the work they do for you and the atmosphere you surround them with will change them along the way, hopefully for the better.
Developers grow and change along the way, largely because programming is more craft than skill. The more a developer does it, the better they become (generally speaking).
In short: Hire for the future, not necessarily for the immediate need.
Don’t be a dick: Sorry for the crudeness, but it’s the truth. Being a nice, open guy or gal is a real advantage when it comes to hiring.
Always keep in mind that even the developers you have on staff are inundated with recruiter pitches.
Every developer you’ve hired or know of can likely get another job tomorrow at the drop of a hat. Some realize this, some don’t, but it’s a fact.
As such, unless you’re Google, or Twitter, or Facebook or some such, by and large working at your company, from a developer’s perspective, is not a privilege. In a way, it’s a favor to you.
Keep this in mind when hiring. The less hoops you make a developer jump through and the more you can make them feel appreciated and wanted, the better success rate you’re going to see.
And, yes, I realize this just devolved into relationship advice, but some truths are universal.
Be curious: When I was on the other end of the hiring scenario - interviewing for jobs - I had my best success when I went into an interview thinking not of how to land the job, but more about what I can learn from the experience.
And it’s the same now that I’m on the other side. I go into my research phase or un-interviews looking to learn something new. Maybe it’s learning more about related programming languages, or even how developers minds work, but there’s always something there.
And the things you learn along the way - just from being curious, digging down rabbit holes and asking off-topic questions in conversation - can spark new ideas in both hiring and the management of your in-house developers later.
Be patient: Because I generally go into hiring mode with a specific list of candidates in mind, my own hiring process tends to go pretty quickly.
But I’m not afraid of having it take a while, either.
Because you’re hiring someone you are (hopefully) going to be working with for a good, long while and you want to make sure you hire the right person.
That said …
Trust your gut: When it comes time to make a decision - to hire or not, or even to contact or not - don’t try to overanalyze it.