Ayende @ Rahien

My name is Oren Eini
Founder of Hibernating Rhinos LTD and RavenDB.
You can reach me by phone or email:


+972 52-548-6969

, @ Q c

Posts: 6,128 | Comments: 45,550

filter by tags archive

The cost of a bad hire, or the Zombie Apocalypse is upon us

time to read 5 min | 824 words

imageI got a lot of criticism about the posts talking about the interview process. A lot of “just be nice”, “you should give them a chance”, “how could you say that”, and a lot of stuff like that.

To those guys, wake up and smell the corpse.  Let us call the Zombie on the keyboard Boris. Yes, I know the doll looks female. But for our purposes it is a Zombie female named Boris.

I hired Boris at the end of 2011. She was hired for a junior position in HR after some doubts on my parts. Mainly, she didn’t shine in the hiring process, but we really needed the additional manpower, and she didn’t have anything that was an immediate NO. Just nothing that made me want to say an immediate YES.

We started Boris using pretty much the same way we start junior devs, learning the ropes by doing some non essential tasks. In Boris’ case, that was done by building the public daily builds site for us. I thought it was a good way to getting started, it meant getting surface familiarity with RavenDB, and it was something that we needed. By the way, we have since then replaced that site, don’t bother looking for that.

Boris needed a lot of help at first, but that was natural for a new hire, especially a junior one. We spent quite a bit of time with her, showing her the ropes, how things work, etc. But it took her a long time to do things, and in the end, it was quite apparent that it would be easier to do things myself than tell Boris to do them.

If I did things myself, it would be done. If I told Boris to do them, I would have to explain what I wanted, come over and help several times, come over again and fix the broken pieces. Explain some more about what was wrong, and finally pretty much write it myself. Now, that is something that I am perfectly fine with, for the first two times. The third and forth times, maybe. But if you don’t get what is going on after a few explanation, there are two options. Either Boris couldn’t get it, or I wasn’t explaining things in a way Boris could get it.

Either way, it didn’t matter, Boris didn’t get it. And even assuming that the fault lie in me, which I am absolutely willing to do. That didn’t really matter.

About 3 months after we hired her, Boris was let go with our best wishes, but without any regrets. In fact, my major regret was letting it go for so long, because I really didn’t want to admit that Boris was a bad fit.

Now, let us review what Boris cost us:

  • 3 months of salary & benefits.
  • Not hiring someone else that could have done better.
  • Quite a lot of my and the other guys’ time.

It doesn’t really matter how you spin it, Boris was a huge net loss for us. Not theoretical “I could have that” loss, but a real measurable loss that set us back by quite a bit.

On the other hand, we have had a recruiting cycle that didn’t pan out. The end result that we didn’t get anyone. Net loss, purely theoretical from our part. We reached out to a partner and got help from known good people.

What I think is crucial to understand is that I actually have access to a really good group of people that I can work with. Most of them are remote, and most of them are only available for part of the time. But getting really good people, and I mean awesome people, of the kind that “you just blew my mind” people is not a big deal. I have access to them, and if I have enough work for that level of talent, I can probably get them for several months of pure work. I don’t shy around or talk behind people’s back, and when I tell you that they have world’s class talent. I mean it.

When I am looking for local people, I am looking for people that can compete with that level of talent. Because remote work is useful and great, but it ain’t the same. And that is why every now and then we do a recruiting cycle, to see if we can find people that match our expectations.

In other words, the cost of making a bad hire would be money and time (much more costly!) down the drain. The cost of not making a hire is having to rely on good people that might live in a different timezone or take vacations on a strange schedule.


Xing Yang

Is it a typo or you hired a HR to setup your builds site?

Ayende Rahien

Xing, HR == Hibernating Rhinos - the company name.

Xing Yang

Then it makes sense :)


I guess the conclusion is that not every bet is always a win... or that not every person around us meet our expectations... But wait, dealing with these kind of situations is not what real life is about?

Kaare Hoff Skovgaard

I guess it seems like most people have failed to grasp that you have the luxury of waiting for someone that you feel confident in to show up, rather than having to take the bet on someone that "might" work out. I mean, why take the risk, if you don't have to? I guess it might mean that there's a chance of potentially missing out on someone that could potentially be really multi mega awesome - but if in return you're close to guaranteed getting really great people that can do what you expect of them - then I guess it is an easy win.

By the way, I have actually quite enjoyed reading this series, although I have found it kinda funny how you have had to defend your choices of putting this up on your blog.


