With advances in tech and the demand for personalised digital experiences, software development is critical for businesses to stay competitive and meet evolving customer needs. While according to Mckinsey, 89 percent of large companies globally have a digital and AI transformation underway, they’ve captured only 31 percent of expected revenue lift and 25 percent of expected cost savings. For CIOs, how well their development team delivers software can be the difference between meeting or missing their strategic goals.
Most leaders are concerned about the speed of software delivery; it’s never as quick as they want it to be. Yet often this need for short-term delivery speed leaves little time for assessing factors that give teams much larger benefits in the longer term.
All effective teams have a process in place that allows them to reflect on the way they work and introduce changes to self-improve. However, in medium size and bigger organisations, some problems that a development team might identify are hard for them to fix themselves in isolation and they often require a much broader, overarching level of visibility across multiple teams to really visualise.
Generally, organisations are good at understanding individual team challenges but often struggle to design a process to understand more systemic issues that impact multiple teams. An effective software delivery assessment can help leaders to visualise both types of challenges.
Challenges for effective software delivery
Delivery problems can manifest themselves in a number of ways. If it’s not that code isn’t coming through quickly enough, there might be performance or stability problems in production. There might be a lot of code reworking taking place or a CIO might not feel like they can trust their delivery teams. Beyond team performance challenges, stakeholders just might not feel like they’re getting value.
Senior tech leaders often tend to approach this as, ‘How can we put better controls around the development teams to get them to work better’, rather than looking into more detail about what it is that’s actually holding up the work. It’s almost never because the teams are trying to not work quickly, but usually something else that’s causing them to be slow.
This could be due to a high amount of technical debt that makes any change time consuming, a complex process for releasing software or an environment that makes testing individual components hard , or it may be that the requirements aren’t very well-defined which leads to a lot of clarifications during delivery. These issues all end up manifesting themselves in one of two ways – slow delivery or substandard output quality.
These problems can easily start to erode the trust between the delivery teams and the wider stakeholders, which earns the bad reputation for slow delivery. For lots of executive stakeholders, what happens inside of the development team is really invisible, and it’s hard for those not in the software engineering world to understand what it takes to build some software. Communication is everything and the right people must be involved from the outset.
The importance of a software delivery assessment
A software delivery assessment gives the CIO and their organisation the insight it needs to drive improvements, allocate resources effectively and release quality software fast. It enables a company to identify areas where they are stronger or weaker and then to understand a good starting point for improving, and who the right stakeholders are to enable that to happen.
It’s easy to start drilling into the visible symptom, looking at ways that can be fixed in terms of quality, speed, trust or estimating. Despite perhaps getting to a point where team leaders can improve that symptom, that’s not always - or hardly ever - the only problem. It doesn’t matter if you make it move forwards ten times faster, if all the while there could be a bigger problem elsewhere. Improving that will have a far more significant impact on the overall delivery outcome. A software delivery assessment is designed to step back and review how the teams work in a broad aspect rather than focusing just on initial symptoms.
Taking a holistic approach to assessing your software delivery is the most effective method. This means asking questions and making suggestions across technology, delivery, product and leadership. Through collectively identifying areas for improvement, project leaders can empower teams with the right information to deliver quality software.
Benefits of a software delivery assessment
The main aim of a delivery assessment should be to understand how your teams can change how they deliver software, in order to create a more engaged delivery team and streamlined delivery process. This is likely to create both faster and higher quality delivery. It’s almost always going to result in a less frustrated delivery team, which results in a more enjoyable, thriving workplace, which in turn improves employee retention. Keeping the knowledge in the team is vital to deliver quality and speed improvements. Ultimately, it’s about understanding what are the main levers that are causing the symptom that you’re trying to fix.
Using a delivery partner with the right software engineering and technology experts can offer many benefits to performing the assessment in-house. This key advisor can point to problems in your teams, and help to give them a voice around potential barriers they might be experiencing from the business and support them in identifying solutions. This is much easier to achieve as someone more independent to the internal history of the organisation.
Key stages for an effective software delivery assessment
A software delivery assessment is a review of four key areas, it takes a chronological approach in the order you would do them from a software perspective. How deep you go into them depends on how much time you have and how many areas you identify that need real focus. Even a high level review of the areas can give real structure and targets to your improvement process.
As a rule, this is the way to optimise the team working and processes for the best software outcomes:
Building the right things: What it is you want the team to do How are requirements identified, gathered, managed and prioritised, and focusing the team’s effort in the right areas in order to define what you want to build. If the main problem is how requirements get defined in coming to the team, it’s critical that the head of product must be in this conversation, or a business change function. It’s also important to assess what measures are in place to ensure the team’s effort is focused in the right areas.
Getting the right things built: Getting the team to build in a secure and effective way requires taking a look at priorities, the delivery team, and processes to prioritise team effort and software release processes. Looking at how the delivery team is structured can often reveal issues. The project teams should include a mix of developers, testers and other specialities. Ideally you want a standard Agile team with enough skills in there to be able to deliver what you need to deliver. Effective communication between the different roles is important to eliminate siloed activity.
Getting the right things deployed: This stage involves looking at how environments are created and managed, what monitoring and analytics are in place and reviewing the speed of code changes. It will assess how quickly code changes can be deployed and how many people are involved.
Continuous learning: Teams should get into a continuous learning cycle, understand what things work well and feed them back. Team review and performance processes, along with managing tech debt and production issue reviews are all key opportunities for learning. Team health should be regularly reviewed with softer, less technical things being reviewed perhaps every month. Ideally the teams should be working together as collaboratively and flat as possible for the best performance.
Final thoughts
Above all, two things are critical to effective software delivery – focusing on the team and having a flexible delivery process.
A happy and motivated development team that is empowered to deliver will always deliver better software, faster. High performing teams also leverage the metrics and measures available to them to constantly improve how they work thereby improving further. You can achieve great results with a good team, but to really supercharge things, you need to give them an environment where they can thrive, this is the delivery process.
A process that contains just the right amount of governance to keep everyone ‘safe’ while providing the team enough autonomy to flex as the business needs change is the ultimate goal. A software delivery assessment is a first step on the journey to get to this goal.