deadline, from New Oxford American Dictionary
the latest time or date by which something should be completed : the deadline for submissions is February 5th.
historical a line drawn around a prison beyond which prisoners were liable to be shot.
Deadlines in software development induce unnecessary stress, and transform otherwise enjoyable activities into chores.
We need to replace deadlines with livelines. A liveline is a deployed, working version of a product. It is after the fact, a milestone set when you are done.
How Deadlines Are Set
Deadlines are set in different ways in different projects.
In the classic Death March project, a deadline is set by someone outside the project with no clue whatsoever about how long it will take. Typically this kind of deadline is based on some external event, where the project will be demonstrated. The event may be a conference, or something similar.
In Scrum, the deadlines are set by the process itself. Most Scrum projects I have worked with use a two week deadline instead of the recommended 30 days. The team decides how many stories they can complete by that deadline, based on rough estimations done in the sprint planning.
Some projects set deadlines by a developer being asked (or asking himself) when the task will be done. The developer will say: “I’ll have it done by 3 o’clock”, a wild guess.
The problem with all these approaches is that the deadlines are, at best, based on guesses of the team doing the development. But guesses are guesses, not something you can set a deadline by.
And deadlines work both ways, a task is very rarely completed before it’s deadline.
Kinds of Deadlines
If a task is not completed by a certain time someone will die. This kind of task is really common in novels and movies. A clock is ticking and if the task is not completed by the time the clock reaches zero, BOOM!
If have never seen this kind of deadline in software development, but they may exist.
Some deadlines are set in order to simplify planning. In the large Death March projects, the plan is to show the project at a certain date. In integration projects, the deadlines are set to be able to synchronize with other teams working on the same product.
This kind of deadlines are actually understandable, but I am arguing that they actually slow down projects by introducing stress, which introduces bugs. The bugs introduce bugs in the dependent projects, and slows down many projects instead of just one.
Motivation deadlines are set to get people to work. The assumption is that if a deadline is not set people will procrastinate over different ideas, or just slack off since there is no date set for the release anyway.
This is, absolutely, the worst kind of deadline. If the team is not motivated enough to do a good job without a deadline, you need to get a new team, not set a deadline.
Why Deadlines Are Bad
Consider walking on a one foot wide plank. If it is on the ground it is easy. If it is two meters up it is difficult, but if you put it at twenty meters it is a whole different ballgame. That is what its like with deadlines, they put an unnecessary pressure on people.
Loss of Motivation
Work consist of whatever a body is obliged to do, and play consists of whatever one is not obliged to do. — Mark Twain
In his book, Drive, Dan Pink differentiates between intrinsic motivation and extrinsic motivation.
Extrinsic motivation is motivation driven by carrots and sticks, rewards and punishment. It works well for simple, well-defined tasks.
Intrinsic motivation works well for creative, ill-defined tasks, like programming.
Intrinsic motivation is fragile, it disappears in the presence of carrots and sticks. A deadline is a stick, whether set by ourselves or someone else.
A liveline is, quite simply, a task that is done. When a task is done, it is easy for others to use it, in their plans or in reality. If we want to build a stable house, we should build it on stable ground.
When using livelines the iteration length is the same length as a task. This is usually a lot shorter than the usual one to four weeks common in Scrum and other agile methods. It also leads to variations in the iteration length.
If you implement your task all the way into production, you get Continuous Deployment or Continuous Delivery. This puts a lot of pressure on your tooling and on automation but, I believe this is the way to go.
It is 2010, it is time to get rid of deadlines.