Agile development may seem a distant topic to climate, but despite mounting evidence that the use of fossil fuels will damage our environment, humanity appears hard pressed to find an alternative. And even though environmentally friendly options have presented themselves, we have one foot firmly planted in the past. Working in the IT industry, it’s astounding how closely this resembles our current state of agile software development and testing.
Agile and inertia
Even though the industry identifies that a problem exists, and have the tools available to fix it, its dead set on sticking to “the way it was.” Vijay Anand penned an article exploring this topic and outlining what software development teams can do to maintain their current level of production, without sacrificing software quality.
Agile and a dynamic world
We are today living in a dynamic, ever-changing world where everything needs to be continuously agile and adaptive else one is set up for failure. Software development then remains no exception. More and more product development now seems to happen on Agile methodology where we develop working software with the underlying presumption that requirements can mostly never be frozen. And this seems to work well. One can see that product functionality continues to be delivered perfectly per customer requirements, given the frequent interactions via user stories or as I call "functional cradling" and JIT testing. So the part that is visible in the iceberg a.k.a functional defects seems to go down in production. But what about the underlying iceberg structure that is invisible - the code and how it integrates together in the final product?
Agile and our software quality issues
What more and more execs are realizing that the workable software now seems to contain more structural defects than ever before ,especially the ones that span across layers - ex: Architectural issues, proper framework use, complexity etc. As a result, this shift in defect ratio seem to move from typically 85:15 ( Functional Defects:Structural defects) to now up to 70 - 30 in some cases. Developers today are more pressured to deliver functionality than ever before, given the fluidity of the Agile environment and hence sometime have to make a choice on ignoring the underlying structural quality for the sake of delivering functionality. This then becomes - Technical debt that hounds the team later resulting in lot of rework - root cause analysis (RCA) , re-development , re-testing etc on problems that are more and more cryptic and involve multiple best-of-breed technologies ex: Team has to shut down and restart my weblogic server every 4 hrs in production. This some how seems analogous to how we are exploiting earth for natural resources today at the cost of starving our future generations tomorrow.
6 things Agile teams can do to improve structural quality
So what can teams do to deliver workable software that not only delivers the right functionality but the right structural quality?
- Publish a list of best practices that a team has to adhere to and respect from a structural quality perspective upfront to the development teams. Prevention and education is the first best best medicine.
- Plan for 10% of the sprint cycle time to fix structural issues that could come up as part of the product development life cycle
- Use an automated structural quality solution every sprint cycle to measure the application structural quality holistically and not just code quality - Resiliency, Performance, Security, Architectural compliance, maintainability etc
- Integrate any structural issues that come as part of the sprint cycle to a system like JIRA and move it to the product backlog for fix
- Provide developers the flexibility to prioritize and fix these structural issues based on how they execute their user stories for a release. This part thus doesn't constrict them totally but helps them manage their time better over a life cycle.
- Just before the product is ready to be shipped, a quality gate at that stage ensures that the product is complete not only from a functional quality standpoint but also from a structural quality perspective.
In fact, you should further refer to a recent webinar between Forrester - Wipro-CAST that discusses amongst others the trade-off between quality and speed in Agile development and how best-of-breed system integrators and partners are managing this facet. Learn how to integrate structural quality analysis into CI/CD pipelines.
Read the full story HERE!