If you are a product owner or product manager, you have lots of things to consider while planning the success of your product. There are many obvious things but… most businesses still forget about an area that can be crucial: developer experience. Briefly speaking, developer experience, or DX, describes how developers feel about a system while working on it. In this article, we will cover more about what DX is and why good DX matters.
What does DX mean? What is developer experience?
Let’s start with an explanation of what can affect developer experience to show why good DX can be crucial for the overall success of your software product. Below you’ll find several examples of a bad developer experience:
- Forcing developers to use specific tools or old technologies – sure, standards and guidelines for important approaches are helpful, however, the developer team should be free to choose the most appropriate tools for the job. What is more, using old technologies can cause frustration for developers – their work becomes undermined by legacy code and manual processes.
- Lack of psychological safety – a safe, collaborative work environment is necessary to provide developers with the freedom to make decisions. They should be able to experiment, fail, and apply their learning to create better results.
- Poor communication between developers and platform teams – this creates confusion and leads to incorrect implementations or unnecessary delays.
- Unrealistic deadlines – milestones set too early can lead to creating poor quality software or burnout. Developers should be permitted a sustainable pace to perform in the long term. GitLab’s Global Developer Report shows that only 68% of developers say they are given realistic deadlines.
So, what is developer experience?
Developer experience is the overall feeling developers get when they use a technical product in their workflows. One might say, it’s akin to UX but from a developer’s perspective. Developers are often called internal customers, so DX is the sum of their interactions and feelings as they work towards a goal. Having a poor developer experience may be detrimental to overall engineering efficiency, as well as the ability to innovate.
How is developer experience calculated?
There are multiple objective and subjective measures of developer experience. Good DX promotes and supports innovation, safety, speed of development, and iteration. It allows developers to focus on and experiment with what’s most important. They aren’t forced to switch contexts or suffer from decision fatigue. If you want to provide a good developer experience, you should reduce context switching and decision fatigue by having highly usable and credible software and platforms. DX is a helping hand in reducing ramp-up and onboarding times to assist in the ultimate goal – getting ideas to production in the long term.
When it comes to software development itself, there are three pillars of developer experience: usability, findability, and credibility. Usability is how easy your digital or software product is to use. It is removing barriers, such as unnecessary steps when using an app. Findability is how quickly and easily users (in this case - developers) can find the functionalities they are looking for. If you pursue perfect findability, you should support the user (developer) journey across changing tasks. Last but not least, credibility, a long-term pillar, is that your users trust your app or software to solve their problems.
What does a developer experience team do?
The developer experience in a team is the experience developers have during the actual work of developing software products. To perform their tasks, developers need the proper DX tools. These are tools for function, stability, ease of use, and clarity. In most cases, compatibility and integrability DX tools are also helpful if you want to provide a good experience. Such tools could be deployment pipelines, tools to facilitate integration with the infrastructure, test frameworks, tools for observability and monitoring, and base images for applications.
For project setup and code formatting, Prettier and ESLint are usually developers’ first choices. When it comes to scaffolding tools that save time during the project setup, many developers recommend using the dedicated CLI (for Angular, Vue, or React) or the AWS CDK CLI on the server-side.
A developer experience team ensures re-usability of the tooling between all development teams, the same standards in terms of testing and monitoring, as well as continuous improvement of such developer tools. Also, to ensure really good DX in a team, the following factors play a role:
- clear and standardized communication,
- workflow organization,
- consistency of toolset – every developer should use the same tools for the same task, and they should be configured in the same way,
- onboarding – new developers should be clear on what they have to do.
To properly select the DX tools used in a team, many businesses use DXOs – Developer Experience Owners. This role constantly evaluates whether the tools in use are optimal for the current tasks and if not, replaces them. DXOs manage the staging environment and manage the access of the developers to it. They keep the developers in sync – they make sure everyone knows what is going on, and when. They are also involved in testing tools and workflows.
What does DX mean in software?
If your software has good developer experience, it means that your software product is fully usable, well-designed, functional, and easy to navigate. This set of quality factors can be applied to any developer-facing utility. Developer experience in software means working with tools that have well-written documentation, or a high quality and consistent API, etc. Building excellent DX is difficult so it’s extremely important to fully motivate your development team so that they feel free enough to continuously modernize the product. It’s about building a culture of software development. After all, team collaboration is critical for an outstanding developer experience.
How to implement DX in a DevOps Culture?
Simply speaking, the DevOps culture is about developers and sysadmins working together to achieve a single goal. Developers have the freedom to deploy changes fast – they can deploy and debug their services in any environment. On the other hand, system admins can fully automate most of the processes. Research shows that 20-30% of developer time may be wasted on unnecessary activities so, besides automating repetitive tasks, it is crucial to understand their needs. The best way to do so is to meet their needs with products that bring value and are easy to use. To improve the developer experience in your DevOps structure, you could:
- Get to know the demand well – what do developers need and want? User research will be a great help.
- Identify personas – you can create fictional personas with typical behavior, attitude, and context to better understand your “customer” - the developer. It is recommended to create three very detailed personas.
- Create the user journey – find out what is painful for your developers, and what can be improved.
- Focus on continuous improvement and collect feedback – usability reviews and usability testing are the best way to gather feedback in the DevOps environment.
Why is the developer experience important?
According to McKinsey’s 2020 study, “companies in the top quartile of the Developer Velocity Index outperform others in the market by four to five times”. A positive developer experience can bring multiple benefits to your business. Let’s dive deeper into them:
- Departments collaborate better – open and transparent communication and trust between developers and other departments lead an organization to function well as a unit.
- Productivity increases – providing good DX is one of the best ways to increase productivity within a dev team. Among other things, this means allowing developers to focus on the day-to-day work of building the products without any distractions.
- Time-to-market is faster – because of increased developer productivity, work is done more efficiently. It speeds up the process of launching new products or new features on the market.
- Motivation increases – providing an excellent developer experience gives the team the ability to solve interesting problems. They tackle interesting cases, develop their skills and work on their personal growth. When they are closer to the end customer, they feel more connected to the company’s mission.
- Duplications and overhead are eliminated – working on good DX is a great way to eliminate bottlenecks in the development process and eliminate unnecessary tooling.
From a business perspective, it’s obvious that companies succeed by delivering the highest amount of customer value. Your development team can write millions of lines of code and only create costs. Organizations may have different needs, but developers have become more and more critical these days. Formalizing the role of developer experience may turn out to be necessary for creating and realizing the company’s overall business value.
A good developer experience
Every step in a developer’s journey is a chance for you as a manager or CEO to improve their developer experience. These are the elements of good DX:
- A well-conducted, pleasant onboarding – optimism and positivity are helpful when one joins a new company. However, remember that they drop away quickly so you should do whatever it takes to provide the best onboarding process possible. On top of a positive environment, you should provide your new developers with the relevant tools so that they don’t have to wait too long for the necessary permissions, etc. In some companies, it takes weeks. Don’t be one of them.
- No blocking dependencies – developers are often blocked. They have to wait for people outside the team to provide them with a service such as installing software or spinning up infrastructure. A good developer experience removes the frustration of being blocked and provides developers with a self-service experience.
- The right architecture and great DX tools – good architecture is difficult to break and has short feedback loops. You should find a compromise between complex and simple architecture. When it comes to DX tools, automate where possible.
- A learning and sharing community – learning and sharing knowledge should be a part of a developer’s daily life. Programmers love to discuss tools, technologies, and solving problem approaches. Good DX is about creating communities and discussion forums within the organization, as well as regular internal conferences to discuss and share ideas.
How do you develop a developer experience?
Although an excellent developer experience may be hard to achieve, there are some fundamentals you can put in place to begin the journey to better DX.
- Start measuring developer experience – some things (e.g. deployment frequency or the number of new tickets) are easy to measure. Others, like local development environment satisfaction, are more difficult to verify. Once you have the measures defined, start investing in developer experience platform teams to build self-service infrastructure and tooling.
- Set out a vision that avoids buzzwords and empty talk. Be precise and make sure that your vision contains more than just aspirations. Then, keep making progress towards the vision you have set.
- Focus on self-service rather than traditional support channels. Developers don’t like bureaucratic and tedious processes. The entire process should be as self-service as possible.
- Provide modern tooling and make your current equipment compatible with it.
- Use modern design standards – consider modern programming trends or asynchronous webhooks to cater to event-driven workflows.
- Invest in DX – becoming part of a community boosts confidence and increases overall engagement around the software. You can host virtual seminars to engage with developers, or organize the community around shared forums, for example.
How are UX and DX different?
While discussing DX, people often bring UX to the table. There are of course some similarities – both UX and DX aim at delivering a better product that is more intuitive and fun to use. However, they are totally differe