I guess what the recent series of posts were trying to say is that the cost of a false positive massively outweights the cost of many false negatives. So in order to get the perfect fit, it's reasonable to miss many good fits.

Thanks for the insight, and the opportunity to see the various replies.

Khalid Abuhakmeh

From reading this article I can completely sympathize with you, because I've been in situations where I've tried to train someone and they just didn't get; not the first time I showed them, and not the last time I showed them. I would say 3 months is still a short time to write someone off, but being a small company, time is not a luxury you have to gamble with. I'm just happy that I am at a point in my career that I can be instantly valuable to most companies that hire me, which feels great. It must suck firing people.


I think this "be nice" dudes are all Americans and they fear that they would suck at those interviews either, that is a cultural thing.

Here in Germany we don't have that much mercy when it comes to hiring candidate, you have even be kind from our perspective...

Wyatt Barnett

Well put. After getting burned a few times I have now got to a "we aren't hiring any FTE if we've don't have a solid yes not the old "well, this is the best of this stack of resumes and we need someone." Cleaning up the mess is more expensive than playing a man down.


@Suruku, How is this "insightful"? Hiring a poor candidate is wasteful? No way! An junior HR employee didn't know how to setup a daily builds site? Shock!

@Sam, How many German companies post examples of poor applicant code online? Never mind, nobody cares about Germany.


I been keeping track of these posts. On a thought, I understand the point of view from many people and specially yours.

On the "Boris" example, it does make sense what you are saying. Unfortunately "Boris" was an OK hire but not a great one, and by not being able to search, study, practice and implement new ideas and learn the ropes on his/her own you got stuck with some one that was very dependent.

For me it is a good hint when the person interviewed shows that they stay on top of their game by studying or being members to tutoring sites or other means of learning. Perhaps this was one of the things you missed or "Boris" just didn't do/have.

Steve S

I think you missed the point. It wasn't about your hiring decisions. It was about posting a rant online about a specific individual who couldn't defend themselves.

Ayende Rahien

Steve, Do you see the headline of the page, right there at the very top?

Adam Weigert

Ayende, I love you man. There is absolutely nothing wrong with demanding and seeking HIGH standards/quality employees. The majority of large companies with BAD employees in them lean more to valuing soft skills over the hard stuff.

Judah Gabriel Himango

I enjoyed this series immensely.

I agree with Sam that many of those who took offense did so due to cultural expectations here in the United States which tell us to never say anything negative.

When I visited Israel last year, I found the culture very different: blunt honesty, tell-it-like-it-is, speak what's on your mind, good or bad. I actually like that, and wish more corporate environments were like that here in the US.

If my code sucks, I want someone to tell me so that I can improve. That doesn't happen with the "never say anything negative" mindset. It can only happen with blunt honesty.


you want good developers? Go Hollywood http://www.businessweek.com/articles/2013-04-10/silicon-valley-goes-hollywood-top-coders-can-now-get-agents

Christian Duhard

Hmm, If what you got out of my comments on the last post was "be nice" or "give them a chance" then I probably wasn't clear. I feel your pain when it comes to hiring, but I think it's important to understand both sides when it comes to hiring practices.


I'm guessing most of the readers here have never read thedailywtf ...

Howard Chu

Christian - both sides? If you don't have the qualifications for a job posting you shouldn't apply for it. Why should anyone have sympathy for an applicant who is lying thru their teeth?

The best thing you can tell the guys with "10 years of 1 experience" is "you don't seem to actually have any aptitude for this work. You should seriously find a different career." But how many who you tell that to will actually take it to heart, and make a change?

João Bragança

The thing is the margin for a small outfit like HR is pretty thin. A large corporation can afford (sort of) to have an army of morons on staff, can you say the same of an ISV?

But TBF I feel that @ayende should direct more of his ire at the recruiting firm. You're paying them; they have no biz sending you a 'senior' who can't code his way out of a wet paper bag.

Marzio Pattano

In my opinion your need didn't justify to hire a junior. In fact, as you wrote, "When I am looking for local people, I am looking for people that can compete with that level of talent.". So why hiring a junior if you hadn't time and/or you didn't want to spent time to teaching her? I wrote you didn't want beacause you wrote "it would be easier to do things myself than tell Boris to do them" and "If I did things myself, it would be done." so you didn't want it.

Bye the way you didn't said if she was or not up to task! And that's the point.

Jon Samwell

