How do deadlines affect development?

It’s easy to let pressure on you (or your business) push down on others. You hope people will work better under pressure, but there’s a danger in this.

When you mention a deadline when asking for estimates, the programmer knows what you want to hear. If you’re a superior, they don’t want to disappoint.

One thing they may do is get optimistic. The problem is that most programmers are natural optimists when it comes to estimates. So now they are going to be dangerously optimistic.

When they start coding and realize things are harder than they thought, there will be pressure to take shortcuts. Shortcuts mean technical debt – making the software harder to maintain.

One of the first things to go will be developer testing. They’ll crank it out fast and hope nothing is wrong. If QA is also rushed, you’re delivering a time bomb. Even if QA finds problems, it will take more time overall than if the coder had found them first.

We all know that rushing causes you to make mistakes. Is “done, but buggy” good enough for you?

So do you hide the deadline? No. There is an important difference between keeping deadlines from affecting estimates and keeping deadlines a secret. Once you find out how long something is going to take, it’s highly beneficial to tell the team, “You’re telling me that all of this will be done by trade show. Can you guarantee this? What would cause us to miss it?”

That will trigger a whole new brainstorm: what assumptions are we making? That is a critical discussion between management and engineering.

Make Deadlines More Effective

Describe the problem, not the solution.
Brainstorm ways the business need can be met. Good programmers are lazy – that’s a virtue. You want them to find the easiest solution to your problem. Telling them how to solve the problem, instead of describing it, will limit their thinking and get you suboptimal software.

Break it down.
Are there ways you can break up your requirement? You can plan better if you know that there’s a 100% chance Feature A will be finished and a 50% chance for Feature B.

Reprioritize.
There’s only so much you can accomplish in a day. Figure out what must be done, defer the rest.

Publicize ALL the deadlines.
Minimize surprises. Engineering should never hear, “We need to know today if you can do this by…” That conversation should have happened weeks ago.

So what troubles with deadlines have you seen, and how do you deal with them? Tell me below.