Journal Articles

CVu Journal Vol 17, #5 - Oct 2005 + Project Management
Browse in : All > Journals > CVu > 175 (15)
All > Topics > Management (95)
Any of these categories - All of these categories

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: The Agile Manifesto Explained (and a First Amendment)

Author: Administrator

Date: 02 October 2005 06:00:00 +01:00 or Sun, 02 October 2005 06:00:00 +01:00

Summary: 

In my last article I set the scene for what I hope will be a series of provocative and informative articles. In the article I described the plight of Pete and his vain efforts to change development processes at his place of work.

Body: 

Last Time

In my last article I set the scene for what I hope will be a series of provocative and informative articles. In the article I described the plight of Pete and his vain efforts to change development processes at his place of work. Peter represented the type of people that will be interested in Agile Software development - professionals who care, perhaps passionately, about software development. As Pete Goodliffe points out: "There is more to being a professional than a trade or a methodology. It is more a state of mind."

So that's my audience, what of the manifesto. In this article I will be looking deeply into what I think the Agile Manifesto says.

The Manifesto

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools

  • Working software over comprehensive documentation

  • Customer collaboration over contract negotiation

  • Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

The Manifesto Analysed

At first impression there is not much to it. 358 characters, 73 words, and 6 paragraphs. Oh and there are 4 bullet points, some indentation, and 10 of the words are in bold. Lets take the first sentence:

We are uncovering better ways of developing software by doing it and helping others do it.

Now lets take the first two words: "We are." It does not say "We have". This says clearly that the work is not complete it is an on going evolving process. Indeed I later I will, bravely, be suggesting a first amendment.

And what about the third word, "uncovering" rather than "developing" or "inventing". This is because there are a lot good agile software development practices that are currently in use - you may well already being using many of them without realisng how agile you are. This is a very comforting thought. Agile software development is not magic, it is not necessarily a new way, it might just be making better use of practices that we already have and that we know work. Morevoer becoming and being agile is open to all, not just the elite and gifted. Neither is contributing to the uncovering of better ways - we can all contribute. Uncovering the new ways is "by doing it and helping others" the helping of others takes many forms: magazines, consultancy, conferences, courses, books, web sites, mail groups…you can, if you care, contribute to many of these and thus contribute to the uncovering, growth and improvement of software development.

So a simple, short first sentence sets the scene for never ending improvement and shows we can all be involved. Next there is a preamble leading us into the heart of the manifesto.

Through this work we have come to value:

I will draw your attention to the last word value. It is very undersated but, 108 words in, it is crucial as the whole manifesto is a statement of values and it is a word I will return to later.

Next we have the significant formatting - four indented bullets with some of the words in bold. These bullets are four statements of value. Each statement mentions two related things of value with the word over used to indicate that the first value, the one in bold, is of more value.

The bulleting draws the eye to this heart of the manifesto. But just incase you missed the point the final sentence re-states the relationship between each pair of values:

That is, while there is value in the items on the right, we value the items on the left more.

This is very interesting. Why put these items in pairs and why emphasise in three ways that one part of the pair is more important than the other?

Firstly, without the repeated emphasise it might be easy to conclude that the manifesto says that the things on the right aren't important at all. That simply is not true. Secondly, the pairs are not chosen at random there is a relationship between each side of the pair. My intepreation is that each pair provides a morale or a warning - a warning to make sure you get your priorities right.

For reasons I can't explain I am going to call each pair a bi-attitude. In the next sections I explain what I think the warnings are.

Warnings

Individuals and interactions over process and tool

Why are individuals and interactions important?

An organisation, team, or group are made up of individuals. In order for the team, group or organisation to 'work together' and meet common goals they have to interact. The nature of how they interact, and the efficiency of the interaction, can severely affect the performance of that team. Thus, it is worth spending effort making the interaction effective. Now, some would argue that processes and tools can improve the quality of interactions. I have sympathy with such an argument for I think so too.

So why are process and tools less important than individuals and interactions?

In a nutshell "Tools support the process and the process supports the interactions of the individuals". That's why they are there.

In a team of one, or a collocated few, you can get away with out much in the way of a process, and the minimum of tools to build the system. As the number of people involved, the complexity or size of the information, the number of locations where the individuals are, the number of time zones,… grows, defined processes and tools can help to stay on top of the situation.

A danger is that a tool might grow to control the process and/or the process may grow to control the interactions of the individuals. Is that a bad thing? Well it can be if it reduces the value that is provided to the business by the interactions of the individuals. But there are often cases where a tool controls a process and adds significant value. For example, if your configuration management is complex a well chosen tool that drives the process can prevent a myriad of problems. As a second example, Extreme Programming [Beck] encourages heavy use of tools and process: "You will perform daily builds; You will run all automated tests suites; You will…"

