"Having the faculty of quick motion in the limbs; apt or ready to move; nimble; active;" ---- Wiktionary.org
"moving quickly and lightly;mentally quick;" ---- Google Dictionary
In software project management, more and more teams start to practice Agile in the project execution, Scrum, XP, FDD and etc. But, what's the Agile mean when we say we are using Agile process? Is it mean that the process will be faster than traditional way with higher productivity? Many of new practitioners will put equal mark between Agile and Fast. Obviously there are some misunderstandings.
So, let's go through Agile Manifesto and guide principles firstly.
- Individuals and Interactions over Processes and Tools
- Working Software over Comprehensive Documentation
- Customer Collaboration over Contract Negotiation
- Responding to Change over Following a Plan
- Welcome changing requirements
- Deliver working software frequently
- Business people and developers must work together
- Build projects around motivated individuals
- Face-to-face conversation
- Working software is the primary measure of progress
- Sustainable development
- Continuous attention to technical excellence and good design
- Simplicity is essential
- Self-organizing teams
- Regularly review and adjustment
You can find words like "Welcome changing, frequently, excellence" and etc. But you cannot find any words mentioned faster. So, what's Agile meaning? From my personal view of point, here it is.
- Deliver business value to customer soon
- Respond to changes soon
The core value of Agile is deliver the high-quality workable software to customer with frequent way, from the first day. Customer may get a shippable software by the end of each iteration which includes the features that required by them had highest priority and highest business value. If there are any change requests need to be reflect to the system, customers may regulate the product backlog and ask team to implement it in the new iteration immediately. The change is addressed and implemented very soon.
As the traditional way, the customer can see the working software at the very late phases of the lifecycle. Any request changes will be addressed by request control process, it needs to be analyzed, negotiated and takes time to reflect to the system. Compare with Agile process, it is not "Agile" :-)
So, Agile process doesn't mean faster, doesn't mean less of effort. Although, lots of succeed Agile team do made software with very high quality as well as very high productivity, but the core value is always to ship excellent software. It can't guarantee that the project will be completed with less of cost or effort. But we do guarantee that the team follow Agile practice will provide high quality and value software to the client. We also guarantee that there will be very few of waste in the project execution.