The Agile Manifesto consists of four foundation values. These are the first building blocks of how to proceed with Agile. These values are the ground rules to developing and delivering high-quality, working software. I offer my insight into each of them, drawn from my experience of using the framework.
1. Individuals and Interactions Over Processes and Tools
People are usually the most expensive asset and cost in a business. In a software development team it is vital you have good people who produce high-quality code. It is also important that you invest in them, giving them the tools and environment to succeed. They will repay you with passion, commitment and demonstrate their intelligence to help you solve your business challenges.
Good software teams are the most passionate and responsive people I have come across. The nature of software developers is to logically solve a problem. Encourage this and they will respond to business needs and drive the development process. If the process or the tools drive development, the team is less responsive to change and less likely to meet customer needs.
If communication in a team is fluid and happens when a need arises, you will see exceptional results. Discussions that are restricted to defined, scheduled meetings will hamper progress and stifle quality development work.
2. Working Software Over Comprehensive Documentation
Historically, software development has been documentation heavy. Enormous amounts of time were spent on documenting the product for development and ultimate delivery. Technical specifications, technical requirements, interface design documents, test plans, documentation plans, were all created. Production of these items caused long delays in development and let’s face it, is not the best use of a developer’s time.
Then perhaps the biggest insult to this process was the fact that this documentation was rarely referred to. Developers prefer to get elbow deep in the code to fix a problem than wade through reams of documents.
Agile does not eliminate documentation. It streamlines it to give the developer what is needed to do the work without getting bogged down in minutiae. In Agile, requirements are documented as user stories which contain sufficient details of the criteria for acceptance. This is enough for a software developer to begin the task of building a new function.
The Agile Manifesto values documentation, but it values working software more.
3. Customer Collaboration Over Contract Negotiation
Traditionally, negotiation is the period when the customer and the product manager work out the details of a delivery. They target points along the way where the details may be renegotiated or refined. With development frameworks such as Waterfall, customers negotiate the requirements for the product, often in great detail, prior to any work starting. The customer is involved before development begins and after it was completed, but not during the process.
The Agile Manifesto describes a customer who collaborates with the development process. The customer is engaged throughout, making it far easier for development to meet their needs. Agile may include the customer being shown demos from time to time, inviting comments for iteration. Alternatively, a project could have an end-user as a daily part of the team ensuring the product meets the business needs of the customer.
This Agile method ensures rapid change and improvement to meet business and customer requirements. It does away with the “Ta-dah!” moment after 6 months of development. Often in this situation, alterations to customer requirements mean that a proportion of the features are already out of date.
4. Responding to Change Over Following a Plan
Change was often regarded as an expense in Software development and to be avoided. The intention was to develop detailed, elaborate plans, with a defined set of features. Each feature tended to have the same priority as everything else. This lead to a large number of dependencies requiring delivery in a certain order, so that the team can work on the next piece of the puzzle.
Agile brings short iterations, which means priorities can be shifted. The next iteration can easily include new features to suit the requirements of the customer. Agile accepts that change is necessary. It improves a project and provides additional value.
The Agile Manifesto also describes 12 supporting principles to aid software development. Read about principles 1-4