In the digital world, everyone gets excited about building shiny new features, but something that exists only on a developer’s laptop won’t make the customer impact it should. What really matters is experience: customers want products to perform, be available when they need them, and be well supported if something goes wrong.
Today, more than ever, we need to deliver services with production in mind, which requires a shift in the way many teams think. Historically, development teams and operations teams typically sat apart and had opposite objectives – developers wanted to release new features, while operations teams wanted to keep the service stable. Here are 10 key points for you to think about as part of your journey
1. Managing your estate is fundamental to everything else you do
If you don’t understand what exists in your total IT estate, then you can’t protect it and you won’t understand how it all fits together. Use automated discovery tools to sniff out everything on your network, from storage and infrastructure up to applications and their dependencies. Use security scanning and software composition analysis tools to understand things like patch levels and libraries in use within your products.
If you don’t do these things, you’re at risk of breaking production through missed dependencies or elements of your estate that are vulnerable and unmanaged. It doesn’t look good if your customer data is compromised because you don’t understand what’s on the pitch.
2. Shift the mindset towards service management as an enablement function
Ensure the services provided to internal customers are operating effectively and are designed with customers’ needs in mind. If your desktop infrastructure breaks regularly, processes are cumbersome, or toolsets don’t integrate into the way teams really work, then teams will be distracted from their core purpose of building great services for customers.
Shift the mindset from service management as a governance function to one of enablement. Understand service offerings and who consumes them. Treat internal services exactly as you would treat services offered to customers - if they’re not solving problems, they’re not working effectively.
3. Be deliberately challenging on what ‘ready for production means
Service updates should go into production without downtime and without any customer impact – anything less is sub-optimal. To achieve this, define what ‘good’ looks like in terms of quality assurance, deployment, and release management standards and practices. Set the cultural expectation that flawless releases with zero downtime is the goal everyone should be working towards.
4. Make service data radically visible
Teams always improve when they get a better insight into their own performance, so ensure service information is published for all to see. This encourages natural competition, the desire to learn from high performing teams, and an impetus within teams to address all areas of underperformance. Support this with cultural reinforcement mechanisms that recognise those that are improving at speed. What counts is not where you are, but the improvements made.
5. Demonstrate that you care about repeatability and automation
Manually deployed changes or changes that can’t be rehearsed are more likely to fail than a repeatable, automated change. Every product team should work towards deploying the same artefacts into each environment and run comprehensive test suites that generate predictable results. Test early and frequently – and don’t listen to people that say non-functional testing has to wait until the end.
'At Axiologik, we’ve led many transformations towards service excellence in fast flow product businesses.'
6. Work towards fully ‘observable’ systems
Service issues should be spotted and dealt with before customers see them. Many potentially catastrophic issues can be identified and addressed before they reach their full potential. All these elements relate to having highly ‘observable’ systems.
Building observability tools and practices into non-production environments helps you build better services in production - not only do you spot potential issues before they go live, but they also allow you to test your observability before it becomes critical for running production systems.
7. Non-functionals, non-functionals, non-functionals
If you don’t define what you need upfront and pay attention to how non-functional requirements are realised, it’s highly unlikely you’ll end up with the product you aspire to. It’s simply not possible to design systems and make the right technology choices without understanding how a product needs to behave.
Ensure non-functional requirements are baselined early within your overall lifecycle and ensure your governance validates how these requirements are being met at each stage.
8. Shift thinking from components to end-to-end services and journeys
Use product analytics to understand where customers are dropping out on user journeys and use this information to improve effectiveness of your products. Think first about availability and response time requirements across journeys and only then budget for individual components.
9. Design for failure and the unexpected
Services always fail and it’s the experience during that failure that customers typically remember. Deliberately engage with your failure modes and engineer out as many as possible through automated reconciliation.
However, no matter what you do, you’ll never fully eliminate failure. As part of your service design, think about how customers get help. Ensure support channels understand customer context and can do something – badly designed support channels often leave a more bitter taste than no support channels at all.
10. Ask customers what they think
Ask customers what needs to be improved within the products themselves and get their feedback on support experiences. User research is often just considered a part of new feature development, but it should be ongoing and relate to how customers experience the whole service across physical and digital channels.
The takeaway
None of the above will have the slightest impact unless the organisation demonstrably shows it cares, and this starts at the top. Delivering truly excellent service isn’t an overnight fix and there’s never an endpoint – it’s a long road of gradual, incremental improvement. Over time, using some of the mechanisms above, change will become self-sustaining and continue to accelerate.