“Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.”Manifesto for Agile Software Development, 2001
In recent years, Agile methodology has become increasingly popular in the software industry. The reason is simple— the Agile approach results in increased customer satisfaction.
As a consequence, this increases the competitiveness of the development company, and both sides win. As the software market continues to develop and software products and technologies keep expanding into more web and mobile applications, there is a rapidly increasing demand for functionality and quality in developed software, time-to-market and speed of response to customer’s needs.
These days customer of software development services can no longer afford himself to ignore the question of how organized the production process is in the development company so that they can know what to expect and when.
So, what does “Agile” mean in software development? Is this just another buzzword, or a real chance to meet these new challenges? How it can affect the customer’s business and their ROI? Let’s examine this in more detail.
Agile methodology is primarily about software development in a world of changing business needs and, consequently, the changing requirements of the product in development.
For example, in the field of financial software this trend is especially evident. Exchanges change the rules for calculating their fees, introduce new trading instruments and supply increasingly diverse analytical data. Regulators adjust various regulations imposed on market participants, introducing new constraints and modifying existing ones. Brokerages and banks provide customers with new services for managing their assets, trading on exchanges and the FOREX market.
Under such circumstances, the expectations of the customer and his vision of the software product can change dramatically during the development of the project. Similarly, the software requirements are influenced by the very IT industry itself. The emergence of new mobile devices and tablets; an increase in the popularity of social networks; the growing capabilities of hardware and networks — these advances must all be met with an appropriate response in the software.
The traditional «Waterfall» model of software development that arose in past years involves the sequential execution of the individual phases of the project. There is a linear path of development from start to finish, beginning with an analysis of the project’s requirements. Once all requirements are established and confirmed by customer, technical solutions are developed, followed by the actual writing of code. Finally the development concludes with comprehensive testing, documentation and the delivery of the completed software product. Obviously, in this approach it is very difficult—or even impossible—to change individual requirements during late stages of the project.
The situation is comparable to building a house. When the foundation is laid and the walls built, you cannot change the floor plan, or make any other serious modifications to the design without having to start over again from scratch. In fact, after agreeing on the building design, the client is basically eliminated from the process, and simply gets handed the keys to the finished house that they ordered once it is done. It is difficult to come up with any viable alternative in the building industry, but in the software industry other approaches are feasible.
The Agile approach offers an alternative that allows one to adapt the model of software development to the reality of rapidly changing business needs. The basic principles of Agile development from the perspective of the customer are as follows:
- The project is accomplished in short iterations ranging from a couple of weeks to a couple of months. At the end of each iteration the customer is shown the result achieved so that they can gauge the progress made and evaluate the results against their expectations.
- At any time the customer has the opportunity to add or remove something by changing the requirements of the developed product. Also, if customer’s vision of certain parts of the system has not yet been formed, it can be refined later – even during the development process.
- The result of each iteration is always working software (with the possible exception of certain phases at the beginning of the project). At any time the customer can start using the product within the range of features that have been implemented by that time.
A full list of agile principles can be found at agilemanifesto.org.
To use the house building analogy again, if it was possible to construct a home using the Agile approach, one could go into the kitchen on the second floor of the house under construction and look out the window, even before all the walls were installed on the ground level. If you didn’t like the view from the window, then next week the kitchen could be moved to the first floor. You could even start to cook in your new kitchen, and store your things in the attic while the other rooms were having the doors installed, and the walls were still being painted—you would not interfere with anything, and nothing would impede you.
Agile development minimizes the costs of making changes in the product’s vision, providing the customer with the option of eliminating excessive features, as well as adding on previously overlooked features on the fly. Plus, early versions of the software can be turned to commercial use before all features are completed. But what does the customer have to pay for such an efficient and transparent process? The answer is simple: customers invest their time. They must be ready to talk with developers throughout the project, answer questions, clarify requirements, to evaluate the intermediate results of the project and provide feedback. Developers, in turn, provide a more rapid and efficient response to changing business.
As opposed to Agile, with the classic Waterfall model the results of the software project only become visible much later on in the final stages of the project. Moreover, late changes are much more difficult to introduce with Waterfall and, consequently, require more time and are significantly more expensive. The important thing here is that the customer pays these extra expenses – either as additional hours under the contract clauses of “time and materials”, or as extra work in the scheme of “fixed price”.
If two or more software companies are offering to develop a similar product, it is important to clarify the development process that will be used before you sign a contract. At Devexperts, we use Agile methodologies in all of our projects. Our experience has proven that this is the best choice – and in relation to financial software domain – the only practical one.