Everyone wants to be a hero. Techies especially so. And there are special occasions where true glory awaits the hero. When there’s a crisis, it can pay to just carry on no matter what. Get the problem solved and celebrate victory. Winning through shear effort.
But most days are not like that. Most features need not heroes. They need realists. People who are willing to give up and walk away. Being a hero is all about sitting aside all costs and winning anyway. That’s not a prudent way to drive everyday development.
Here’s the problem: You agree that feature X can be done in two hours. But four hours into it, you’re still only a quarter of the way done. The natural instinct is to think “but I can’t give up now, I’ve already spent four hours on this!”.
So you go into hero mode. Determined to make this work, but also embarrassed that it isn’t already so. So the hero grabs his hermit cape and isolates himself from feedback. “I really need to get this done, so I’ll turn off IM, Campfire, email, and more for now”. And some times that works. Throwing sheer effort at the problem to get it done.
But was it worth it? Probably not. The feature was deemed valuable at a cost of two hours, not sixteen. Sixteen hours of work could have gotten four other things done that individually were at least as important. And you had to cut the feedback loop to avoid feeling too much shame, which is never a good thing to do.
That’s where the concept of sunk cost gives us a guide on what to do. It doesn’t what you’ve already spent. That time and money is gone. It only matters whether spending what’s left is worth it or not. Business school 101, but one of the hardest lessons to internalize. In other words, stop being so afraid of calling it quits. You’re playing to win the full season, not a single game. Every time you play the hero card, you’re jeopardizing the next game. Heroics are for when you have no other choice. When you can afford to take on tremendous risk because there’s no alternative. That’s probably not today.