Why Agile is Fragile
Agile development is bringing exciting change to software delivery, IT organizations, and end users. Reorganizing development toward frequent release cycles brings new features and services to market faster. Agile allows delivery teams to be more productive and creative. They can rapidly meet the needs of customers and business units instead of creating frustrating delays of rigid process and approvals. Agile is a crucial factor for innovation, especially when paired with the extended practices of DevOps and continuous delivery.
Yet there’s a downside: Agile can result in a quality deterioration. Rapid-fire development entails minimal documentation and an emphasis on speed over process and planning. In the rush to deliver results and please customers, Agile teams are prone to overlooking or even skipping critical quality measures such as documentation, testing, and collaboration. When they do, engineering organizations introduce needless errors and release software that’s not ready for use. The result is customer dissatisfaction, embarrassment and worse, customer churn leading to revenue losses and budget cuts. For internal IT, business users may lose trust in IT, or worse, contract with unsanctioned cloud or SaaS providers to meet their needs.
There’s got to be a balance between speed and quality when it comes to Agile. Here’s a look at a few ways to get started:
- Iterative goal setting: Since Agile is all about frequent iterations and releases, organizations must adapt high-level processes, such as goal-setting, to this new schedule. Iterative goal-setting is critical to avoid a mismatch between what developers think is great and what users and business people actually want -- which can be a moving target. Daily standup meetings are a useful form for iterative goal discussions. Beyond simple status updates, these regular meetings allow product owners, developers, and testers to discuss the status of current goals and update plans with any new goals. Instead of creating the big hairy audacious goal at the beginning of a software development project -- one which may never be met or is no longer relevant months later -- development teams should set small goals in much smaller timeframes. This approach helps companies do Agile with far less risk.
- Collaboration: Software development organizations have, in the past, maintained isolated processes and phases during development. Lack of communication between different groups and teams within engineering as well as with business stakeholders created gaps in functionality and frustrating delays. Once code was released, a major rewrite could become necessary when the app didn’t meet the needs of the business and/or customer. Today those problems of isolation are disappearing as companies move away from Waterfall development. Yet Agile’s frequent release cycles require that people interact on a daily basis. Having a forum for a daily exchange allows everyone to share status, avoiding unpleasant surprises at the end of the project. Developers must frequently push out updates to business stakeholders, who should respond in turn with rapid feedback. This helps everyone stay on the same page, work efficiently, and remain flexible to shifting requirements. Stakeholders are also on the line to keep developers and testers aware of the most critical features for business success and customer satisfaction. Today, tools are available to automate the review and feedback process between developers and business people.
- Software management for Agile: Most application outages are tied to breakdowns in software management. Agile is not just about automating every step of development from mapping requirements to development, testing, and releasing code. Beyond technology, people and process are equal factors that make up a sound software management practice. In Agile, this means individual team members need to be adaptable, as software needs change. When it comes to tools, many organizations are moving away from large packaged solutions and acquiring newer, best-of-breed commercial and open source solutions to manage distinct functions such as application lifecycle management (ALM), build, automation, project management, and testing. Many of these newer apps and services for ALM, such as Jira and Rally, have been designed specifically for Agile. They allow for rapid iterations yet provide the necessary controls and means for collaboration to minimize issues. Choosing a best-of-breed approach allows flexibility in tool selection although integrations between tools is optimal for best results. Integrated tools give all team members easy and real-time visibility on deliverables, timelines, new features and bugs that have been discovered. The more information that’s available, the easier it is to drive quality into the process.
By taking a holistic approach to Agile and lean software development, companies can help their companies reduce time-to-market yet not introduce quality issues for the sake of speed. Striking the right balance is an endeavor worth pursuing: big mistakes on products or services can turn customers away forever.
About the Author:
Kyle Cochran is vice president of product at QASymphony. He has more than 15 years of product management and strategy experience in mobile, cloud, software-as-a-service, and traditional client-server software development environments. Follow him on Twitter at @QASymphony or @kcochran.