So, defined process and expedient use of tools is not a bad thing. So I'll ask a different question. Why are individuals and interactions more important than process and tools? Sorry that is the same question. How about, how can a process or a tool reduce the value? Or better, how can a process or tool make it harder to add value?

At the heart of the problem is the fact that consultants and software vendors (including those of an Agile persuasion) make their money by selling processes and tools. It is, perhaps, too easy to take a process and/or set of tools without consideration of the benefits that they can supply and without later seeing whether any benefits have been supplied. To me this is the real purpose of this beatitude - think hard before committing to what can be expensive tools and processes. Very often an efficient team can improve the process at less cost.

The moral: Tools support the process and the process supports the interactions of the individuals - and don't you forget it!

Working Software over Comprehensive Documentation

Well obviously - duh! That was my reaction when I read this and I would not be surprised if it was yours - so why include this bi-attitude in the manifesto?

This time I'll start from the back end. Why have a go at comprehensive documentation?

So many processes get carried away creating comprehensive documentation and end up creating too much documentation. The creation of that documentation adds cost to the work and introduces latencies to feedback making it harder to respond to change and harder to collaborate with the customer. The documentation often duplicates information again adding to costs and latency of maintaining the information in two places. The excess of documentation, if not maintained is soon out of date diminishing its value. And oh even worse, out of date documentation can obviously cause problems making its value negative. In short much of the documentation either:

  1. Adds only a little value

  2. Adds value that is only short term value but is kept and maintained even when its value has diminished.

  3. Adds value is but is duplicated in other locations

  4. Adds value but is not kept up to date

So there are a few reasons why documentation may not be needed. But what documentation is needed? I'll put that another way. What deliverables provide long term value?

Requirements define what is needed from the software. Software is working if it fulfils the requirements. Tests are used to prove the requirements are fulfilled. In my mind that is what really matters in software development: requirements, software and tests.

So what is all this comprehensive documentation malarkey that the Manifesto refers to? It is High level designs, technical designs, user interface design, standards, use case models, class diagrams, architecture….

Between us we could probably name a hundred different types of documentation. Why do we need any of it? In my mind there are two key purposes: understanding and communication.

When you are faced with a new system you want to be able understand how you are going to solve the problem. You will be analysing and designing a system. This is the forward engineering part of your work.

If you are not working alone you will want to communicate this incite to others. The number and nature of individuals you have to interact in order to make this communication will influence the nature and amount of documentation created - but remember to consider how much will need to be maintained.

In order to understand how you are going to solve the problem you will need to understand what is already there. And you will want to communicate this understanding to anyone who, in the future, wants to evolve the system. This is the reverse engineering part of the work. In summary it is an art of:

  1. Understanding and communicating what is needed (forward engineering)

  2. Understanding and communicating what is there (reverse engineering)

To conclude, the manifesto is warning us against a costly pitfall in which we strive to provide comprehensive documentation that does not provide value.

Customer Collaboration Over Contract Negotiation

To me this is the hardest bi-attitude to argue in favour of convincingly but I'll try - starting with the supplier consumer model that this alludes to.

The supplier consumer model for software development has a simple but entrenched form. The consumer wants a system that does abc. The supplier says that will cost you £xyz (or $xyz or €xyz or…). If the consumer is happy with the cost the supplier, well, supplies. Oh if only it were that simple!

In practice the definition of abc are not really known AND, even if the definition of abc where known, the cost £xyz is not, AND even if the requirements are understand there is a reasonable chance that they will have to change, AND even if the costs are understood there is a reasonable chance that the costs will change AND… It would be easy to rant on. I'll emphasise these perils by putting (some of) them in a list:

  1. The requirements (abc) are not understood initially - a risk to the consumer

  2. The requirements (abc) are liable to change - a risk to the consumer

  3. The costs (xyz) are not fully understood - a risk to the supplier

  4. The costs (xyz) may change - a risk to the supplier

  5. We can't know if abc is what is needed until it is delivered an used - a risk to the consumer

  6. People delay because they are reluctant to sign of the definition of requirements - (a cost to both parties)

  7. It costs money to define (or redefine) the contract such that what is to be delivered is understood - a risk to both parties

This last point is interesting. Even though it is difficult to be precise in your definition of requirements, the consumer will not be happy parting with (or committing to part with) money unless they know what they are going to get. Equally the supplier will not be happy committing to deliver until they know what they are supposed to produce. So in order to be sure of what they are going to get/produce they define a contract. And then hope it is fulfilled.

