Fog Creek

How to Find, Hire, and Retain Developers – Interview with Cal Evans

Looking for audio only? Listen on and subscribe

Up Next
Remote Working Tips

We’ve interviewed Cal Evans, author of ‘Culture of Respect’, and we discuss how to find, hire, and retain Developers. He gives tips on where to find great developers, how to write job ads which appeal to them and how best to interview them. We also discuss ways to build a great team culture that can help startups and growing businesses compete with the big guys for talent.

Hear more about such topics from Cal over on his blog and check out our video guide to hiring developers.

Content and Timings

  • Introduction (0:00)
  • Developer Management (0:35)
  • Finding Developers (2:38)
  • Developer Job Ads (4:30)
  • Interviewing Developers (6:18)
  • Creating a Culture of Respect (11:03)
  • Common Developer Hiring Mistakes (14:59)
  • Recommended Resources (17:29)



Cal Evans is a technical manager of training at Zen, a PHP expert and community leader. He’s experienced in building and managing development teams, he’s the author of a number of books including: Going Pro, Signaling PHP and most recently, Culture of Respect: how to find, hire and retain developers. Cal, thank you so much for taking the time to join us today, do you have a bit to say about yourself?

Pleased to be here, honored to be invited to participate.

“Quite honestly, if you can spell PHP, I can probably get you a job coding PHP”

Developer Management

Culture of Respect focuses on hiring and retaining developers. Why do you think people need to think about hiring and managing developers differently than those in other roles?

I’m always careful to preface my talks about hiring and managing developers by saying I’ve never managed anything else. I don’t know, it could be that accountants are exactly the same but what I know are developers so that’s what I talk about. I’ve been a developer now long enough to have seen companies go from being companies that use software and occasionally developer their own, to being software companies that also do something else. Most companies these days have an in-house development team that does something, whether you’re building controllers for John Deere tractors or you’re building websites for Amazon, software is so integrated in what we do that most companies have an in house development team. Most companies these days, their in-house development team is actually what drives the company, builds the products that the company sells or makes it possible for the companies to sell.

While I’m never an advocate for setting developers up on a pedestal and saying we need to treat them like demi gods, I do think you have to respect the fact that you have to treat them differently. You cannot just say, we have a cookie cutter, this is how we treat people. Developers have different needs. Immediately, if I start a job and they hand me a laptop that has been used by three other people and I have to figure out how to make things work, then that’s a smell test that doesn’t pass. Companies have to understand that you’ve got to invest in good tools for developers. Right now it’s a seller’s market for developers. Quite honestly, if you can spell PHP, I can probably get you a job coding PHP. I get people writing me saying we’ll train them, just give me someone with the aptitude to learn how to program. It’s a great time.

Finding Developers

Let’s start with finding developers. What have you found to be the most effective way to find developers to hire?

I’m going to talk mostly about the PHP community because that’s what I’m most familiar with but most of these should work in just about any developer community you’re working in. The first thing is get involved in your local community. That means start attending your local PHP groups on a regular basis. Go 5 or 6 months to build your relationships before you start doing any real recruiting. Even then, once you start, don’t just walk in and say, I’m here, I’m collecting resumes. Be the sponsor. Buy the pizza and the beer and the soda for the group a couple of times. That’s the first thing, get involved in your local community. The second step, and this is very important, it’s equally important, repeat the first step as necessary. Your local community is where you’re going to find your best resources. I’m a big fan of remote developers, but we’re not talking about that right now. We’re just talking about trying to find local developers. Your local community is going to be the number one.

Once you have integrated yourself into the local community, then start looking for, in the PHP community, we have regional conferences that have come up in the past 4 or 5 years. Once you have gotten your name in regional, then you go to national conferences and you sponsor, or you just go and attend and hang out with people. Then you start moving towards the international conferences like ZendCon and Dutch PHP, these conferences, and those are great places to find developers, but at that point you’ve got to be of the mindset that you don’t have to have them sitting in a chair in a cube that you can see. You’re going to have to start doing remote before the nationals and internationals are really going to pay off for you.

Developer Job Ads

What are some tips for writing great job ads seeking developers?

Number one, I cannot stress this enough, put a salary or salary range on the job ad. You’re not limiting yourself, and you’re going to help developers pre-screen. You’re not giving away any secrets because I guarantee you, if you’ve already got developers, they’re talking to their buddies, we know how much you’re paying. If you tell us, then we can help pre-screen. Help me understand if I can afford to take the job. The second thing, if I see Photoshop on a developer ad, that’s a red flag immediately. What it tells me is you don’t understand what you want, so you’re just throwing everything out there. I advise developers, anytime they’re looking at job ads, serious developer positions, not front end developers, but mid range and back end developers, if they see Photoshop on it, walk away. It doesn’t matter who the company is, walk away. The company doesn’t understand what they’re trying to hire for. Somebody said, we’ve got a billet open, I need a PHP developer. Every now and again I need photoshop, I need front end work, so go ahead and put that on there too. That’s not what they’re looking for.

