by
Hugh McColl >> Tue, 8 May 2001 13:50:06 GMT
Of the principles listed in Hugh's reference, my favourite is "Business people and developers must work together daily throughout the project".
Yes, this can definitely be a significant contributer to the success of a project. However, before we look too closely at what might be expected from the customer, what about the way we, as software developers go about developing and delivering software? Topmost on the list of principles of 'Agile Software Development" are:
1. "OUR HIGHEST PRIORITY is to satisfy the customer through early and continuous delivery of valuable software."
2. "Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage."
Note the clear customer focus in these principles. Traditional (process centric) approaches to software development seldom deliver on either of those principles for complex projects.
Unfortunately it's also the hardest to achieve and the one which, when broken, will most likely cause your project to thrash.
I am not convinced that it is the hardest to achieve. Refer to Highsmiths' article on 'Retiring Lifecycle Dinosaurs' on the need to re-examine (process centric) software development practices and management in order to meet the challenges of the "high-speed, high-change environments of today". There are some difficult challenges there for any software development gorup or organisation with an 'optimising culture' to use Highsmith's terms.
Take, for example, a project to develop an enterprise-wide application for a highly bureaucratic organisation - let's say a Tertiary Education Institution.
Wink, wink, nudge, nudge, say no more.....
If the outfit doesn't have the money or the inclination to provide dedicated staff to the project, or if the staff are not empowered to make decisions without ratification from their bureaucratic masters, then all the use-cases, methodologies, life-cycles and manifestos in the world won't save you.
Save you from what? Failure? Perhaps you are expecting too much? None of these items is a 'silver bullet'
The references in my initial post were selected to favour 'Low Ceremony' (or light methods) where the focus is on people and interaction, results (delivering working software), *minimal methods* and maximum collaboration. Of significance, is that the 'low ceremony' camp deliberately devalues 'process centric' methods and artifacts such as use-cases that don't significantly contribute to the botom line:
delivering working software, on time to satisfy users' *continually changing requirements*
You listed 'manifestos' in your list of things that won't save you from the bogie man. The 'Agile Software' groups manifesto is a collection of values that they believe leads to better ways to develop software. The group values:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Much more important is to educate your customer on what he/she is buying when he/she signs a software development contract.
Well yes, the customer clearly needs to understand what they are buying in to. However, if you are willing to 'embrace change' neither you nor the customer will know exaclty what they are going to get at the end of a project (cos' it's all gonna change). How many software projects involving significant new development have you worked on where the customer knows what they want before you've delivered something and where the users' requirements don't change during development? It is of course possible to take a hard-line approach and not allow deviation from intitial requirements as specified in some form of contract, but then the customer is not going to be satisfied.
I would like to finish up with a motto I saw on an XP badge that represents an admirable target in the context of this discussion:
eXtreme Programming - "Developing at the speed of change"