Various technical practices, like containerization and microservices, demonstrate the benefits of abstraction. The upcoming technological landscape will increase the adoption of these practices and require organizations to embrace abstraction as part of their agile mindset.
The Upcoming Landscape
The agile manifesto and its 12 accompanying principles have been helping projects and teams succeed in dynamic environments for over 20 years. Agile enables teams to sense and respond to change in an era with unprecedented technological opportunities and growth. The demand for adopting agile frameworks has grown due to a combination of past success and this landscape of accelerated change.
One of the main drivers of the need for agile is that new technology constantly changes the landscape of what is possible. The rapid pace of technological change is often attributed to Moore's Law - which describes how computing power approximately doubles every 2 years. The rate of innovation becomes more impressive considering it can become self-generating as distinct innovations are combined (combinatorial innovation) or applied across unrelated spaces (lateral innovation). These examples of network effects, or Metcalfe’s law demonstrate why the value of an innovation network is highly sensitive to the accessibility of pre-existing innovations. Growth in computing power and the cross-application of technologies are making previously intractable problems solvable. As we look forward to the next horizon of possibility, organizations must consider how to change their processes to keep up. Agile frameworks have served us well, but adjustments are needed to accommodate an environment where "the realm of possibility" is redefined so frequently.
Without reevaluating how software is built today, software acquisitions and purchases will become anchors for organizations. Ideas like vendor lock that seem uncomfortable today will become death knells in the future. Investment and reliance on systems that regularly become obsolete so quickly will create a challenging landscape for both development and investment.
Abstraction - a needed 13th agile principle
The path forward is to embrace abstraction. Organizations should start by shrinking the problem to enable smaller solutions when building applications. These small solutions treat dependencies to external systems and across internal systems generically. Accepting abstraction as an agile principle helps development teams boost their resiliency and simplify their responses to change. If a new technology makes a dependent system obsolete, the developed application only needs to “point” to a new place to find its inputs or to provide its output. If the team's application becomes obsolete, re-solutioning it is less painful because they “shrunk down” the solution from the onset. Practices like app containerization and microservices demonstrate how abstraction is already coming to fruition.
Embedding abstraction as an agile principle into development is also critical in forward-leaning development and prototyping where there are ambiguities and dependencies on items that you do not yet have or that do not exist yet. The ability to move forward despite “unready” dependencies is powerful; it allows teams to get feedback from users and discover opportunities even if the broader solution ecosystem is not mature. Moving forward with abstraction can take many forms, such as creating synthetic output or developing low-fidelity prototypes of dependent systems. These supporting artifacts are purposefully reductionist and known to be imperfect, but they enable teams to reduce risk by clarifying assumptions and moving forward with end-to-end demonstrations or functionality and obtaining feedback.
LMI’s Tech Accelerator Use Case
LMI’s technology accelerator, Forge™, develops prototypes in 30–45 days using a custom deconstructed agile framework. Evaluating the success of these rapid prototypes and determining whether they should advance into product development requires the Forge™ team to clear several obstacles. In some cases, the ecosystem of supporting systems is not mature or uniform; in other cases, the investment of licenses should be deferred until feasibility is proved.
Embracing abstraction has been critical to Forge’s™ success. The first product developed under the technology accelerator, Beacon™, has enabled teams to move quickly and treat dependencies as plug-and-play. Beacon™ has several components, but two enable teams to be successful in rapid prototyping:
- A robust data catalog
- Containerized workbenches
The data catalog allows teams to move forward quickly with either actual or representative data when prototyping. Although data from the catalog may require some work to be redone (e.g., re-training models with up-to-date data), it enables teams to move forward and show what a solution can deliver quickly while data sources are evaluated or stood up. In this way, teams can prove value in a prototype while abstracting the data component. This is a critical step to take prior to investing in purchasing licenses for an entire team, thereby reducing risk.
Containerized workbenches also allow the team to lean forward in prototype development. Team members can quickly launch a workbench and develop models that are later exposed as an API. This approach enables the team to swap out app models relatively quickly as approaches are evaluated. It also allows the Forge™ team to integrate prototype development into other solutions or chain prototypes together.
Additionally, Beacon™ supports innovation by supporting network effects like those expressed in Metcalfe’s law. Each data source and prototype serves as a new node boosting ideation potential for combinatorial innovation. Posted resources and prototypes encourage users and developers to think laterally and use existing items in new ways. By encouraging and facilitating the use of abstraction, Beacon™ promotes agility in the R&D.
Agile has brought increased success to many teams. As a result of its success, agile is changing the environment it must work in and will need to adapt and modernize. As we demand more from the framework and expand its use cases, we need to reevaluate its guiding principles and practices. Agile must embrace abstraction to participate in a technological ecosystem with accelerated innovation.