Agile Software Development
Trends No Comments »Application development is undergoing a metamorphosis: on the technical side developers have never had such a comprehensive choice of tools to practice their craft, but the management and skills problems are greater than they have ever been. Less than 20% of systems are fully tested before they go live, resulting in the business being exposed to unnecessary risk; in part this is a management problem since testing tools are readily available – but the question is how best to use these tools. Development management techniques need to keep pace with the complexity and technological sophistication of the systems demanded by business. Agile Software Development (ASD or Agile) is one solution out of this dilemma.
Agile comprises a number of distinctive development methodologies that share a common philosophy and set of principles, as defined by the Agile Manifesto (see http://www.agilealliance.com/). Some of these methodologies, like eXtreme Programming (XP), have been around for a number of years and have built up momentum and experience in the software community. It is easy to get into semantic muddles when attempting to define exactly what the Agile way is and is not, but what matters is the detail, not the label. So the best approach to understanding Agile is to examine examples of the actual methodologies, such as Adaptive Software Development, Crystal, Lean Development, Scrum, and XP.
The Agile approach can be seen as an evolution of Rapid Application Development (RAD), which introduced concepts such as prioritising requirements into sets of must haves, should haves, could haves and will not haves (leading to the acronym MoSCoW). Another concept used is time boxing, a military concept of deferring a decision in the field until the last moment (the boundary of the time box), allowing maximum intelligence to be gathered before commitment. These RAD concepts transferred to Agile methodologies, but Agile introduced not just technical but - importantly - sociological improvements to development practice.
The sociological changes did away with the idea that programming was a black art that was separate from the business, rather the profile of the Agile programmer was a person with good communication skills, and as socially skilled in interacting with colleagues as other employees in the business. Social skills have always ranked high in business roles but to expect it in IT was novel. Agile has also been radical because it subverted well established principles such as: “plan deep and early”, and “build in future extensibility”. Both appear reasonable but both are typically problematic for software: planning deep and early is a waste of resources if requirements are known to change in the lifetime of the project – better to start on a known requirement and build around that. Again, building in future extensibility is another waste of resources because of requirements changes, rather meeting schedules on time or early is preferable to building latent features that are not going to be used immediately. Agile software development has now entered the mainstream, but the next step and challenge is to adapt management processes to work with Agile.
Reasons for adopting an Agile approach:
- Agile software practices can accelerate application development.
- The Agile approach promotes team discussion, understanding, and knowledge transfer over paperwork.
- The Agile way is designed to cope with the consequences of fast-changing project requirements.
- Agile development is part of the drive for quality, embracing Test-Driven Development.
- The business case phase can benefit from an Agile analysis.
- Agile is now mainstream for small to medium scale projects, with experience growing for large-scale projects.