Then what I like to call no bullshit ads. What I want to know is can I afford to take the job, am I qualified for the job, how much does the job pay? That’s the important stuff. If you nail those, then you have a good chance of finding the developer that you’re actually looking for and not have to wade through the 150 resumes you’re going to get if you put up a kitchen sink ad or a bullshit ad or something like that. I’ve been the manager that had to wade through those. I tell you this from experience because I’ve made all of these mistakes before.

“Hiring remote developers means that you can get the absolute best developer… not just the ones that are willing to live in your city”

Interviewing Developers

You’ve been critical of code testing in dev hiring, why is that?

First of all, I am to the point in my career where I have a LinkedIn profile that if you printed out in a PDF, it would be 5 or 7 pages. I have 10 or 12 GitHub repos out there that show what my code is. If you as a developer manager are not qualified to read through my GitHub Repo and look at the code that I’m writing and say is this good code, and if you’re not qualified to look at my LinkedIn profile and see that I show a progression of responsibilities, then I question whether you’re qualified to manage me in the first place. So many intricate things to being a developer that if you’ve not done it, you’ve got no framework. Setting timelines and deadlines, stuff like that. If you’ve never done development, then setting deadlines is real easy. By here, by this date, but if you’ve done development then you know it’s not nearly that easy.

So what steps should people take in hiring the right developers?

The number one thing that I look for is competency. If you’re not competent then you’re going to be a hindrance to the team. When I’m hiring on a team, keeping the team cohesion is very important. Once I determine competency, then we start looking at cultural fit. These days, you have to be very careful when you say cultural fit, because everybody says you’re only looking for white guys that graduated from your college. No, cultural fit does not mean that you look like me, it does not mean that you think like me. What cultural fit means it that I’ve got a team that is currently working together and you’ve got to be able to play a part on that team, and you’ve got to be able to disagree with these people, and not be a hindrance to the team. Building that team culture is so important, and keeping the team culture together, and I’ve seen great teams make a bad hiring decision and totally destroy the culture of the team, and the momentum of the team. Just because they got one person who dragged the whole team down.

I get the entire team that the person’s going to be working on in one room and I let the team ask questions until everybody is out of all the questions. I don’t care if you’re junior, senior, architect or whatever, you’re going to get to ask any question you want of this person as long as it’s a legal question. Once they finish that, then we can move on. I never ask questions in these interviews. The team always does it. My job is to sit back and see how the team interacts with this person and how this person interacts with the team. If I see a lot of friction, I’m thinking this might not be a good fit. It doesn’t automatically disqualify them but it means I’m going to have to do a little more interviews first.

The final thing, once I have determined competency, once I know it’s a good cultural fit, can I afford them? I am very odd in this. I do not negotiate salaries. I ask the person what do you need. I expect that person to be honest with me and tell me the number they need. The two questions I ask at that point is are we within reason, because if I’ve got a junior developer saying I need $100,000, that’s not reasonable. I’m still not going to negotiate with them but they’ve given me their answer. If they’re reasonable then the next question is can I afford them. If it fits within my budget and it’s a reasonable price and they have passed the team interview, the team has voted on them and said yes we want them, then I say okay. I don’t come back with a counter offer. I don’t negotiate this at all, because my feeling is a developer, if they’re being honest with me is going to tell me what they need to be happy with this. I don’t mind side projects but I don’t want people to have to do side projects to make ends meet. Quite honestly, if they’re not being honest with me on their salary needs, I’m probably not going to want them on my team to begin with because they’re not being honest with me, period.

The one final point about the team voting is it has to be a unanimous vote. I’ve actually had to walk away from candidates because I had one person say I don’t think this person is going to fit well on my team, and so we said I’m sorry it’s not going to work, because the team is the one that’s going to have to work with them. I’m just going to have to manage them, that’s the easy part. The team has to work with them on a day to day basis. If that team is not sold on the fact that this person is the person that they want on their team, I’d rather just walk away and find another candidate.

Creating a Culture of Respect

What can start ups and small companies do to compete in hiring the best talent? When you have big players offering free lunches and large salaries, etc?

Free lunches, that’s crap. That’s not a benefit, that’s a perk. I understand the mentality of free lunches and dry cleaning and all of this. Those exist so the company can keep the developer’s butt in their seat longer, and they exist for no other reason. It’s just a way to keep that developer on campus, focused on the job, for as long as possible. If a small company builds a culture of respect, they respect the developer, they understand that their job is a portion of their life, their job is not their life, then you can attract better developers than companies that have free lunches, dry cleaning, a Kegerator, you name it, Foosball tables, whatever.

