In my years in software development, I have experienced many projects that have encountered challenges on keeping with its schedule and meeting its deadline.
One major reason would be the constant change of requirements.
There is this saying:
“In life, as well as in software development, the only thing that is constant is change.”
You may ask – Why are the requirements always changing? The answer to that would be the following:
- The clients or users are not sure what they want.
- They have difficulty stating all they want and know.
- Many details of what they want will only be revealed during development.
- The details are overwhelmingly complex for people.
- As they see the product develop, they change their minds.
- External forces (such as a competitor’s product or service) lead to changes or enhancements in requests.
Luckily there were a group of experts in the industry who created a revolutionary way to do software development. This revolutionary methodology they have called as “Agile”.
Agile development methods apply timeboxed iterative and evolutionary development, adaptive planning, promote evolutionary delivery, and include other values and practices that encourage agility—rapid and flexible response to change.
If agile methods have a motto, it is embrace change. If agile methods have a strategic point, it is maneuverability.
To understand it fully there is an Agile Manifesto that can be found in http://agilemanifesto.org/
The Agile Manifesto is based on twelve principles:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
There is much to learn with regards to Agile and how to implement it. And this post is not meant to be a comprehensive guide in learning agile but an introductory note that there is already an existing method that would solve the common problem of changing requirements in software development.
Today when I encounter requirement change in a project, I do not complain anymore. I instead adapt to it.
Now is the time to Adapt to the changing world! Start being Agile!