Have you ever heard of DX? By its simplest definition, Developer Experience (DX) is User Experience (UX) with an alternative target audience: developers. In the same way UX seeks to create the best processes and interactions for users, DX aims to deliver the best possible experience for employees in development teams. UX aims for overall user happiness, whilst DX seeks this for developers.
To achieve this, Developer Experience merges UX and development principles, aiming to ensure developers can carry out their tasks to the highest degree, with the least amount of difficulty.
What makes for good DX?
Good developer experience considers several factors to unify UX and development principles. To encourage positive DX organizations should offer:
An appropriate architecture
Coding architectures which are too simple may require more code revision in future. Architectures which are too complex cause more difficulties in the present. Architectures which are difficult to break find a sweet spot for satisfying DX.
Tools which are accessible, stable, functional, and meet their requirements are essential. Those which provide automation of frequently-repeated tasks can also help save your team from recurring frustrations. Developers dislike having to switch windows or remove their fingers from the keyboard, so tools which provide resources in the IDE and keyboard shortcuts all save on time, effort, and irritation. Tools should also provide clarity and relevant information, alerting the developer to critical updates and offering feedback on errors. Anything which reduces “cognitive load” is beneficial towards good DX.
Short feedback loops
Working with effective code architectures, along with other factors, helps to provide short feedback loops. These are important to ensure that when a developer sends a pull request for review they aren’t left waiting for feedback. Using appropriate tools can also contribute to shorter loops, with some offering code validators and code sniffers which check the code before it is sent.
Processes ensure all tasks are carried out as expected. They offer standardized steps which need to be followed for every assignment, instilling team discipline and accountability. They also act as a safety net to ensure all necessary requirements have been taken. Consider all of the tasks processes can be adopted for, which may include deployment, QA, feedback, and even onboarding. Ensuring each of these is performed to the same high standard every time saves on revisiting topics later down the line.
Non-toxic team culture
Like any other team in a company, developers benefit from a nurturing, open culture. A non-toxic team culture allows colleagues to reach out to others for advice and guidance and to give feedback on factors which do not contribute to their own developer experience. This also allows for increased communication, which fosters knowledge sharing.
All of the above factor into how effectively onboarding can take place, with faster onboarding leading to better DX. Predictable and accessible coding architectures, functional tools, excellent processes and an open team culture allow for developers to get up to speed more quickly, allowing them to crack on with the task they want to do: code!
The benefits of improving developer experience
Like any employee given the correct tools and environment to carry out their work, developers thrive when good DX is practiced. Good developer experience benefits companies and employees through:
Increased confidence and job satisfaction
The predictability in well-designed, functional tools and architecture allows developers to quickly and confidently get started on tasks. Autonomy gained from quickly beginning work is far more beneficial than frustrations from problematic code or tools. This also reduces potential frustrations over time, creating a better work environment and increasing job satisfaction.
Time efficiency for new staff
Whether a developer is brand new to the company or recycled from another team, utilizing good DX allows them to get up to speed with software, coding architecture, and projects quickly.
Time efficiency for existing staff
When all staff are aiming towards the same goals and coding to the same standards, the time spent rectifying problematic code is reduced. The right tools, such as code checkers, can also help reduce feedback loops by automating feedback in the first instance.
Reduced Total Cost of Ownership (TCO)
The average developer loses 4 hours per week revising or rectifying bad code, amounting to a global GDP loss of $85 billion annually. When systems are implemented which reduce the possibility of bad code, costs such as these are also reduced. Furthermore, costs are also minimized onboarding new staff or getting current staff up to speed with new software.
Lower staff turnover
All of the above lead to lower staff turnover, something which is increasingly important in today’s tech market. Around 87% of companies experience a talent gap when it comes to filling their tech roles, with this expected to only become more of an issue in future. The market for software development roles will increase by around 22% by 2029, much faster than the average 5% growth seen in other industries.
Employee retention can also save on the average 35 days worth of productivity lost through the process of finding and hiring a new developer. Furthermore, when one developer leaves a company there’s always the risk of a snowball effect, where other employees follow suit.
What constitutes bad DX?
For clarity, it’s worth briefly touching on what constitutes bad developer experience. It’s sometimes easier to recognize negative processes than it is to outright aim for best practice. If any of the below relate to your organization, view them as a starting point to implement good DX through modification.
Poor software functionality
Developers can only function as well as their software and tools allow. Poor functionality is more likely to lead to poor performance, frustrating both the developer and the organization.
Tools with limited ease of use
Tools and software should be intuitive and predictable in order to allow for quick and confident work.
Non-automatable processes and interfaces
Regular processes and functions should be automated in order to speed up workflow and detract from meticulous tasks.
Getting developers up to speed on new software or interfaces should be as swift a process as possible. This allows a developer to more quickly reach a point of autonomy and creativity.
No clear processes
Processes allow for accountability and ensure that everybody is working to the same standards. Clear processes save on work having to be revisited and revised.
Poor team communication and vision
When teams are not open in communication they may experience knowledge-hoarding or a lack of unified goals. Teams working towards different goals and values will take longer producing a coherent product.
Long feedback loops
Long feedback loops disrupt a developer’s flow and waste company time, both adding to TCO.
As with the benefits of good DX above, bad developer experience comes with negatives, ultimately leading to a higher staff turnover and higher costs to your business. Implementing good DX keeps developers, and your bottom line, happy.
How Spryker can help improve DX
To help with developer experience, some companies go as far as to hire whole teams to try and improve it. Spryker wanted to offer accessible, in-built solutions, and so are soon to launch a comprehensive Software Development Kit (SDK), a tool which goes beyond any solution we currently offer.
The Spryker SDK contains a range of features developed in part to encourage positive DX. Using its clean, defined architecture, newer staff can be onboarded quickly, with easily accessible documentation, readily available in the IDE, further assisting newer developers. The SDK’s required coding conventions ensure code is written to a specific standard before it can be sent as a pull request. This allows newer developers to more confidently send work for review, whilst reducing the loop cycle by instilling a minimum coding standard. Additionally, the SDK provides preloaded templates for specific files types and functions, automatically inputting required boilerplate code.
Would you like to learn more about how Spryker could help keep your developers happy? Talk to our sales team today!