My favorite example of this is in Nashville, we have Dave Ramsey, and they have a wonderful development team. Dave Ramsey’s team does not have a Kegerator. People work there because at 5 O’Clock, you’ve basically got to justify why you’re still there, because they understand that this is part of your life, it is not your life. It’s working for them because, they’re a Ruby shop, they’ve got a 6 month hiring process. It takes 6 months just to be hired by them, and yet they still have a list of candidates waiting to go through the process. They need Ruby developers right now. They’re constantly advertising for new, but they won’t compromise their team just to put a butt in a seat. They’ve got to get the right fit, and that is the focus of basically the second half of the book, of Culture of Respect. Helping managers to understand that developers have a life and their life is not building their particular project. If you understand that, then you really won’t have a problem finding developers.

So you’ve hired a great team, what are some specific things that people can do to engage developers and keep them around?

I practice what’s called Servant Leadership. It was not unusual for me, when I was running teams, to first thing in the morning, brew up a huge pot of coffee and walk around to each of my developers around 9 am and refresh their coffee. Not walk by, pour a cup of coffee, and talk to them for 15 minutes, because then you get into a drive-by meeting, and you’ve interrupted them, and you’ve killed productivity. I would just refresh their coffee. I knew what everyone took, cream, sugar, made sure I had it. It was just my way of saying my job is to hire good people and get out of the way to make sure they have everything they need. My job is to serve them and also be what I call the poop shield. Anything, any poop that comes in from above, my job is to keep it off my team. If a manager needs a meeting with somebody on my team, I’ll go. I will sit in that meeting and if it actually needs a developer, I will call that developer and say I need you to come down here.

I’ve had so many, and I learned this very early on, so many meeting requests for developers are just status meetings that they need the whole team, all the stakeholders in there, and the developer really doesn’t need to be in there. We’re just going over the project stuff. I’ll go to those meetings, I’ll take notes, and I’ll email the developer and they can read them later. If you don’t actually need a developer, then you’re costing me money by requiring a developer to sit in that meeting. That’s basically my theory, hire good people, get the hell out of the way.

“They have lives, and the main point of their lives is not to build you the next Uber for penguins”

Common Developer Hiring Mistakes

Are there any common mistakes that you see people making when hiring developers?

Yes, the most common mistake I see people making is not considering remote developers. I’ve been programming for 35 years. I’ve spent more time remote than I have on site. As a developer, I can’t get work done if people can walk by and stop me and talk to me, or constant interruptions of the telephone. If I’m remote, I can turn off my phone, I can turn off my email, I can shut down twitter, and I can focus and I can get the work done. Most people don’t understand this. Hiring remote developers is much more than going out to and finding someone that will do it and say boom, we’ll hire you.

You have to have a remote developer program in place before you hire your first one. You have to understand that it’s going to be more work for you, the manager, to manage that remote person, because if you don’t hear from them, you have to reach out to them. As developers, we have this tendency, if we don’t have any interruptions, we will go heads down, get in the zone. I have actually started a project at 11 am and looked up one day and it was 11 pm that night, and I’m like, this is so cool, I got so much work done. Oh my god, it’s 11 pm at night. You lose track of time, but that’s great for developers.

As a manager, if I’m not hearing from my developer, I don’t have to hear every 15 minutes, but I need to know that they are actually working and not playing on their Xbox. There’s a balance there, and it is more work for the manager. I get these emails all the time, ‘we’ve got a great opportunity and we’re looking for the best developer we can find’. I write them back. Great, are you willing to hire remote? ‘No’. Then you’re really not looking to hire the best, you’re looking for the most convenient, let’s be honest about it.

Hiring remote developers means that you can get the absolute best developer that is available to you, not just the ones that are willing to live in your city. If I can get anything across to people it’s figure out how to work with remotes. One of the other things I say that really pisses people off. I tell companies, if your managers can’t handle managing remote developers, get better managers. That’s a whole lot cheaper than trying to find developers in your local area.

Recommended Resources

What are some resources that you can recommend to those interested in learning more about dev hiring and management?

There’s only been a couple of things that have really impacted me. Of course the very first one is Mythical Man-Month. You really have to understand how the timing works in building software. I believe that everybody, if you’re a manager of software development, then you need to read Mythical Man-Month, and it needs to be an annual thing. You need to keep reading it once a year until you really understand it and you can start applying it without thinking about it. Of course, Peopleware, it’s another one of our ancient tomes in software management. It’s a great one. Another one, and you’ve interviewed this person on your blog, is Paul Jones, for a talk that he does called ‘All You Jokers’.

Software management teams like to go and say we need this built in this time frame, without any concept of what this time frame is actually going to take. It falls on developers to actually hit this time frame. That’s how we end up with the 120 hour work weeks and giving up our lives for a company that’s not going to give us anything more than a salary and possibly some stock options. It isn’t rocket science, this is basic human nature. Treat developers with respect, understand that they have lives, and the main point of their lives is not to build you the next Uber for penguins. You don’t have to put them on a pedestal but they aren’t galley slaves either. You hire good people, you treat them with respect, you give them the tools that they need and let them do their job. That is the secret to a happy, productive, and awesome development team.

Thank you so much for joining us today.

Thank you for having me on.