The pressure on software delivery leaders is palpable. Innovation is the competitive currency in decelerating markets, while legislation such as DORA and fines for poor business resilience reflect the regulatory scrutiny of software’s role in infrastructure and lives.
Continuous improvement in enterprise software delivery is not a ‘nice-to-have’; its alternative is stagnation, negative risk and existential threat to the enterprise. However, despite all the fine-tuning and hard decisions, enterprise software delivery’s productivity and quality are fast declining.
Even more surprising: A lack of investment is not the problem. Investment has fueled the problems it sought to solve.
DevOps Imbalances
To unpack this, we must consider where enterprises have focused investment in productivity. Let’s start with the DevOps infinity loop:
Often mistaken for a solution in itself (rather than a conceptualization of how software delivery should flow), enterprises have not invested proportionately in DevOps activities. They have focused on developer productivity.
Let’s consider the evolution of software developer productivity tools — while code complete, package managers and build automation enabled developers to write and package code faster than ever, co-pilots are now generating code. Meanwhile, the most common tools among BAs and testers hark to the 1980s word processors and spreadsheets.
Software Delivery’s Inner and Software Development’s Outer Loops
This imbalanced investment in productivity has siloed development into what Jyoti Bansal and I are calling software delivery’s ‘inner loop’:
The inner loop is the world of software developers, producing and maintaining code. With today’s accelerators and productivity tools, developers have the potential to deliver faster than ever.
However, enterprise software delivery extends far beyond development. The inner loop exists within an ecosystem of symbiotically related functions.
The outer loop surrounds the development. It drives ideation, feeds the inner loop with key assets and ensures that developed software is robust, reliable and ready for real-world use. The outer loop is the domain of the business analyst, product owner, tester and data engineer, who gather and refine requirements while integrating, testing, deploying and maintaining software.
Every inner and outer loop activity is interdependent. The quality and pace of delivery hinges on the productivity and efficacy of every part. Yet, enterprises have for a long time invested disproportionately in inner loop productivity. Battling a shared set of pain points, the outer loop has drifted from the inner loop.
Symptoms of Inner/Outer Loop Imbalance
The imbalance between potential productivity in the inner and outer loop is responsible for the concerns that I hear from enterprise software leaders today:
- Slowing productivity
- Suboptimal quality
- High talent turnover
These executive-level worries are the culmination of pain points felt ‘on the ground’, in outer loop teams:
‘Toil’, Manual Maintenance and Technical Debt
With unequal accelerators and productivity tools, a ‘quick’ and ‘simple’ change in the inner loop generates disproportionately greater outer loop labor.
A myriad of outer loop artifacts must be created and maintained, as code changes ripple across systems, corresponding to numerous requirements documents, test cases, data, automation and more.
Then there is the raft of outer loop processes to perform, from diverse forms of quality engineering to requirements refinement and the provisioning of data and environments.
Outer loop work is rarely formally traceable to inner loop changes or business requirements. Therefore, outer loop practitioners must perform this mammoth workload manually, with limited risk-based prioritization. This is an impossible task, creating out-of-date artifacts, technical debt and unfinished processes.
The lack of formal traceability within the outer loop and to the inner loop further prevents accurate measuring of outer loop efforts. This leads to gaps and an inability to say when testing is ‘done’ or when requirements have accurately captured a change request. There is no formal measure of release readiness, as outer loop gaps threaten release quality.
Knowledge Debt, Rework and a ‘Hero Culture’
As inner and outer loop teams drift, silos emerge. Knowledge retreats into people’s heads as artefacts grow increasingly out-of-date. Knowledge gaps and debt emerge as people leave the enterprise.
This creates uncertainty, miscommunication and rework. A ‘hero culture’ further emerges, as over-worked individuals fill gaps in processes, artifacts and knowledge. These individuals inevitably grow tired and seek opportunities elsewhere, further exacerbating outer loop challenges.
False Friends and Silver Bullets
Hiring heroes to toil harder will not solve software delivery’s productivity and quality problems, as the relationship between the inner and outer loop remains broken. Nor will a ‘hands to the pump’ mentality stem the tide of outer loop debt, bottlenecks and uncertainty.
AI will not provide a silver bullet, either. In fact, as Jyoti Bansal points out, AI acceleration in the inner loop will exacerbate the issue.
The Only Solution
The only remedy to imbalanced investment in the inner loop is its inverse: Outer loop investment.
Yet, continuous improvement in the outer loop cannot focus on one area over others, as this will create new imbalances. The investment must be holistic, hiring individuals with skills such as product management, integration and quality engineering. Moreover, building diverse teams can improve every facet of delivery.
Enterprises must similarly avoid treating or measuring teams in silos. They must improve the relationships that exist across ecosystems, investing in communication, collaboration and traceability. You should measure an ecosystem’s overall output — its ‘product’, not individual teams. Concepts such as flow and value streams are valuable for optimizing ecosystem health.
Investment in outer loop processes and tools should similarly prioritize the overall flow. Current practices range from shifting quality left and creating ‘living documentation’ in ubiquitous languages to artifact generation, continuous quality and on demand data provisioning.
Go Slow to Go Fast
There are no quick fixes to deep-set, fundamental challenges. To rebalance ecosystems, enterprises must ‘go slow to go fast’. Painkillers that mask symptoms only protract the road to catastrophe.
DevOps’ split into inner and outer loops has created a negative feedback loop. Fortunately, the inverse is also true: Investing in outer loop productivity delivers increasingly visible results, as the imbalance is redressed.
By nurturing a healthy ecosystem, every constituent stakeholder will grow increasingly productive, and happy with the software they produce and the way they produce it.