“We're behind, but it’s important to show that we can deliver these features.”
“Now is the time to show how good of a job we can do.”
“We can get this project back on track.”
“I know you’re capable of doing this. We just need to dig deep and get it done.”
These are all phrases I’ve heard as deadlines approach. I’ve probably used a few of them myself. These statements may sound like rallying cries, like it's time to jump in and save the day. In reality, though, they are alarms. Statements like these are signs that communication has broken down.
The Slow Breakdown of Communication
Somewhere along the way, a deadline was set. The business and product side expect that development will be complete by a certain date. The development team might even have had input into the date.
However, the initial plan changed. Estimates were too optimistic or features were added. Features may have been reworked entirely during the process. Along the way, no one spoke up about the delays that were adding up, and it became unrealistic to meet the deadline while working at a sustainable pace.
Breaking the Cycle
So, communication has broken down. Now the team is being asked to work overtime to correct the problem and keep the committed date. What's the worst response the development team can give?
“OK - we’ll do our best.”
Rather than a meek response, it's time to stand up and reassess what the real problems and needs are instead of just buckling down and working extra hours. It's time to ask the really tough questions: what do we absolutely need to go live? What is the importance of this date? What is a realistic expectation for completing all features and releasing a well-tested product?
These are difficult conversations, and having them will be painful. However, in my experience it is always better to address the bad news before a deadline instead of charging forward optimistically and then missing entirely.
Ignore Your Ego. Be Honest.
As craftsmen, it is important to understand that these statements are appeals to the ego. It is hard to have these conversations, and easier to tell someone that we'll try, even if we know it's not possible. It's also extremely rewarding to jump in and save the day. There’s a high I get out of solving complex, challenging problems under pressure, and that feeling can be hard to resist.
However, as a craftsman I should not let these emotions cloud my judgment. Instead, it is better to be honest. I need to accept that communication has broken down and work to reset expectations.
It may be painful. In fact, I guarantee it will be painful. However, having these difficult conversations is better than careening toward a deadline with no chance of success, and it will give your project the chance it needs to get back on track.
Uncle Bob has an outstanding book called The Clean Coder, where he discusses the importance of professional developers being able to say "no", among many other valuable skills.
Fierce Conversations is another useful resource for how to have these extremely important, meaningful, and difficult conversations. I strongly suggest both as further reading.