So what is the alternative?

The problem, in my opinion, is that the requirements are part of the contract.

The solution is Feedback. This simple notion is so important I will say it again - and louder. Feedback!

Instead of defining requirements fully up front and incorporating them into a contract, the contract does not specify the requirements at all (or at least not very much). Instead it specifies the approach. An approach that gives both parties opportunities to adapt to the perils listed above (and others not listed) while protecting the interests of both parties. The work is then split into iterations. During each iteration, the consumer and supplier work together to find out how best to give value to the consumer for the money that will be spent during the next iteration. It is a very simple proposition but it seems to work very well.

Short iterations allow BOTH parties to get FEEDBACK and examine whether the requirements have been understood. If the requirements change, the change can be incorporated into the next iteration.

Since the contract defines the approach it doesn't have to change. But it can have a clause in which the consumer can terminate if value is not being provided or if they have enough value so far. This may not appeal to some suppliers but early drop out clauses could be introduced. Forgive me, I am acutely aware that I am not a lawyer and my contract speak is unlikely to be correct, but I hope you get a feel for how it could work.

In summary, the contract defines the approach, the requirements are defined by collaboration between the consumer and supplier, feedback is used to help both parties provide maximum value to the consumer.

And you never know everyone could be happy.

Responding to Change over Following a Plan

A project manager, when presented with this bi-attitude might say. "If you don't follow the plan how will you deliver?" or "If you don't follow the plan your project will deteriorate to anarchy!"

But there is a simple counter to this: "If you follow the plan how do make sure you are delivering what is needed?" Or put another way: "If you don't respond to change, how are you going to deliver what is needed? - You may deliver something but that something may not be needed anymore."

Change is a major obstacle to delivering what is needed - a major obstacle to providing value to the business. Many things can change during the life of a project:

  1. Requirements

  2. Costs

  3. Budget

  4. Staff

  5. Management

  6. Stock market

  7. Laws

  8. Resources

  9. Priorities

  10. Understanding of the problem.

  11. Sickness

I could easily list loads and loads more, anyone one of which could render the plan invalid.

Let me get one thing straight. Planning is not a bad thing. Planning is a good thing. It is such a good thing that you should do it all the time. The problem is sticking to the plan rather than adapting the plan, re-planning, in the face of change.

The morale:

If you are going to plan, plan often. That way it will be easy to make sure you are providing value to the business. If you are going to be planning often you need an approach to planning that is a low overhead to the project.

A First Amendment

I have now given my view on what matters in relation to the four bi-attitudes, what they mean and what I think the message is. Having done all that, there is so much more that could be said. For example, I have given no indication on how to provide a system in which you communicate your understanding of the system without creating unnecessary documentation. To do would take a book - fortunately such books exist, for example Fowler [Fowler]

These bi-attitudes do not live in isolation - rather they are closely related and interlinked.

Working Software is for me the most important. But the value of the working software diminishes if it doesn't quite do what the business would like, thus we must respond to change. To respond to change we must collaborate with the customer. And in doing all of this we have individuals interacting while being supported by processes and tools. Once again I am going to rephrase what I have said. Working Software is for me the most important in the list. For I have a value that both links them and sits above them. Under Individuals and Interactions I talked about "the value that is provided to the business by the interactions of the individuals"

Under working software I discussed the documentation and deliverables that really add value to the consumer.

In customer collaboration I promoted the idea of "the consumer and supplier working together to find out how best to give value to the consumer for the money that will be spent".

In responding to change I mentioned "obstacles to providing value to the business".

There is a common theme. For me the most important is providing (maximum) value to the consumer.

If I want to add this to the manifesto as an amendment I will have to say what I value it more than.

I value it more than "on time on budget".

Many organisations and process place emphasis on "On time on budget". But on time on budget is easy to fulfil. Give yourself lots of time and lots of budget, whittle away both writing articles and playing Quidditch and then provide a quality product that might be what the business wants. But equally it might not be what the business wants and it may well not provide maximum value for the money spent. The problem is that the definition on time or on budget can and should be allowed to change.

So I would like to propose a first amendment to the manifest. A fifth bi-attitude:

  • Providing value to the business over on time on budget

So what is your favourite?

References

[Beck] Beck, Kent with Cynthia Andres, Extreme Programming Explained: Embrace Change. Addison Wesley. 2004. ISBN: 0-321-27865-8

[Fowler] Fowler, Martin, Refactoring: Improving the Design of Existing Code. Addison Wesley. 1999. ISBN: 0-201-48567-2

Notes: agile development

More fields may be available via dynamicdata ..