Assistant Senior Lecturer, Blekinge Institute of Technology
Costs and benefits of continuous everything
Software is a critical component of most products, services, manufacturing processes, and back-office functions. The ability to continuously improve software is crucial for organizations to respond to market opportunities swiftly and remain competitive. Software is also becoming increasingly more complex. Organizations seek to improve the efficiency of software engineering to enable further growth without the penalty of increased overhead and loss of flexibility.
Continuous software engineering is a paradigm aiming to streamline software engineering by delivering software frequently and in small increments. In an idealized scenario, an automated pipeline picks up the latest source code changes, perform integration and verification steps, and delivers the latest changes to the end-users instantly. Once end-users start using the software, feedback, and telemetry are relayed back to the software vendor to guide the next iteration. Such anapproach minimizes the release pain for the vendor, makes the adoption of new features smoother for the end-users, and generates focused data/feedback to steer product decisions. The faster an organization can release new software and receive feedback, the more precise and swift responses to market opportunities it can provide.
Retrofitting an organization with a continuous engineering pipeline is a major undertaking requiring restructuring the whole organization. To steer the adoption, organizations should start with detailing their goals and exploring the degrees of freedom to make tradeoffs. For instance, achieving faster release cadence may imply taking away the control from customers of when to upgrade. To what extent expanding frame of control is feasible, depends on the business model, customer relationships, technology, and many other parameters.
Furthermore, cost/benefit perspectives need to be considered when adopting new practices. Organizations should calculate whether the gains of adopting, e.g. end-to-end automation outweigh the investments. For instance, implementing and maintaining an automated test suite could be more expensive overall. However, the cost per testing a release could drop if the cadence is high enough. Thus, investments in test automation make sense if the software vendor realizes the ability to release software more often.
In the presentation, I will present an end-to-end view on continuous everything. Discuss, practical challenges and potential benefits from adopting the approach. Furthermore, I will share our ongoing work on developing a methodology to identify and catalog organizational goals, constraints to steer the adoption.