It's in your best interest to keep your developers happy and productive
How to Improve Developer Experience: 7 Things to Change
What's Developer Experience? Why Should You Care?
In software development, we talk a lot about user experience, and rightly so. Since it's the end user who benefits directly from the software we write, it makes sense that they're front and center in all our efforts. But recently, another term has started to gain traction in the context of improving software quality: developer experience.
That's what this post is all about—developer experience. We'll open by briefly explaining what developer experience is and why all software organizations should care about it. From there, we'll jump into the practical bit by walking you through a list of suggestions you can adopt right away to improve the developer experience for your team or company.
Here's my definition of developer experience: how comfortable, straightforward, and enjoyable the experience of software development is for a given team or organization.
Why is developer experience so important? Why have people started talking about it so much recently?
It's not rocket science. Software is tremendously valuable, thus the people who create software are tremendously valuable as well. It's in the interest of any company that creates software to keep its developers happy and productive, especially in a hot market where developers are offered opportunities left and right.
If you improve the developer experience at your company, you're more likely to attract great developers and keep the ones you already have. Productivity is likely to go up, and so is the quality of output.
Developer Experience: Improve It With These 7 Tips
Without further ado, let's see seven practical suggestions you can adopt today to improve the developer experience at your organization.
1. Minimize Interruptions
Generally speaking, software developers hate interruptions. Not because we're prima donnas who can't be bothered with meetings or activities that can be described as "social" (though some of us certainly are.)
The problem with interruption is that software development is an activity that requires long stretches of intense focus. As any professional whose craft demands such a level of focus will say, achieving that state takes time and effort. However, losing it is easy: all it takes is Bob from accounting or your manager to drop by your cubicle or ping you on Slack to make that focus disappear into thin air.
To improve developer experience, minimize interruptions. In more practical terms, do the following:
- Use asynchronous communication as much as possible. Try to use an internal newsletter, wiki articles, and e-mail updates instead of meetings and calls.
- Adopt a meeting-free day. Pick a day of the week, or at least half a day, in which everyone's calendar is blocked and can't be booked. That will give everyone the chance to have dedicated time for deep concentration.
- Optimize the time and duration of meetings. Meetings are unavoidable sometimes. When that's the case, pick a time and duration that makes it easy for people to focus. For instance, if your company's work hours end at 6:00 p.m., don't schedule a meeting that ends at 5:30. Those final thirty minutes will most likely be lost since they're not sufficient for developers to achieve the deep focus they need.
2. Invest in Technical Excellence
Most developers want to know that their work matters. They want to know that they're working for a team that creates software to the highest standards using the best possible practices available and delighting users with great features delivered at a fast pace.
Thus, investing in technical excellence is a great way to improve the experience of developers. The list of what you can do includes the following:
- Adopt automated testing and, optionally, test-driven development (TDD).
- Use continuous integration (CI) and continuous delivery and deployment (CD).
- Have a code review process or, alternatively, pair programming.
- Use static analyzers and linters to detect common issues in the code.
- Gather and track quality metrics.
These are just a few suggestions about what you can do to foster a culture of technical excellence in which developers feel pride in their work and feel like their work has a purpose.
3. Give Developers Autonomy
Autonomy is a big driver of productivity and happiness at work. In order to feel fulfilled, people need to have at least some degree of autonomy over the way they do their jobs.
Generally speaking, developers should be awarded a high degree of autonomy over how they do their work. Allow teams to decide the following:
- Which branching workflow best suit their needs
- Whether they estimate using points, T-shirts sizes, hours, or something else entirely
- How strictly they want to adhere to the ceremonies of their preferred flavor of agile (for instance, whether or not to have a daily scrum)
On an individual level, allow developers to choose whether they want to work remotely, at the office, or in a hybrid way. Give the contributor flexibility to assemble a benefits package that makes sense for them (some people have children, others do not, so benefits that cater only to people who are married with kids are bound to alienate a sizable part of your workforce.)
4. Remove the Friction When Creating Development Environments
One thing that virtually every developer hates is a manual, tedious, and error-prone process when creating a new development environment. These processes cause developers to take a long time until they're able to contribute code to the team. Worst of all, the processes are often not easily reproducible, which means differences between environments can be introduced.
As a consequence, the development environment drifts away from staging and production, making bugs more likely and creating the infamous "it works on my machine" excuse.
To improve developer experience, invest in ways to facilitate the creation of consistent and reproducible environments. Container solutions such as Docker are a great way to achieve that. Alternatively, you can leverage solutions that offer the creation of development environments in the cloud.
5. Invest in Developer Education
Developers also have a great experience when they feel like they master the tools of their trade. The feeling of being in control is simply exhilarating. It doesn't only lead to higher quality output, but it's also more enjoyable.
So, a sure way to improve developer experience is to invest in their education. There are several ways to do that:
- Offer developers a monthly or annual stipend that they can freely use to invest in courses, books, or certifications.
- Give developers time (as in, paid company time) during which they can study and practice
- Offer company-paid learning resources such as a company library or services like Udemy or Pluralsight
6. Don't Be Cheap When It Comes to Tools
If you want your developers to do great work, you must give them the tools to do so. If your developers can't deliver great work due to a slow computer or the lack of a software license, that's on you.
Your engineers should have great hardware, such as a company-provided laptop, monitor, keyboard, and so on (and even office supplements like a great chair).
You should also provide the necessary software. That includes IDE licenses, subscriptions to services, plugins, and what have you. No matter what your developers need in order to perform their work, the company should, within reason, provide it.
7. Listen to Developers' Feedback (and Act Upon It)
Last but not least, here's the final item on our list: listen to your developers!
Here's the thing: software developers are usually smart people who care about what they do. Chances are they have pretty good ideas about how to improve not only their own experience but that of their teams and organizations as a whole.
Listen to your developers. When it makes sense, put their suggestions into practice. Besides the benefit created by the suggestion itself, this will have the additional benefit of improving the team's morale. Your developers will feel valued and like an essential part of the team. Which, of course, they are.
Improve Developer Experience, Improve Your Company
If your organization is a tech organization, then software developers are arguably your most precious assets. So, improving developer experience, besides being a decent, human thing to do, is also a great investment. It's in your best interest to keep your developers happy and productive, and as you've seen in this post, this is something you can achieve relatively easily.
The suggestions in this post are simply suggestions. Your mileage can vary (for instance, if you work in a highly regulated industry, giving developers a high degree of autonomy may not apply.) As always, use your judgment. Consider the list in this post as a starting point. Tweak it as needed, trim it, and add to it. What matters is that you improve the developer experience at your company for the sake of your developers, your end users, and the company as a whole.
Thanks for reading!
This post was written by Carlos Schults. Carlos is a consultant and software engineer with experience in desktop, web, and mobile development. Though his primary language is C#, he has experience with a number of languages and platforms. His main interests include automated testing, version control, and code quality.
The Guide to Cloud Dev Environments
Cloud development environments are getting popular. Google uses them. Microsoft Uses them. Facebook uses them. But how and why? And should I use cloud environments? Check out this post to find out.
Instantly Improve Docker Performance on Mac
Running Docker on macOS typically means dealing with a slower, louder, and much hotter Macbook. This is because macOS just doesn't play well with Docker. However, there are easy ways to improve your computing experience - find out how in this post!