What Is A "Good" Developer Experience?

Developer experience (DX, devex, DevEx) is one of those buzzwords floating around in the developer community. But why is Developer Experience so important and what does "good" dx mean anyway? 

Sales and design teams have always stressed the importance of customers and their user experience. When it comes to software development, engineering teams are also looking for a positive developer experience, and that means using the best developer tools and APIs to build high-quality software with a great UX for end users. In other words, improving a developer's journey in making software as well as the overall software development process, from A to Z. This, in turn, can enhance productivity and reduce cognitive load, allowing developers to work efficiently on their projects.

This approach shouldn't only be spearheaded by devops and isn't only about processes, tools, and developers creating solutions. It's what software engineers bring to the table and how development teams experience challenges and the very human aspects influencing their day-to-day tasks.

In this article, we're diving deep into the world of improving devex, focusing on three main pillars: Wellbeing, Teamwork, and Work Output. It's more than just writing code, pull requests, metrics, and the choice of programming language. 

Gain developer insights - simple, fast, and easy!
Learn more

Is Developer Experience Just Another Buzzword?

Workplace wellness has evolved over the years, and Developer Experience stands out as a significant milestone in this progression.

Developer Experience can be attributed to the growth of knowledge-based industries and changing workforce demographics. With software eating the world, developer teams have started to demand a seat at the table. They've become aware of the value they bring to society and want to contribute their skillset in a positive way. As they enter a company and begin (or continue) their careers, they bring with them the demand for a more mindful and holistic approach to their wellbeing. They look beyond revenue growth and business success. They don't want to just build systems but also be up to date with their skills and wellbeing.

What Constitutes a Positive Developer Experience?

Although Developer Experience may vary for each individual, there are certain consistent themes that define great Developer Experience. Championed by developer-first strategies, great Developer Experience thrives on innovation, agility, and team collaboration. A part of Developer Experience encompasses focusing on creativity while creating high-quality code. This, rather than fret about technical debt or documentation or ensuring that business goals are met. Developer Experience should also involve software engineers eliminating tedious processes and eradicating blockers that might hinder progress. Increased developer productivity is also key and this can be maximized with feedback loops within key interactions like 1:1 meetings or pulse checks.  

The ultimate goal of positive devex is to refine workflows, processes, and work settings, both remote and in-office, to establish a rewarding, supportive, and stimulating work atmosphere. It is only when physical, mental, and emotional wellbeing intertwine that developers can truly promise the creation of robust, dependable, and user-centered software solutions.

Read more: 10 Questions to Ask to Determine "Good" Developer Experience

Who Is Responsible for Developer Experience in Software Development?

Many organizations are starting to invest significant budgets on Developer Experience. The responsibility of this in software development can fall on multiple roles, including:

Engineering Managers: Oversee teams and ensure that developers have the tools and environment they need to be productive and satisfied.

Product Managers: Align the Developer Experience with product goals and ensure that tools and workflows meet developers' needs.

Developer Advocates/Evangelists: Focus on understanding and improving the Developer Experience, often acting as a bridge between developers and the rest of the organization.

UX/UI Designers: Work on creating intuitive and efficient interfaces for developer tools and platforms.

DevOps Engineers: Ensure that the infrastructure and deployment processes support a smooth and efficient developer workflow. Here, DevOps processes are streamlined to minimize bottlenecks, automate repetitive tasks, and foster a culture of continuous integration and delivery.

Senior Leadership: Create a culture that prioritizes Developer Experience and invests in the necessary resources.

Dedicated DX Team: A specialized Developer Experience team that focuses on creating a knowledge base regarding tooling, documentation, onboarding, and feedback collection to continuously improve the developer environment and practices.

What Does a Dedicated Developer Experience Team Do?

Developer Experience teams focus on improving the overall experience and productivity of developers within an organization. Here are some key responsibilities of a DX team:

Tooling and Infrastructure: Develop, maintain, and optimize the tools and infrastructure that developers use, ensuring they are efficient, reliable, and easy to use. This may include providing developers with a developer portal, Integrated Development Environments (IDEs), Software Development Kits (SDKs), etc.

