Good Developer Experience
Do not forget to make your developers happy, and keep them happy!
What Is a Good Developer Experience
The Developer Experience (DX) describes the experience developers have while using or working on your product. It is a package of positive and also negative feelings. In many companies, dealing with DX is often secondary to trying to make a User Experience (UX) as good as possible. This approach is unfortunate - developers are users too! They use your product, frameworks, tools, etc. and they have some experience of using it. It is up to you to decide if this experience is going to be a good one or a bad one. But remember, their satisfaction and happiness are crucial for the success of your project. Happy developers create exceptional software in the long term. A positive developer experience, ensures that your developers are happy, satisfied, and less likely to leave your team.
We define a great DX by these four factors:
1. Fitting architecture
Find a compromise between simple and more complex architecture. Simple means more pain later, complex brings more pain now. Consider the size of your project and your team. Good architecture is difficult to break, has short feedback loops and it has a great introspection.
2. Great tools
Automate where possible. Repetitive tasks are exhausting. Automation lets your team understand the configurations.
3. Processes to back that all up
Processes work as automated checklists, and give you have consistent steps that need to be done each time. Defined processes help you with team discipline. Use processes for QA, deployment, feedback, and for onboarding if your company is big enough.
4. Nontoxic team culture
Define the purpose of your company: making money should not be the only goal. Culture itself is the most important brainware (a software that runs in the brain) you can install within your company and the team - every decision the developers take will be filtered through the installed brainware. If they do not agree with the brainware, they ignore it.
Why You Might Want the Good Developer Experience
The teams with good DX are highly productive, and display these traits:
-
Sense of impact
They understand that they are not just making money. They know that their work matters, they are improving someone else’s life.
-
Great sense of ownership and responsibility
They are responsible for the success. Every team member should feel a responsibility for the company’s success.
-
A common goal
With the team, their division, and the company as a whole.
-
Friendliness and honesty
We call it “hey bro” culture. We emphasize sincerity with great respect.
-
Allows for failure
Developers should be brave and take risks. But risks should always be calculated, and developers have to be aware of how much of a boom every action can cause.
Traits of culture with bad DX:
-
Finger-pointing
Team members may blame each other for poor work. This is a very toxic thing but it happens a lot.
-
Big penalty for a failure
For example, when your boss says that if you do not meet the deadline, you can be fired
-
Constant crunch time, constant overloading of the teams
-
Hostility and uncertainty
Unhealthy competitiveness between teams (for example, this guy was promoted because he did a better job than me)
-
Diluted responsibility
In big companies, it can feel like nobody is responsible for anything. It takes balls to say: “sorry guys, I screwed up”. It is crucial to be able to take responsibility.
Problems the Good Developer Experience Solves
- Knowledge hoarding
- Bad Product-Market Fit
- Demotivated Team
- "Not My Problem" Mentality
- Unsuccessful Product
- Unhappy Clients
- Disconnect Between Business and IT
- Toxic Team Culture
- Poor Code Quality
- Increased Cost
- Meaningless Work
How to Implement the Good Developer Experience
There is a famous "Scope Triangle" created in the mid 1980s by Dr. Martin Barnes. It shows the relationship between the three primary forces in a project:
Source: Scope Triangle
This triangle means that if you want to increase the time, you have to increase money or quality.
We disagree - that is not how it works in reality. You have to insert an emotional cost to the triangle:
If your developer has to stay late to finish a task, it is not only the time they have to invest. Another part of this investment is an emotional cost. Having a great DX helps you having this emotional cost under control. Keep the emotional cost low to make your developers happy.
Common Pitfalls of the Good Developer Experience
- Giving too much information to developers too soon.
- Giving too little information to developers when they need more.
- Overusing processes can result in a mentality of “one size fits all”
- Over-engineering tendencies
- Thinking that agile = an excuse to throw more work at the developers
Resources for the Good Developer Experience
- Hackernoon: The Best Practices for a Great Developer Experience (DX)
- Youtube: Vratislav Kalenda: The only way how to have happy & productive developers [DevFest CZ 2018]
- Cristiano Betta: The 7 Sins of Developer Experience
- The AppsLab: Developer Experience: What and Why
- Developer Care: Developer Care: restoring the common core
Want to write for DXKB?
Feel free to contribute. People from DXKB community will be more than happy.
Related articles
ALL ARTICLES
Design Sprint
A Design Sprint is a framework that reduces the risks associated with product development. It is an intense process done by a small team in just 3 - 5 days.
Read moreStart as a coder
Starting on the journey of coding can be extremely overwhelming. But consistent efforts and determination will surely help you out in this journey.
Read moreGit Flow
Git Flow is a specific branching system for Git. It helps the team to better control and add different project versions.
Read moreIcebreaker
An icebreaker is an activity you can use at the beginning of a meeting to make attendees more comfortable with each other, encouraging them to speak up, listen up, join in, and open up to new ideas.
Read moreEffective Team Communication: Ensuring Health and Productivity Across All Team Structures
Effective team communication creates a healthy, productive environment across cross-functional team structures, ensuring team success and cohesion.
Read moreALL ARTICLES