Having software developed by an external vendor usually entails a degree of uncertainty, especially when done by a new partner. It is quite obvious that building trust often requires some time. The fact that the application will be unique and has not been tested by “crash test dummies” in the past is an additional risk factor. While all this is true, custom made solutions are sometimes a necessity – out-of-the box products simply won’t get the job done. The question is how the process of designing and developing the software can be a smooth ride for the client. Enters agile software development – here are five ways in which it takes the load of a client’s back.
1. Less time planning, more time working
Agile software development means the design phase does not involve meticulous planning of each detail of the final product. This draws from years of experience of software developers, who at some point realized that applications are often far too complex to be blueprinted. If the likelihood of failing to deliver the application exactly by the book is considerable, why not do it step by step? The adaptive planning, which is one of the pillars of agile software development, is based on precisely this conclusion.
In adaptive planning we can plan milestones, but there is a level of flexibility in the way they are realized (though deadlines remain fixed). Thus the specification does not have to be a thick book, and the work-plan is a more loose. In this way the teams can find their own way to the goals, which gives them the freedom to optimize their work.
2. Minimized risk
In a classic Project Management approach the plan has to be more or less precise. If you think of a physical structure, such as a skyscraper or a bridge, this is absolutely necessary. A simple miscalculation can cause a disaster; and once built, a structure cannot be easily changed. Software is different. Simple errors can usually be fixed relatively easily, and even a failure does not have to have catastrophic consequences. That’s why an iterative approach is possible – building, testing and correcting are ongoing. Those small steps mean that not only less planning is required, but also changes can be implemented within hours or days. As a result, the risk of creating a non-performing solution with a heavy price tag is low. Adaptation is the nature’s most powerful weapon.
3. Quick results
There are several ways in certain solutions and early results can put to a practical trial and improved if necessary. A proof of concept allows to check if a given solution is working, but it does not necessarily have to become a part of the final product. A minimal viable product is a functionally sufficient, yet restricted solution – it can be, however, a final one. A prototype can show how a certain aspect can be dealt with, but should not be a part of the final solution. Their unfinished status is their prime advantage – they are relatively quick and cheap to develop and give the client a taste of the direction it will or can take. It also gives a hint on how the cooperation with the vendor will look like in the longer run.
4. Good quality
Agile software development methods put a lot of emphasis on quality. Given the fact that things are happening relatively fast and without a great deal of planning, quality assurance mechanisms have been introduced. Among them are continuous integration (which entail merging copies of developers’ work a shared mainline every few hour or so), unit testing (testing of individual parts of code in small parts), pair programming (where two programmers work together to write and simultaneously review the code they are writing), functional test automation and code reviews.