Documentation and Resources: Create and maintain high-quality documentation, tutorials, and other resources that help developers understand and effectively use the tools and platforms available to them.

Onboarding and Training: Design and implement onboarding processes and training programs to help new developers quickly become productive and familiar with the company's tools, processes, and culture.

Feedback and Support: Collect feedback from developers about their experiences, pain points, and needs. Provide support and address issues to continuously improve the Developer Experience. Good devex means not making the job harder but easier, and that starts with open and honest communication and support.

Collaboration and Communication: Facilitate communication and collaboration between different teams, ensuring that developers have the information and support they need to work effectively.

Process Improvement: Continuously evaluate and improve development processes to enhance productivity, reduce friction, and ensure a smooth workflow for developers.

Advocacy and Culture: Advocate for the needs and interests of developers within the organization, promoting a culture that values and supports a positive Developer Experience.

Innovation and Experimentation: Explore and implement new technologies and practices that can enhance the Developer Experience and drive innovation. Ensure developers are up to date with the latest advancements and encourage a culture of experimentation.

By focusing on these areas, a dedicated Developer Experience team helps create a productive, satisfying, and efficient environment for developers, ultimately contributing to the success of the organization.

Ways To Improve Developer Experience With Wellbeing

What are some ways to improve developer experience? In the context of developer experience, wellbeing is a holistic concept that encompasses a developer's motivation, emotional state, and overall job satisfaction. It's about ensuring that developers are technically equipped, emotionally prepared, and have the drive to bring their A-game every day. When software companies put too much pressure on developers, it can lead to burnout and decreased productivity. To counteract this, companies can streamline their development workflows by simplifying the pull request process, making it quicker and easier for developers to collaborate and review code. Additionally, increasing deployment frequency can help reduce the stress associated with large, infrequent releases by promoting a more continuous and manageable deployment process. This approach not only enhances developer satisfaction but also improves overall project efficiency and success.

As engineering managers, enhancing wellbeing is the most important job. For me, I spend quite a bit of time creating a positive work environment where my developers feel valued, respected, and heard. It's about fostering a culture of empathy, understanding, and psychological safety, where my developers' needs and concerns are acknowledged and addressed. I also aim to show this to my dev teams right from the onboarding process. 

Providing the necessary resources is a crucial aspect of uplifting developer wellbeing. Developers need the right tools, technologies, and training to do their job effectively. But it's not just about physical resources; it's also about providing emotional support and ensuring developers have a healthy work-life balance. This means implementing flexible work hours, remote work options, or wellness programs that focus on mental and physical health.

Regular check-ins are a great way to learn about your developers' needs and concerns. I do this with meetings or just casual conversations. The goal is to create a safe space where developers can share their thoughts and feelings.

Surveys are good too to gauge mood and wellbeing. Platforms like HAY allow developers to say what they feel. The feedback and insights that are gathered allow engineering managers to identify areas of improvement and take proactive measures to enhance wellbeing.

Throughout my years as an engineering manager, I've also learned about the importance of recognizing big and small achievements. The recognition could be big or small, as long as it's unique to the person receiving the praise.

The effect of giving praise boosts morale and reinforces a sense of purpose and belonging at the company. Recognizing your developers' hard work and expressing genuine appreciation for their valuable contributions is essential. It's about letting them know that their efforts are highly valued and recognized.

At the end of the day, enhancing wellbeing requires a people-first approach. Developers are not just resources but individuals with unique needs, aspirations, and challenges.

Ways To Improve Developer Experience With Teamwork

Software isn't built in silos. It's a team sport, and the teamwork dimension of good devex centers on the interpersonal dynamics within the team, the quality of communication, and the level of mutual support given among team members. When there's a miscommunication, it could be because a developer on the team doesn't feel to be a part of a cohesive unit, and does not give or receive regular feedback.

