Software delivery 101 – What needs improvement in your setup?

Getting flow in a software delivery setup is one of the primary challenges. But fixing issues is only one part of it. Sustaining flow is the next level. So, let's start with the central question. What needs improvement in your setup?

In this article, we move bottom-up along the following questions:

  • You don't know for sure if your software delivery setup is performing?

  • Your software delivery setup is not performing?

  • Your software delivery setup is performing but delivering suboptimal solutions?

  • Your software delivery setup is performing, but the quality is inconsistent?

  • Your software delivery setup is performing, but you have lifecycle issues?

  • Your software delivery setup is performing. How can you improve further?

 Side note: This article makes no statement about the frequency of delivery, aka frequency of deployments to production - because requirements and good practices differ.

You don't know for sure if your software delivery setup is performing?

You don't know for sure if your software delivery setup is performing? Well, probably the worst situation. In this case, you have to assume that your software delivery setup is not working as expected.

No feedback is a brittle state - you are running blind. If you find yourself in this dire situation, introducing basic work agreements should be your primary concern.

Introduce benchmarks to define the quality of a work item that enters the system and the requirements for a work item to be designated as finished/exit the system.

Elements can include:

  • Minimal issue tracking.

  • An agreed-upon delivery process.

  • An established universal metric like story points to create a shared understanding.

Your software delivery setup is not performing?

If your software delivery setup is not performing, this is not good, but you at least already know that you have issues and, therefore, you need to get a mandate to tackle the problems.

It is essential to align with stakeholders first to answer how much transparency the organisation supports because it will need openness to tackle the issues at hand. 

If you understand how far you can go, it is essential to do post-mortems relentlessly and retrospectives diligently. 

Often the problems are not technical but rather in the human domain.

Teams are also a form of silos. And if the organisational culture is not healthy, teams may not align enough, often resulting in suboptimisation and challenging integrations. 

If you keep an open mind in the context of the retrospectives, you will find various approaches to how you can improve things. In addition, you can get guidance from good industry practices (how are successful partners doing it) or tested and proven agile patterns (like frameworks and literature - Scrum, Clean Code, etc.).

Your software delivery setup is performing but delivering suboptimal solutions?

In a way, this is a constant task to stay on track here. Things are getting better, but there are still relatively few organisations which are good at sensing the market environment.

On the one hand, it gets complex and expensive very quickly, making it difficult for small organisations to achieve and maintain a healthy state. And on the other hand, big organisations have the potential to get clogged by bureaucracy and politics - which can make these efforts a frustrating endeavour or even nullify the impact.

It is essential here to increase customer-centricity. You can do this in multiple ways, for example, by strengthening and establishing domains and methodologies like Data Science, Design Thinking, User Experience, and Customer Experience. At the same time, you should also consider fostering processes to facilitate continuous and iterative value delivery to customers and business stakeholders.

Your software delivery setup is performing, but the quality is inconsistent?

Quality, like so many positive traits, demands a lot of discipline. Establishing a good practice is challenging because some people may see it as a hassle - resistance to change. And it is even more difficult to keep these practices going in the long run - sustain change.

When people start deviating from good practices, they often get into a vicious circle of falling back into old patterns. Therefore, the architects or whoever is in charge of your software architecture must provide clear guidance on where your setup has the highest upside potential.

Ideas can reach from refactoring core services for less duplication and better readability to increasing overall test coverage/quality to raising resilience thanks to practices like asynchronous messaging or stateless/redundant services. Whatever your specialists decide, it is vital to slice the improvements into incremental and small steps, track progress closely and celebrate wins.

Your software delivery setup is performing, but you have lifecycle issues?

Earlier or later, every solution has lifecycle issues. Over the last few years, cycles have become shorter, but at the same time, there is also a higher awareness to keep things up to date. So how should this be handled?

If possible, you should delegate the responsibility to address lifecycle issues to the teams to keep their services shipshape - at least in a simple setup.

On the other hand, in a more complex system/enterprise solution, it makes sense for you to establish a central body which handles functional lifecycles of services and technology lifecycles.

In a perfect world, you would never get into a situation where difficult decisions from an architectural perspective are needed. However, in practice, these will come up earlier or later.

Therefore, it is advisable to consult a broad range of stakeholders. Also, if it may sound counter-intuitive, business stakeholders should have a say in architectural decisions. For example, they may be responsible for the budget, have to break the news of discontinuation or cutover of a service and know the solution vision from a commercial angle. Therefore, they can help make better decisions considering how the solution will evolve.

Your software delivery setup is performing. How can you improve further?

If you have no issues in your software delivery setup, you are a lucky person/organisation. You have probably invested a lot, and your efforts are paying off. Congratulations! So, it is vital to keep up the excellent work.

At the same time, it can also be that you have a transparency issue and don't know about it. For example, suppose you are in the comfortable situation of having a well-running software delivery setup. In that case, it is essential to keep the reporting up because people may otherwise become a bit lazy "because everything is anyway always green". And at the same time, it is crucial to facilitate a hungry mindset - hungry for discovery and learning.

Elements like healthy communities of practice or incentives for experiments can be an excellent way to keep innovation going.

Or even dispatch some of your specialists to spread good practices to other parts of the organisation that may not yet run as successfully as your software delivery setup.

Previous
Previous

Agility & Compliance & Security: A perfect match, but the domains need to be aligned correctly.

Next
Next

Do you want an agile, attractive, and modern organisation? Mindset and culture will always be at the centre of this aim.