In the past, because software development requirements tended to be heavily specified (i.e. written down), it was easier for developers in distant time-zones to know what exactly they needed to do next, despite having little real-time access to the client, who was asleep when they were awake. Today, traditional models for software development are highly questioned in their effectiveness. Studies such as those produced by the Standish Group (The Chaos Report) show that a significant percentage (sometimes more than 45%) of projects that are attempted under BRUF deliver highly disappointing results, both in terms of cost, time to market and functionality.
Most companies now approach software development under agile methodologies, which seek to be adaptive rather than predictive (see more on the advantages of agile methodologies on our next post). Agile software development starts from the premise that software is an "idea constantly taking form". Therefore, changes will always ensue during the development process. Instead of preventing change or trying to "outguess change from the get-go", agile embraces smart change, and produces a process that incorporates improvements and modifications in an organized and risk-controlled manner. In general, change can be brought about by different factors, including:
1) the market changes so the software has to change;
2) changes in the competitor's business offerings require changes in the software;
3) new ideas arise in the user's mind that justify changing the software;
4) changes in undergirding technology make new business models possible, therefore justifying changing the software.
To manage change and promote adaptability, agile software development seeks to replace formal documentation about requirements–which takes a lot of time to write—for constant conversations about requirements. Therefore, in agile SCRUM, say, the developers constantly interact with the client's user groups to understand that nitty gritty of a functionality that was described to them at a high-level, rather than demanding air-tight documentation exist to describe the functionality in high detail. Because conversations are not only faster, but provide for a give and take of ideas and concepts, the software that results in not only written in record time, but is also much richer and smarter in its functionality. Serious empirical compilation show how Agile software development can produce the same code with at least 30% less cost, and in at least 30 to 40% less time than traditional approaches.
About Perficient Latin America: Perficient Latin America provides custom software development services as well as team augmentation for North and Latin America. Headquartered in Colombia with offices in Mexico and the US, Perficient Latin America specializes in Agile software projects combined with high quality and process maturity.