Improving teamwork requires a multi-pronged approach and fostering open communication is one part of it. Developers need to be able to come together and feel comfortable expressing their ideas, concerns, and feedback. Everyone's voice is heard and valued in safe spaces, boosting morale and leading to better problem-solving and decision-making.

Promoting a culture of mutual respect and cooperation is also another key ingredient in good teamwork. It entails recognizing and appreciating the diverse skills and perspectives within the team while encouraging team members to collaborate and learn from each other. It's all about creating a sense of camaraderie and shared purpose, where everyone is working towards a common goal and supporting each other along the way.

It's not enough just to mention all of these things, you have to provide the opportunities for your development team to come together and learn from each other. How? By organizing team-building activities, social events, or collaborative projects. These activities enhance team cohesion and make the work environment more enjoyable and fulfilling.

Regular team meetings, code reviews, and pair programming sessions are also practical ways to enhance collaboration and mutual learning. These practices improve the code's quality and facilitate knowledge sharing, skill development, and collective problem-solving.

Simple tools such as setting up a kudos channel on Slack or conducting quick surveys can prove invaluable in monitoring and enhancing teamwork. A kudos channel enables team members to publicly recognize and celebrate each other's contributions, uplifting team spirit and nurturing a positive collaborative environment. Meanwhile, surveys offer valuable insights into team dynamics, allowing for the identification of areas that can be improved and strengthened.

Ways To Improve Developer Experience With Work Output (Developer Productivity)

Developer productivity is key, but assessing work output has often been viewed as a mysterious process. However, it doesn't need to be like that. For me, work output serves as a reflection of a developer's capacity to create software that not only meets desired functionality but also maintains a good pace (velocity) and upholds a high level of quality.

As engineering managers, our responsibility when it comes to work output is to establish clear goals, remove obstacles, and foster an empowering environment that enables developers to do their best work.

To do this, engineering managers need to focus on reducing cognitive load. This can be achieved by simplifying processes, providing clear documentation, and ensuring developers are not overwhelmed with tasks that distract them from their core work.

Ensuring that processes are streamlined is another crucial aspect. This involves making workflows more efficient, reducing unnecessary bureaucracy, maintaining a single source of truth, and automating as much as you can repetitive tasks. The goal is to ensure that developers spend most of their time writing and optimizing code rather than doing manual work like data collection, file management, or data entry. 

Providing state-of-the-art tools that make life easier. Developers need access to the best tools available for their work, whether it's advanced Integrated Development Environments (IDEs), effective version control systems, or robust testing frameworks. These tools not only make their work more accessible but also significantly improve productivity and the quality of the output.

Regular training sessions are necessary to help developers upskill on the latest technologies and best practices. This ensures they can tackle new challenges and stay ahead of the game when it comes to technological advancements.

Maintaining high-quality output is non-negotiable. This can be ensured through code quality standards and automated testing. Code quality standards provide a guideline for writing clean, maintainable code, while automated testing helps catch bugs early in the development cycle, reducing the time and effort spent on debugging.

Finally, we can measure key metrics and improve work output using various tools and methodologies. Static code analysis and linters can help enforce coding standards and catch potential issues early. Continuous deployment practices ensure that new changes are automatically tested and deployed, reducing the time to deliver updates. 

Cycle time, which measures the time it takes for a change to go from start to deployment, can provide insights into the efficiency of the development process. Checklists with best practices, like The Joel Test, can serve as a guide for ensuring that the team is following practices that lead to better code and, consequently, better work output.

Rome wasn't built in a day 🏗️ Enhancing work output is something that takes time and involves setting up the right environment, providing the right tools, and following the best industry practices. As engineering managers, when we get this right, nothing can stop our developers from doing their best work.

Conclusion

Nobody wants a poor developer experience. But by focusing on these crucial elements in software development — Wellbeing, Teamwork, and Work Output — you allow developers to focus on themselves as much as on processes and tools used in the making of a technical product.  In doing so, you pave the way for not only a more productive and innovative development environment but also for happier, more motivated developers who can consistently deliver exceptional software solutions.

Gain developer insights - simple, fast, and easy!
Learn more