InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Should We Manage Both Features and Tasks?

Posted by Deborah Hartmann Preuss on Jun 07, 2006

Sections
Process & Practices,
Architecture & Design
Topics
Agile Techniques ,
Delivering Value ,
Customers & Requirements ,
Agile
Tags
TOC ,
FDD ,
Value & Metrics
A key element of any Agile process is the "input queue" - variously called "product backlog" in Scrum, "story cards" in Extreme Programming and "feature list" in Feature-Driven Development. It seems easy enough, right? What could be simpler than making a wish-list? But it's not quite so simple, and in fact it's critically important to manage the quality of this queue, and to have a regular cycle for managing it. Failure to do so can result in uneven flow of work, delivery of misunderstood features, half-finished work, or micro-management. All of these dysfunctions reduce the effectiveness gains that Agile teams typically experience.

New teams trying to turn an existing project plan into a feature list immediately run into a problem: the list must be filled with customer-valued features, and the project plan is full of technical tasks like: complete requirements, upgrade to Oracle 10i, implement webservices framework, integration testing.  These activities have been, until now, invisible to the customer - and herein lies the "transparency" shift inherent in Agile. Technical tasks are always needed - but Agile teams must justify working on them in terms of a customer-valued feature. So, the first time a feature is requested which must pass through the webservices layer, the team will explain to the customer that the cost of developing this feature requires {list of technical work here}, and the customer must agree to spend their cash on these activities before they can be undertaken.

This has a couple of effects:
  • developers must learn to explain their work in terms of customer value - developers learn to understand the customer's point of view
  • customers will understand that they are paying for more than just "that button on the webpage" - customers learn to respect the effort and skill of developers
  • if the customer doesn't feel the cost is justified, they and the team can sometimes brainstorm a "lite" version that is more suitable, so the team can spend their effort on more valuable features.

  • customers and developers are now aligned toward exactly the same goal - customer value. Alignment reduces friction and enables effectiveness.
The feature list is, in fact, a customer-owned artifact, and so should not be filled with technical tasks which, in isolation, produce no customer-valued working software. Management of Agile projects is focused on this feature list, and tasks generally remain the domain of the team itself, as they self-organize to do the work.

Tasks always do need to be done - they are how the value gets delivered. But if a team is working well together, management generally knows not to interrupt and leave them to it, and if the team is not working well together, Agile leaders coach the team to identify and resolve their own problems, always with the goal of increasing value produced. An Agile leader who would mandate or even track team-level tasks would typically be seen as micromanaging.

Jon Kern, one of the 17 creators of the Agile Manifesto, and reputedly "a fanatic about ensuring software development efforts deliver business value," blogged last week on Just what is a feature?

This spurred David Anderson, author of Agile Management for Software Engineering, to talk about his view that sometimes it actually is worthwhile to manage technical tasks as features in Manage Value Creation not Effort Expended. His entry used ideas from the Theory of Constraints to back the unusual position that some kinds of tasks are worth managing.
is this gonna really work? by Alex Popescu Posted
  1. Back to top

    is this gonna really work?

    by Alex Popescu

    Deb, I don't think this will really work out:


    # developers must learn to explain their work in terms of customer value - developers learn to understand the customer's point of view
    # customers will understand that they are paying for more than just "that button on the webpage" - customers learn to respect the effort and skill of developers

    because of two reasons:
    1. when two companies are involved there are a lot of chances that not both are "agile". Moreover, in a lot of occasions, the people that would be needed for this process are coming from completely different levels, and so they have completely different views, available time and interest on doing it.
    2. I really think there are people out there that will feel completely unpleasant to find out first "how is pizza cooked, before serving it". Imagine you go into a resto and while trying to get a pizza you get a long explanation about how and what is needed to prepare the pizza. And this is a simple example, because all of us can understand how a pizza is prepared :-).

    BR,

    ./alex
    --
    .w( the_mindstorm )p.

Educational Content

Jesper Boeg on Priming Kanban

In this interview, Jesper Boeg, author of the new InfoQ book – Priming Kanban, discusses the keys to using Kanban effectively, and how to get started if you are currently using other approaches.

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.