Agile methodology is an iterative approach typically used in software development as an alternative to the traditional project management. The approach emphasises on building the software incrementally from the beginning instead of delivering everything at the end, and solutions and requirements evolve sequentially. Product is broken down into incremental builds which are provided in iterations. Each iteration lasts typically almost one to three weeks, and requires cross functional teams to work together in different areas such as requirement analysis, planning, coding and testing. After each iteration, a working software build is delivered and working product is shown to all the important stakeholders, including customers. The builds are incremental and the final build consists of all the required features.
In agile model, each project is handled differently, and methods are tailored so that they best suit the requirements of the project. Some of the most popular agile methods include
• Rational Unified Process
• Extreme Programming
• Crystal Clear
• Feature Driven Development
• Adaptive Software Development
• Dynamic Systems Development Method (DSDM)
Pros of Agile
In agile methodology, a common assumption is that the needs and requirements of the end users are dynamic, and hence, based on the continuous feedback, changes are discussed and features are added, removed or modified accordingly. There is frequent delivery of software, and a lot of emphasis is placed on the face-to-face interactions across teams. There is daily coordination between the developers and business personnel to achieve good design and technical excellence. This makes it much faster to adapt easily and regularly to the changing circumstances, even if these changes are much later in the software lifecycle. As the frequency of new increments is high, the changes can be implemented with minimal cost and time.
Compared with the traditional waterfall approach, stakeholders and developers in agile get more options and time, reducing the risk of reaching a sudden standstill. This also ensures that the end product matches with the customer requirements in a best possible way.
Agile is a very realistic approach which is suitable for the dynamic requirements, promotes cross-training and teamwork, easy to manage, requires little planning and provides flexibility to the developers.
This model is not suitable for handling complex dependencies. As there is minimum document generation, there is high individual dependency. Lack of documentation also makes the transfer of technology quite challenging. There is also additional risk of sustainability, extensibility and maintainability.
For larger projects, it may be difficult to assess the requirements at the beginning of the SDLC (software development life cycle). Additionally, agile relies heavily on customer interaction and if they are not sure about their exact requirements, the entire team can head in a wrong direction and project can get completely off track. It can also be challenging for the new employees and programmers to take the required decision during the development process.
Measuring agile success
In agile methodology, it is essential to track business metrics, as well as agile metrics. Business metrics help analyse if the solution is meeting the requirements, and agile metrics help in the analysis of the development process. Sound agile metrics help reduce confusion, and can motive team’s progress through the development cycle.
State of Agile Survey provides reports that give the software professionals a deep insight into latest agile trends, lessons learned and best practices. This helps organisations plan for successful agile transformations. In this Survey, 58% of the participating respondents confirmed that they used on-time delivery as a measure of the success of their agile initiative. The measure of on-time is based on the delivery expectations, and the measure of delivery can be assessed from burndown or burnup.
Product quality is another metric to measure agile initiative. There are multiple ways to measure quality, including revenue growth, customer satisfaction, and different technical aspects .The focus is on the speed and built-in quality of the working software. Testing and inspection are integral part of the complete development lifecycle, and there is constant monitoring of build and code health along with the testing trends.
Another metric for measuring agile success is the user or customer satisfaction. The outcome can be measured in terms of sales figures, net promoter score, usage statistics etc. Agile success can also be measured in terms of business value. If there is a contract for work completion, measuring business value becomes quite explicit. However, if market inputs drive the decisions, measuring business value become speculative or prospective.
Some companies also measure their agile success in terms of project visibility. To have transparency requires that the progress at multiple dimensions should be made visible to all the stakeholders. Metrics showing the targeted plan with the overall progress help stakeholders get a better insight.
Velocity trend is the metric used to assess predictability, and it shows the average pace of the work. Wildly fluctuating velocity reflects changing teams, or unpredictable work.
It is evident that a single metric cannot be used to assess the agile success. Each organisation is different, and every software development project is different. Teams need to figure out the best ways to pilot, extend and finally excel at Agile. This methodology requires full participation from all those involved as it is not a quick fix or a fleeting fad.