It’s not a secret that software development is a long and labor-intensive process which requires a lot of time and efforts, not speaking about financial and material costs.
If you deal with IT, you know that very often a lot of misunderstandings regarding the requirements to the software product under development appear during the collaboration between a client and developers. Surely, both sides want the software to work properly, but sometimes it’s impossible to do so.
This is where agile methodology can help you. The principles of this methodology were published in the early 2000-ies in the “Manifesto for Agile Software Development” in Utah. Since then agile principles have been applied in the development processes all around the world. Briefly, they are the following:
- The development process is divided into short cycles (iterations);
- At the end of each iteration a client gets a meaningful part of an application.
There’re certain reasons why agile appeared. Let’s take a closer look at them.
A client can’t formulate clear requirements
It’s a most common reason. Very often, at the beginning of a project a client only has a pretty vague idea what the app or program should do, but he has no idea about its full functionality. But even if this is not the case, the project group who is going to develop a product can have a different view (generally, a more technical one) on how the functionality of the software should be realized.
One of the agile principles says that you need to use prototypes and provide product releases as often as possible. Thus, you’ll be able to see if the changes should be made to the current project to make it more competitive. At the same time, a client will manage to make amendments as to the functionality of the project at any stage of the development.
A developer needs to apply newest technologies
With the constant development of technologies and competition among the development companies being high, it’s not uncommon to introduce new ways of development for the current project to gain a competitive edge over the competitors. Agile provides you with the opportunity to apply new technologies at any development stage without risking the whole project. It allows testing such releases to see if new technologies applied work for the project. Alternatively, such beta-releases can be published for users to collect a feedback on the software.
Disagreement between product owner and developers
When estimating the project budget a development company has to take into consideration the elaboration process, which includes creating detailed requirements and specifications, and possible risks connected with the possible changes in the project during development process. A product owner will have to pay for all these documents which in many cases prove to be unnecessary.
The main agile principle is that cooperation with a client is much more important than contractual obligations. Thus, agile methods tend to cut down the amount of documentation. It allows a product owner to pay only for the final result and not for paper work. It also should be mentioned, that requirements from the product owners are also welcomed, though in a simplified form.
In my opinion, agile methodology is a simple and sensible way for developing software. But at the same time not any company (and their development teams) is ready to apply agile. A company needs not only to introduce a new development process, but also find people who will be able to stick to it.