Currently, Most of the time an organization introduces agile into a development team to deliver better and quicker software. That’s faire only when the development team and QA team gets ample support from the management. In a traditional software development like waterfall, the software or the product will be deployed after it passes through all four steps like Design, Development, Integration and testing. After it comes out of the final step, it will be give to the customer for beta testing. If the software works fine then it’s well and good for the client. If it is not working as the customer would have expected, then that’s going to be staring point of the problem. At the final stage, you will be asked to fix the bug whichever the customer reports. Some bugs are easy to fix because they are at the top level. Some catastrophic bugs are really hard to fix if the root cause lies in the first gate of your process, which is Design. Also looking from business perspective it will be always easy to change at the design stage rather than at some other stage.
If any requirement change arrives at the design stage it’s going to cost less for the company to make the necessary changes. The cost is directly proportional to the stage at which the requirement change arrives. Apart from cost, what is lost is time and effort spent in gathering information prior to the design stages. In a traditional waterfall, lots of effort will be put in documenting stuffs at each stage. All these efforts are going to trash if a huge requirement change steps into the project. Normally the developers and the project manager curse the client for making such changes at the later stage of the project. But in a fast changing technological world, user needs are subjected to huge change.
If there are requirement changes at the end of the project, its always all going to be waste, your energy, meeting time and the documentation that you did in the very beginning of the project. When the markets were not so competitive it was always a habit of making a detailed design and then do the rest. If you follow the same scenario, I guess by the time your product steps into market, I guess you will be the last person with minimum features in your product. To survive in current scenario, I guess everything needs to more Agile.
Agile is a new way to develop a product. It’s a new method to deliver the most important thing to the user in rapid manner. It can also be defined as a new methodology to adapt to rapid customer changes. In an agile software development large requirement are developed and delivered in pieces. The large requirements are broken down into pieces and are delivered as output of small iterations or sprint. In an Agile environment the customer will realize the business value after few iterations. Remember Agile changes the way in which the product is shipped to the market and it does not do any harm in requirements flow.
It is better to keep a short iteration like 2 weeks. I guess 2 weeks time is enough to develop, test and deliver. Agile project have more transparency to the project. Nothing is hidden. All in the management can see the progress through some kind of visible charts or truth reflectors. Also as said earlier, it will be always quick to respond to market changes and requirements. When some new high level requirement steps in it can always taken into account in a new sprint and things can be developed and delivered quickly. Since Agile is an inspect and adapt methodology, it can be said that Agile if followed properly, it is a methodology which will teach how not to develop a software in a rapidly evolving market.