DevEx: Why Developer Experience Really Matters to Your Organisation
At Contino we typically work with very large organisations, both public and private, and often international. At such a scale it can be easy to lose sight of the problems faced by the people on the ground, developers and engineers. However, neglecting to provide a great experience for the developers in your organisation can lead to a multitude of problems, including attrition, high technical defect rates, and loss of competitive advantage.
In this post we’ll explain what good (and bad) developer experience (DevEx) looks like, why it is crucial to your organisation, and what you can do to improve the experience of your organisation’s developers and realise business benefits along the way.
As the rules for 2023 state—you can’t write a blog without including the topic of Artificial Intelligence (AI)—we’ll also look at the role AI and AI tools have in improving developer experience.
What is DevEx?
Developer experience can mean slightly different things to different people, so it's important to set out what we mean when we say ‘developer experience’ and what constitutes ‘good’ and ‘bad’ developer experience, in this post.
For us, developer experience refers to the overall, day-to-day, satisfaction of an organisation’s developers, engineers and technical staff. Having worked as developers for many years we can attest to the fact that some of the main things that the majority of developers covert are:
- Being empowered to use the most effective tools to complete their tasks
- As little context switching as possible/being able to focus on the task at hand
- Being able to easily and quickly validate their work or try things out
- Having an understanding and being able to be involved in the entire lifecycle of tasks, from eliciting requirements to deploying and operating in production
- Working with code, architectures, products, and solutions that are easy to understand and well-documented
- Having, preferably automated, feedback loops so if and when something goes wrong the team knows about it quickly
Why is Good DevEx important?
How do the things developers value lead to business benefits?
Developer experience is important to organisations for a number of reasons. If we ask ourselves the question ‘what is the result of enabling a good developer experience?’ The obvious starting point is happier, more satisfied, developers. However, if we have a look at some of the things developers value, we can also see that good developer experience also leads to a number of business benefits.
1. Increased Flow
As identified earlier, one of the most common pet peeves of developers is context switching, in other words being asked, or feeling the need, to work on multiple things at once, or otherwise ‘switch’ between different tasks. Doing so leads to the need to adopt a different context and mindset for each new task, something which requires both time, and effort. It is obvious then that this will lead to an overall drop in flow and that, in this way, enabling a good developer experience helps to increase flow.
Similarly, developers enjoy working with code and products that are easy to understand. Obviously, as code-bases grow and more and more products and features are built, it becomes exponentially more difficult to keep things in a state such that they can be well-understood. Taking the time and effort to do this, however, brings a number of long-term benefits. Foremost of these is the benefit to flow that comes with developers not having to spend an inordinate amount of time to acquire very specific knowledge, or rely on knowledge silos with the organisation to help them complete a task.
For developers, understanding, and inputting, into the entire lifecycle of a product or features are an important part of their role. The days of developers writing code, passing it off to the test team for validation, and then throwing it over the proverbial fence to operations to deploy and run are long gone. We are also familiar with DevOps and the advantages it has brought about.
Developers want to help define requirements, write code, validate their code, and see it successfully deployed to production. It also builds confidence and fulfilment, seeing their work running successfully and providing value to customers, and a sense of ownership for them to have the opportunity to identify and make improvements where things are not quite right.
From a business point of view it also makes sense for developers to have an end-to-end view of the things they are building. It reduces handover time, and also helps to reduce context switching. For example, if a developer hands over some code to a tester and the tester has such a long backlog that they don’t run any tests for three days, by that time they identify any ‘bugs’ the developer is probably working on another task and has to context switch to circle back to the original task. As we’ve already identified, context switching negatively impacts flow of work. So, once again, ensuring a good developer experience leads to tangible business benefits.
All of these boosts to flow ultimately lead to products and features being developed faster, reducing overall time to market.
2. Reduced Attrition and Onboarding Cost
It is not a big cognitive leap to suggest that attrition of developers in an organisation is linked to developer experience. Other factors aside, developers are more likely to stay in a job if their experience is a positive one, and less likely if it is negative.
High attrition, in most cases, means that multiple functions in your organisation need to burst into action. HR needs to process the outgoing developer or developers. Recruitment needs to, well, recruit someone to replace the leaver. The development manager needs to provide an updated job description of the person he or she is looking for. Finance needs onboard and offboard leavers and new joiners to their systems. This all requires time and effort, not even accounting for the time taken for new joiners to get ‘up-to-speed’. It also means that if you are able to reduce unwanted attrition through good DevEx you can reduce the burden on many of your ‘back-office’ functions.
Reduced attrition also allows you to move faster. Now, of course some attrition is a good thing, it brings fresh ideas, energy, and motivation but keeping a lot of the domain and company knowledge that is built up over the years inside the organisation is also critical to flow. This is particularly true of the best developers in your organisation, who are coincidentally the most likely to be poached by a competitor, and also the most likely to have a strong opinion on the importance of good DevEx.
Added to this, members of teams and organisations where the codebase and products and services are well-understood, either because of high quality documentation, or visibility and experience with the entire development lifecycle, are more likely to report a good developer experience. This good, shared understanding of an organisation’s products and services also helps to reduce cognitive load on developers, improves quality, and customer satisfaction, which, again is linked to a better developer experience, and therefore reduced attrition.
3. Reduced Time-to-Market and Competitive Advantage
We’ve already discussed how a good developer experience entails mechanisms by which the relevant person, or people, can be notified quickly, i.e. feedback loops. This helps improve the quality of features and products being developed within an organisation by allowing changes and improvements to happen ‘at source’, before they are released to the customer. This, in turn, helps to give the organisation a competitive advantage. If you can improve quality without increasing your expenditure, meaning there is no need to increase what you charge your customer, your product or service immediately gains an advantage over competing products and services.
If you are able to achieve ‘good’ DevEx in your organisation and maintain it your organisation will slowly become known within the development community as a ‘good’ place to work. This is not the most obvious competitive advantage to be gained from good DevEx but it is important nonetheless. Becoming known for providing a good experience for developers makes it easier to replace those that do leave, and with high quality as well. Developer experience may be the reason for a great developer to join your organisation over a rival!
We’ve already identified that good developer experience helps to increase flow within an organisation, through reduced context switching, ease of task completion, and understanding of the ‘big picture’. This increase in flow ultimately results in the ability to bring new products and features to market faster, faster innovation, and a leaner, more agile organisation.
In summary, we’ve seen that good developer experience leads to a multitude of business benefits, including:
- Reduced Time-To-Market and increased flow and efficiency through minimising context switching, and addressing technical debt at its source
- Reduced Costs arising from the reduction training and recruitment costs involved in unwanted attrition
- A Competitive Advantage gained from the quality and speed associated with the automation and early feedback loops that align with good DevEx
- Improved Customer Relationship due to improvement in the quality of products and services
The Agile Cookbook: How to Cook Up a Healthy Agile Organisation
As any masterchef knows, to be your best you need to have a fully functional kitchen—and that kitchen should be stocked with quality ingredients and crafted tools.
As a masterchef of agility the same applies. In this eBook, we take you through some of the most important things you should know to guide your organisation to create healthier work environments and processes.
How Have the Best Developer Experience in Your Organisation
Now that we have identified the ‘why’, i.e. the advantages of ensuring a good developer experience in your organisation we can come on to the ‘how’, how do you improve developer experience in your organisation?
1. Federated Identity and Zero Trust
We’ve all been there, you join a new organisation and you spend days, or even weeks creating accounts for the numerous tools and services that the organisation uses. You then have to manage passwords and, if the organisation has good security policies, multi-factor authentication (MFA) for all of the different accounts. Some of these tools and services might force password expiration, meaning the need to update passwords periodically. They likely force a log out after a specified period of time, meaning the need to provide usernames, passwords, and MFA again. This can be further exacerbated by the use of desktop-as-a-service services such as Citrix desktop, which, again, requires periodic authentication and another place to re-log in to all the systems you need to use. In such an environment it can feel like you spend more time authenticating than doing value creating work.
The answer to this is two-fold. Firstly, federated identity not only allows for users to have a single identity they use throughout the organisation, for all tools and services. This not only reduces the context switching associated with constant authentication processes, but also allows for better integration of the different tools and services as they share the concept of a user.
The second concept is Zero Trust security. Now it might not be immediately obvious that a framework that prescribes verification of all actions and access requests would be beneficial to DevEx. The fact that it goes against the idea of having a ‘perimeter’, such as an internal network inside which everything is trusted, however, negates the need for desktop-as-a-service solutions, which, as we’ve already established, generally hurt developer experience.
These two concepts in combination allow for reduced context switching, and therefore improved flow for developers, as well as a reduction in cognitive burden caused by managing and sharing data between different systems.
2. Implement Cross-Functional Teams
Cross-functional teams are teams which encompass all, or at least most, of the skills required to deliver features and products. This is in contrast to the more ‘traditional’ siloed structure of development teams, where you’d have a development team writing code, a test team to test the developers code, and an ops team to deploy and run applications.
This approach has a number of problems that are likely to lead to poor DevEx. Firstly these teams may have different goals, sometimes these goals may even contradict one another. Secondly this approach leads to more handovers, meaning more disruptions to flow and an increase in cognitive load when someone needs to revisit something they worked on a few days, or weeks ago. Finally, siloed teams don’t allow for knowledge to be shared, and spread across an organisation as well as cross-functional teams. This makes having a holistic view of a service or feature difficult, in turn leading to a reduction in quality as perceived by the customer and a poor developer experience.
3. Use of AI
Before 2022/2023 the advent of generative AI models and services like GPT/ChatGPT, Claude, and Bard, AI probably wouldn’t have made this list. It is now, though, impossible to ignore, and while organisations should be wary of the risks AI introduces, they should also be looking at how they can take advantage of it.
This is certainly true, also, in the realm of DevEx. Tools like GitHub CoPilot and Amazon CodeWhisperer provide AI Pair-Programming capabilities that can not only increase code quality and speed but can also validate code by performing security analysis and identifying. Additionally there are now a multitude of AI-based tools for automating things such as code reviews, incident detection, and cost management. Automation has long been known as a tool to increase flow and quality. Now, layering AI on top of that also allows for a great developer experience by reducing the cognitive load on engineering teams and taking care of tasks that previously would have had to have been done by a human.
4. Target Technical Debt Reduction
Technical debt is an inevitable part of building and running digital products. What isn’t inevitable is how you deal with said technical debt. Many organisations take an implicitly short-term view that technical debt is less important than whatever they are trying to get out the door, or whatever arbitrary deadline has been placed on them. In the long-term, though, this view is not sustainable. There comes a point where technical debt becomes the number one obstacle to delivering efficiently.
A high level of technical debt also makes for a very bad developer experience. When developers are forced to implement complex, inefficient, or otherwise sub-optimal solutions because of technical debt it will not only take longer to implement, increasing time-to-market, and be more prone to errors, but will also increase the cognitive load on developers in turn hurting overall productivity and satisfaction.
By prioritising tackling technical debt, and keeping it low, both of these problems can be avoided. Developer experience can be improved, and features and products can be built and released quicker, with a higher degree of quality.
AI and automation can go a long way to help in reducing technical errors debt but organisations should also be cognizant of their current level and proactively take steps to reduce it if it’s at an unacceptable level, even if that negatively impacts short-term goals.
5. Implement Automated Feedback Loops
When building systems and services it is important to validate that what is being built, tested, and shipped is of sufficient quality. Things like ‘does the application build?’, ‘does it pass the required pre-defined tests’, ‘do users have a good experience using our services?’, ‘what is the failure rate of the application? Is it trending up or down over time?’. It is also important to have these questions answered in as close to real-time as possible, and for the answers to be relayed to the relevant people so they can take action. Automating this creates a number of business benefits.
First of all it improves quality—being able to identify bugs and performance issues which otherwise might not have been found allows for them to be rectified. Additionally, identifying problems in real-time, or close to real-time, reduces the cost of rectification. I’m sure we’ve all been part of teams scrambling at the last minute to fix critical bugs or had to delay a release because of them. Having feedback loops in place to identify such problems as they arise means that new products and features can be brought to market faster. Finally, the improved quality and faster time to market makes for a better experience for your end users, and an advantage in this front over your competitors.
Summary
In this post we’ve discussed what we mean by developer experience, why it is important not only to the overall satisfaction of developers and technical staff generally, but also critical to the effective operation of an organisation and achievement of its strategic and financial ambitions. Following this we set out a number of steps we can take to improve developer experience in your organisation, including the use of AI, Operating Model options, and user management and security.
I hope you can take away some actionable steps that will make a real difference but if you need that little bit of help, we at Contino specialise in helping organisations improve their DevEx maturity. Get in touch at contino.io/contact-us or take our Developer Experience survey.