“The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.”
The Agile Manifesto
Agile software development has started out with white-boards, story cards, and face-to-face meetings. It’s main goal was to develop software according to the customer’s requirements, to accommodate new requirements during the development process, and to create an environment which encourages self-organisation and team responsibility.
However, the real world is somewhat different. We have to deal with customers, contracts, and project reports. Without tools and processes it is hard to meet these needs:
- How do we write contracts for agile projects?
- How can we record meetings, discussions, and decisions in an efficient way?
- How do we meet the managers’ needs for documentation and project reports?
Negotiating contracts for a software product almost always involves understanding what the customer wants, creating a product backlog, making financial and time-based estimations. But agile is about iterations, about accommodating changing requirements, about constantly rewriting the product backlog, about estimating user stories, not product specifications.
How do we write contracts for agile projects?
In traditional software development, a fixed-price contract is often limited by time and scope. With these two constants, it is possible to make a cost estimate and schedule resources. In an agile project, however, the scope keeps changing, and time requirements need to be renegotiated according to the scope. How can we map the original scope to the new scope to find out which services are not covered by the initial contract? How can we compare dropped features to newly added features to negotiate contract amendments? And how do we decide if a project is done according to the contract?
It seems that with agile methods, it is always difficult to give estimations, and the fairest contract would be based on paying a team to work on a piece of software for a certain amount of time. However, this seems not to be possible in most cases. Hence, we need to constantly keep in mind the product backlog. We need to warn clients when they ask for new features, we have to tell them that adding these means removing other features or allowing for more time with all the related financial consequences.
This means that the product owner cannot simply come into a sprint meeting presenting the next sprint’s features. New features and changes have to be discussed with the respective financial divisions before they are implemented, or at least their consequences have to be transparently communicated to the responsible managers. These aspects make agile planning less flexible, and it means that much more people are involved in the planning of a sprint than the original chicken- and pig metaphor suggests.
Additionally, a client will often require a report of which tasks required more time than expected and why. It is thus important for agile projects to be able to provide a detailed documentation of meetings, discussions, and decisions.
Tools for Agile Projects
The Agile Manifesto values “individuals and interactions over processes and tools”. However, as Liz Barnett, chief editor of the agile journal says in the article on Tools for Agile Projects, “this does not mean that individuals and interactions must replace processes and tools”. Different software tools have been developed in the last couple of years. Tools range from issue trackers like Trac to commercial products like Thoughtworks’ Mingle, Atlassian’s Jira, as well as many others. The goal of all these tools is to provide support for the management of agile projects.
However, the needs of the people involved in agile projects are different. The goal of this post is not to compare these different tools, but rather to identify the expectations:
What the developers want
Developers mainly want a place (ideally a single URL) where they can find all information related to a specific task. When they start woking on a task they want it to be well documented and to include all the information they need. Developers don’t like to be stuck with a task for which some information is missing or pending product owner approval.
What the product owner wants
Product owners want to see a products’ progress. They want to know how long it takes to implement a taks, they need an estimate of when the product will be finished, and they want to know where they can find the latest version of the software.
What the scrum master wants
Scrum masters want an overview of the project. They want to know which tasks are in progress, which are completed, and what remains to be done until the end of the sprint. The scrum master also wants to know where to find the implementation of a specific task, if it has been tested, and who is responsible for it.
What the managers want
The managers want numbers and histories. They want to know which tasks caused a delay and why. They want to know who is responsible for a decision: Is it the team or the client? They want to be able to reproduce all information related to a task, sprint, or product. They want to make statistics, know how long a task took compared to its original estimate.