One of our ongoing goals here at Spicerack is to constantly improve and develop our DevOps capabilities and practices. Over the past year we have made great strides in this space, and have seen benefits to productivity and code quality across our client projects.
We’ve also started to notice some less obvious improvements within the team. Our morale has grown, our overall communication has increased, and our confidence has soared. I think these less visible changes are fantastic and they have a huge impact on individual and team wellbeing, and even on developer mental health.
It’s easy to understand the simple reasons why better DevOps practices lead to higher quality software. Let’s consider an example using only a single aspect of DevOps, automation.
What are the obvious benefits that we might expect to see? By improving the automation of code releases, developers spend less time worrying about the release process and more time programming. Feature releases become more frequent and developers become more positive about their code as it is pushed quickly from development, through automated test suites, and on to staging environments – all without any hassle or extra work.
But I argue that the biggest benefit of a company improving their DevOps practices is less obvious – it’s about improving developer confidence.
Let’s start with a team that has poor DevOps practices. Releases are large, slow, and cumbersome. Rolling back is difficult and unlikely to be smooth. Tests are non-existent and certainly not automated. Any code improvement must go through a number of manual steps before it is released, and through a variety of different channels and bureaucracy before deployment is even considered. Infrastructure is spread over multiple different providers and each application uses a completely different stack.
With this setup, releases become something to be feared. Developers start to dread releases and stop being confident with their code. This leads to resentment, imposter syndrome, and high levels of stress.
Now let’s assume that this team is in the process of overhauling their development pipeline and introducing better release practices as part of an overall DevOps improvement strategy. They manage to get a few improvements implemented, which in a practical sense might include:
- Comprehensive test suites that run automatically on code push
- Switching from manual to fully automated deployments, as well as automatic releases to staging environments when code is merged and blue-green deployments for production (with easy rollbacks)
- Infrastructure management is streamlined to use the same provider, containerized stacks, and shared deployment and configuration management tools.
How do these changes benefit a developer’s wellbeing?
Primarily, they increase confidence. Bugs and mistakes are picked up early in the process and releases become much more frequent. Developers stop questioning and doubting the code they have written and become more confident with themselves and their abilities. They are eager and honest to share what they have produced, and have less fear that it will be negatively scrutinized and questioned. This leads to less stress, less self-doubt, and less imposter syndrome.
“Blame culture” disappears. Things are less likely to go wrong, but when they do, it is easy to recover and rollback. Failures become much less serious and better tolerated. Teams stop passing-the-buck as mistakes are easy to manage and become a way to learn, rather than something to be feared and punished.
Rates of progression improve. Since the consequences of failure are much lower, developers start seeking out challenges rather than avoiding them. New developers (and experienced ones too) develop more confidence with their code and become eager to try new things and expand their knowledge. On-boarding is much easier due to the new streamlined and well-documented DevOps practices.
Anxiety and dread is alleviated. Releases are no longer feared. The classic “release day dread” is a thing of the past – developers are no longer triple checking minor details, panicking about every little thing that could go wrong.
It’s worth it!
Improving your DevOps practices not only leads to an obvious increase in code quality and productivity, but it also hugely benefits the confidence of developers and their team. As we have seen, this leads to a multitude of improvements across the board and they culminate in an overall improvement of developer and company mental health. And of course, all these benefits are passed-on to the product being developed and to client outcomes.
Next time your company is wondering whether an improvement in DevOps practices is warranted or worth the trouble, remember the less obvious benefits. They are infinitely more important to your developers and team and they will be very thankful for the changes.
And when your clients end up with better code, less bugs, faster release cycles, and cost savings… they will thank you too!
If you would like support with website or application development or the automation of business and development processes give us a call on 0117 933 2595.