Gamasutra is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Gamasutra: The Art & Business of Making Gamesspacer
arrowPress Releases







If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 

Why all deadlines are bad for quality

by Johan Hoberg on 03/15/16 03:20:00 pm   Expert Blogs   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

In this article I will explore why I think that deadlines should never be communicated to the development teams, and why all deadlines are basically meaningless anyway.

But to reach our destination we first have to explore a few other concepts. Let us start with motivation. Historically deadlines have been used to  “motivate” employees to work harder towards a specific date. The old carrot and stick [1]. If you believe this is the best way to motivate people, then by all means, continue to set deadlines. However modern motivation research shows that this type of extrinsic motivation is far from optimal [2][3]. This is just not how you motivate employees who are developing complex products in an Agile environment. So to recap: Setting deadlines to motivate people is a bad idea. Stop doing that.


Sidebar: Temporal Motivation Theory [6]

The temporal motivation theory "models the motivating power of approaching deadlines, arguing that the perceived utility of a given activity increases exponentially as the deadline nears. These and similar ideas have been applied to the pervasive phenomenon of procrastination".

In Agile and Scrum this type of motivation is given by working in sprints, and not by setting a product delivery deadline.


 

Let’s move on to planning. The whole idea of being able to plan a complex product up front in a high level of detail is, to me, absurd. The word complex implies that the relationship between cause and effect can only be perceived in retrospect, but not in advance. How can you plan something like that up front in any detail? The Cynefin framework [4] tells us that we should probe-sense-respond to complex problems, and the Scrum mantra is “inspect and adapt” [5]. We need to start with a rough plan, start working and then inspect what we learn from our work and adapt to what we see. This is the only way to handle complex product development. Every plan made up front to solve a complex problem is just a best guess with the information you have when you write the plan – don’t let it dictate what you do when you later have more information about how to solve the complex problem.  And to recap: Stop trying to create detailed up front plans for solving complex problems – you are just fooling yourself and others if you believe in them.

So, with this in mind, what happens when you communicate a deadline to a development team? The way I see it, a development team has three variables to work with: time, scope and quality. Of course you could add more people to the team, or add additional teams to the product development, but in the short term, this is perhaps not feasible. So when you fix the time variable, the team has two options: 1.  Cut scope and 2. Cut corners. But scope is the domain of the product owner, not the development team. If the team communicates that it will not be able to handle the current scope in the set time frame, then the product owner could reduce the scope, and hopefully the team would make it, unless something unpredictable happens, which is usually the case when dealing with complexity.  If the scope is also fixed, then the only other variable to change is quality.

So what different scenarios can we see happening when we communicate a deadline to a development team, who is supposed to develop a complex product with a defined scope?

  • The team makes a rough plan of what they will be able to do until the deadline, and communicates this scope to the product owner, who agrees with the new scope
    • If the rough plan holds then the team delivers a product at the set time with the agreed upon scope and quality
    • The only problem is that in complex product development, the initial rough plan will almost never be accurate
    • If they still have to deliver the same scope they set in the rough plan, at the same date, then the only variable to change is quality – the team has to cut corners to make the deadline, and deliver a product at the set time, with the agreed upon scope, but with worse quality than agreed upon
    • If they can continuously change the scope, then they can retain agreed upon quality levels – but this could be done without telling the development team about the deadline in the first place, through the product backlog
  • The team tries to implement the predefined scope within the given time frame
    • If they make it without problems – awesome
    • But if the scope is too extensive and they cannot make it in time, they have to cut corners to save time, which reduces the quality of the product

Sidebar: Emergent Design

When designing a complex product I think you need to take an emergent approach, as you cannot predict the complex. This makes it even more difficult to plan everything up front.

“Scrum teams acknowledge that as nice as it might be to make all design decisions up front, doing so is impossible. This means that on a Scrum project, design is both intentional and emergent. The design emerges because there is no up-front design phase (even though there are design activities during all sprints). Design is intentional because product backlog items are deliberately chosen with an eye toward pushing the design in different directions at different times.“[7]


 

So what should we do instead? First, let’s start with believing that the development team will work at a sustainable pace through out the product development and work to the best of their abilities. Next, let’s trust that they will work according to the priorities set by the product owner. With this out of the way we should do the following:

  • Make a rough plan (read: backlog) of what we want to develop
  • Start working from the top of the backlog
  • Inspect what we have
  • Based on what we have, update the plan (backlog) and make it more accurate
  • Continue working from the top of the backlog
  • Inspect what we have
  • The plan (backlog) becomes more and more accurate over time as complexity is dispersed and we explore and learn about the complex problem we face

At any given time we have developed the most prioritized features for the product at a pace we can handle – no initial detailed plan would have changed this.

But what if a stakeholder wants to know when the product will be delivered? Our backlog will become more accurate over time, but the best way for a stakeholder to know the status of the product is to come to sprint reviews and look for themselves. Then they can decide at any given time if they want to continue development, change priorities, or cancel the product.

So in conclusion: Don’t set deadlines for complex product development. Complex problems cannot be planned accurately up front, and you are not motivating anyone properly.

There is only one scenario where deadlines are good, and that is if the date is more important than the value you are delivering, and you have a predefined scope that you cannot change. But how often is this really the case? How often is it more important to release on a certain date, regardless of how the product works and what value it gives to your customers?

 

References

[1] Carrot and Stick

https://en.wikipedia.org/wiki/Carrot_and_stick

[2] Self-determination theory

https://en.wikipedia.org/wiki/Self-determination_theory

[3] Drive

https://en.wikipedia.org/wiki/Drive:_The_Surprising_Truth_About_What_Motivates_Us

[4] Cynefin

https://en.wikipedia.org/wiki/Cynefin_Framework

[5] The Scrum Guide

http://www.scrumguides.org/docs/scrumguide/v1/scrum-guide-us.pdf

[6] Temporal Motivation Theory

https://en.wikipedia.org/wiki/Temporal_motivation_theory

[7] Emergent Design

https://www.mountaingoatsoftware.com/blog/agile-design-intentional-yet-emergent

 


Related Jobs

HB Studios
HB Studios — Lunenburg/Halifax, Nova Scotia, Canada
[09.20.19]

Experienced Software Engineer
University of Exeter
University of Exeter — Exeter, England, United Kingdom
[09.20.19]

Serious Games Developer
innogames
innogames — Hamburg, Germany
[09.20.19]

PHP Developer - Tribal Wars
innogames
innogames — Hamburg, Germany
[09.20.19]

Java Software Developer - New Mobile Game





Loading Comments

loader image