@Marzio, I think there is an expectation for junior developers to be pro-active when it comes to learning. I believe Ayende was making the point that the junior was not pro-active in learning and would just ask the team for help before first doing some investigation. As Ayende said he has all the time in the world to teach someone something once or twice but anymore than that then they either are clearly not listening or do not get it. Learning technique, aside I think he wanted someone who was pro-active in learning and liked it and most importantly had a flare and passion for development not a zombie who would turn up, do their 8 hours and disappear without learning or contributing anything.

Ayende Rahien

Marzio, Because I had a set of tasks planned that actually were best suited for a junior guy.


With all the flames about posting reviews of candidates in public, look at it as a way to teach the readers and show insight on what makes a good candidate and what kinda things one should be looking for in their craft. I find it valuable to see different perspectives from coding style. The ones Ayende posted were the ones you can actually find on thedailywtf.com. People do these things without realizing. If they had cared, they would read the post and realize it is them and correct it. If all they are concerned about is being public ridiculed without being named, they can just stay at their corner QQ their life out and move on to another job that would accept their coding practice. I dont see anything wrong with showing why a candidate is not hired.


Perhaps http://careers.stackoverflow.com/ would be nice to have a look at?


@All: Read Ayende's posts on hiring twice over and no where did I see him mention any individual's name, CV or anything else specific.

If anything, Ayende provided us a unique opportunity to feel the pain of a bad hiring, both financial and energy.

@Ayende: What are your thoughts on: 1. No "warm up" project. 2. Hire as a 1099 first, and assign a "real" project. 3. "Real" project is a success? Then Full Time w/ Benefits.


OREN, would you hire this guy :D ?


Ayende Rahien

TVD, I have no idea what 1099 is, I assume it is some sort of employment status?


yeah, well, it was humor... btw the thing with the hawk and a ninja star was a pretty impressive skill!


Ayende, Yes. A 1099 defines the employment relationship as "Independent Contractor". So basically, they are not an employee of HR - Until they are "pass the trials" so to say.


Ayende Rahien

TVD, Independent Contractor requires a lot more hassle in Israel than an employee. By default, employees don't need to do tax returns here, but contractors do. If they aren't already, that is usually something that they can't do. On the other hand, we usually hire people for 3 months trial period, and benefits kicks in after that.

Drew Hawken

Ayende, Thanks for this, it was really helpful for me. You can accept your part but not have to continue the relationship. I can still be a great tech lead and have challenges working with some people and what they bring to the table.

And that is ok!


Ayende, I think you misinterpreted many of the comments from your previous "recruitment" posts. It's not about "being nice to candidates" or "giving them a chance". It's your perfect right to hire or not hire whoever you want, we're not saying you should absolutely give jobs to inadequate applicants and bear with their incompentence until the end of times.

Many comments were about ridiculing candidates publicly, which, even if done anonymously, is a totally different thing. And particularly ridiculing them abruptly, giving little to no context as to what you were expecting from them (at least in the original posts).

I wish and hope you spend the same time trying to explain candidates why they failed and teach them a little of what you expected, than you spend publishing partial reports of their interviews on your blog. If you don't, try it - you'd be surprised how much you can learn by having discussions even with people you wouldn't have deemed worth teaching to at first.

Recruiting someone is not a win-each-time process where you'd be guaranteed to find a clone of yourself who you can delegate work to and expect to handle every little detail exactly as you would. Sometimes it's more like a lottery, and I don't find it scandalous that you lost 3 months of salary & benefits having hired the wrong person - it just happens.

Ayende Rahien

Guillaume, Explain to candidates why they failed? Can you estimate how much time it would take? How many other things I can do at the same time? Remember, we are talking about people who showed up to an interview unable to recognize when they need to use a loop or solve grade A questions. And "it just happens" for 3 months of salary would be nice if it wasn't something that... you know, actually really hurt. We aren't talking about losing a quarter because the machine swallowed it.


Ayende, even now Boris is eating your time that you could have spent on something a little more interesting than explaining (being sorry for) getting rid of Boris after 3 months of regular explain-four-times-and-do-it-myself thing.

Comment preview

Comments have been closed on this topic.


  1. The worker pattern - about one day from now

There are posts all the way to May 30, 2016


  1. The design of RavenDB 4.0 (14):
    26 May 2016 - The client side
  2. RavenDB 3.5 whirl wind tour (14):
    25 May 2016 - Got anything to declare, ya smuggler?
  3. Tasks for the new comer (2):
    15 Apr 2016 - Quartz.NET with RavenDB
  4. Code through the looking glass (5):
    18 Mar 2016 - And a linear search to rule them
  5. Find the bug (8):
    29 Feb 2016 - When you can't rely on your own identity
View all series


Main feed Feed Stats
Comments feed   Comments Feed Stats