Software development is a complex endeavor, especially in the context of digital transformation. One of the most important elements to ensure its success is effective risk management, and headwinds in macro environments make resilience an even timelier imperative.
We have previously written about steps organizations can take to prevent their initiatives from falling into the failure trap. The best practices that emerged from our 2019 study with Constellation Research continue to be vital:
Great teams working with the best playbooks win championships. Once you have a solid core team, what else should you keep in mind? With an eye on continual improvement, here are three additional steps you can take to reduce risk:
There are assumptions inherent in every software initiative’s targets, project plans, team composition, and financials. As programs and projects are underway, it is important to systematically review whether these assumptions are still valid.
In some cases, assumptions may have changed due to new information uncovered during a software project - a particular set of features may be more complex than expected, causing downstream impact; team velocity might deviate from plan; key dates for internal and external customers may shift.
To anticipate shifting assumptions, it can be useful to keep a ranked tally of open questions, key risks, and potential issues that is kept up to date over time. It is also important to keep a consistent record of plan vs actual when it comes to timelines and effort estimates, as well as the assumptions taken into account at each juncture.
Almost no piece of modern software is an island. Even if you have solid management of the portions of development within your control, your software’s integration with the broader technology ecosystem adds an extra layer of responsibility to your team to ensure these dependencies are resilient.
Aspects such as hardware releases and updates, API changes and deprecation, and new releases of libraries can introduce new considerations to your in-progress development. Something as seemingly simple as a change in mobile app store approval policies can put timelines at risk.
In other cases, variables external to the project itself may be changing in ways that have implications for the project. Is your development team concentrated in one geographic area? Where is your data stored? Natural disasters and geopolitical disruption can emerge unexpectedly.
Economic macro changes can affect your initiatives as well. Higher interest rates might seem disconnected from software success, however, a higher cost of capital translates to a higher expectation of time to value for projects.
Risk cannot be eliminated, but it can be managed, and it is important to have a plan.
At a tactical level, you should have your list of assumptions and risks feed forward into planning and activity sequencing, and periodically review with fresh eyes whether long-shot events have actually become more likely.
Are you fully dependent on a single technology or platform partner? It is worth considering which dependencies, if they were to go missing, would put your initiatives at critical risk if they were absent. As we have pointed out before, the use of dynamic hybrid teams and elastic staffing such as those provided by Gigster can be a key component of this risk reduction. Additionally, techniques such as diversification of cloud suppliers (as well as non-tech suppliers such as supply chain) can enhance optionality.
For macro changes, it is important to envision scenarios where the next stages of multi-stage software projects might not be preemptively guaranteed to happen, so planning for earlier proof points is important. Applying the build-measure-learn cycle, as Gigster recommends, in a sequenced incremental program can ensure that by showing incremental value at each step, your initiatives can continue to evolve successfully even in the face of challenging conditions.