Thursday, August 12, 2010

No Deadlines

deadline, from New Oxford American Dictionary

  1. the latest time or date by which something should be completed : the deadline for submissions is February 5th.

  2. 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

Real 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.

Planning Deadlines

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.

Motivational Deadlines

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

Stress

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.

Livelines

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.

3 comments:

MartinRL said...

I couldn't agree more. I currently have the luxury of working in a flexible kanban environment with skilled colleagues and a great project manager.

It's such a relief from when *I* was the PM/Scrum Master at my last job, and everything had to go right due to external factors. Hence tough negotiations with my boss every time a single task estimate wasn't met and blew up the burndown chart as a result.

The current kanban board (whiteboard + sticky notes) works so much better since it maps to reality much better. When I started, it was a SCRUM environment and we've kept the task/story estimates when needed for some reason (mostly not, but the organization could certainly improve here) and daily stand-ups.

Over to the productivity factor from the human one. When I read Peopleware a few years ago, I came across a study by Michael Lawrence and Ross Jeffery whom had measured productivity with and without deadlines. Here's what the book says:

"It doesn't matter too terribly much whether the "totally unreasonable and unrealistic" schedule comes from the boss or from the builders themselves. People just don't work very effectively when they're locked into a no-win situation."

And here's the data from the study:

Effort Estimate Prepared by Average Productivity Number of Projects
Programmer alone 8.0 19
Supervisor alone 6.6 23
Programmer & Supervisor 7.8 16
Systems Analyst 9.5 21
No estimate 12.0 24

The study was conducted in 1985. Why do we keep estimating as much as we do? Plain ignorance I guess...

The study should certainly be taken with a grain of salt since one "cannot measure productivity" -Fowler (http://goo.gl/70WD) but reflecting over this issue during 13 years of professional software development, I for one strongly believe in the quote above, only not totally scientifically.

MartinRL said...
This comment has been removed by the author.
Anders Janmyr said...

@MartinRL, I'm glad someone agrees :)