In over 50% of organisations, software developers only spent 30-40% of their time on feature development (State of DevOps 2018; 2019). While DevOps and Continuous Delivery solve specific problems to increase the time spent on value-adding activities, your organisational performance is determined by more than a gap between development and operations. Improving the overall developer experience is essential to increase the developer effectiveness. In this article, we will share with you reasons to invest and key approaches to set your developer and thus, your business up for success.
Developer Experience (DX) encompasses all aspects of the developer’s interaction with the organisation, its tools and systems.
How bad developer experience looks like
We observe the impact of bad developer experiences in different technological landscapes across industries. A root cause for bad developer experiences is not considering the developer as a customer. Without taking the perspective of the developer and conducting customer research, the viability of the provided product or service is unproven. Instead of solving real developer problems, the solutions are at risk of unnecessarily increasing the complexity for development teams. Eventually, the time-to-market for software increases when developers are bound to bad developer experiences, and while those are sometimes very domain and context specific, repeating patterns are:
- Non-automatable (GUI) interfaces of provided tools and systems bind the developers to manual, non-value-added activities. Developers rely on the ability to automate tasks and integrate tooling for an efficient, reliable and continuous software delivery.
- Hardware and infrastructure is often scarce and hard to get, especially in early stages or emerging technology projects. Low availability of such production-near environments leads to long feedback cycles, inhibits experimentation and is negatively impacting software quality.
- Tedious onboarding and setup costs days until the first line of code can be written and pushed into production. Fighting your way through a jungle of tickets just to get a license or permission crushes the motivation when new team members join and increases time spent on non-value adding activities.
- Fragmented team structures introduce inefficient hand-over dependencies between teams. While the most popular example is the siloing of development and operations, this also applies to other gaps in a delivery stream.
- A lack of enablement when consuming APIs, libraries or platforms increases the cognitive load of a team. Without guidance, examples and shared knowledge, every team has to waste time on figuring out how to extend or integrate them. Exceeding the cognitive load of a team leads to wasteful context switches and thus, to delays and quality issues.
1. Figure: Case example: Pain points of developers. Gathered in the context of a cloud platform and an automotive platform.
You are losing money
Poor developer experiences lead to a low developer effectiveness and organisational performance. Let’s look at a few examples of why you should invest in a good developer experience:
Accelerating Software Delivery accelerates Time to Market
Constraints and problems in the developer journey are an opportunity to accelerate the software delivery. In one of our automotive projects, we learned that the unavailability of hardware and manual steps in the testing process led to a 2-3 week testing cycle for the developers. This included waiting on time slots with a hardware test bench and also physically moving to another building with all necessary equipment.
Because this task was performed several times a week and was core to the software quality, the leverage of solving this problem was high. By enabling remote updates and automated tests on the test benches, the test cycle time could be reduced from weeks to hours. The developers benefited from a compelling experience that also encouraged more testing. The accelerated software delivery enabled the business to bring software into the hands of the customer way earlier – and with higher quality.
Flexibility enables Experimentation enables Innovation
One reason why organizations move to a cloud infrastructure is the flexibility and ease of being able to scale computing power. But why is that so important? One trigger definitely is the potential of cost savings. Why rent new server capacity for a whole month if you only want to do a load test that can be done in less than a day?
However, there is another – probably even more important – factor that a cloud infrastructure provides and that is flexibility. Teams can not only autoscale by ‘pressing a button’ but also have a vast variety of services at their disposal. This flexibility of using out-of-the-box services and compelling APIs is a huge incentive to start experimentation and potentially innovating without taking big risks or making huge investments that might not pay off.
Attract and retain IT Talent
Are you motivated if you feel unproductive, blocked and waiting for most of the day? Probably not. What motivates most individuals also applies to developers. Motivation creates a flow that fosters creativity for the benefit of your organization.
With several innovative companies around, all competing for top tech talent, organizations cannot afford anymore to not invest in an environment that allows developers to do what they came for: ship awesome features that delight your customers.
How you can achieve a good developer experience
A good Developer experience requires more than reducing a gap between Dev and Ops and providing Continuous Delivery tools. If you seriously want to increase your developer effectiveness, and thus, accelerate your business goals, you should try some of the following approaches:
- Adopt product thinking for technical products and platforms that get developers’ jobs done instead of getting in their way
- Take a holistic view on your developers’ journeys to understand their path, touchpoints and influences and identify fundamental constraints
- Identify & shorten feedback loops to improve frequent workflows and continuously measure progress
- Enable & encourage collaboration to eliminate inefficient silos and foster mutual understanding
- Create a culture where team members feel safe to experiment and encouraged to innovate
Get invested in your developers' experience
A bad developer experience decreases your developers’ effectiveness. A good developer experience will get your features into production fast, reliable and safe. You should invest in the second. Taking the developers’ perspective will benefit your business.
Are you looking for concrete steps to take to improve the Developer Experience in your organisation? Read more in part 2.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.