A piece of software cannot exist without its users. If there is no demand for it, and if it does not benefit your target audience in any way, it loses the purpose of its existence. Being aware of this, companies do everything in their power to keep end-users happy. User experience is at the core of most decisions taken by a company, and products are often refined with user feedback in mind.
It is equally important to direct your focus toward your developers. Minimizing obstacles or inconveniences in their workflows, helping them with automation of repetitive tasks and enhancing their experience of building the software will ensure they are not only productive during the onboarding process but also satisfied with their jobs. In this article, we dig deeper into developer experience. It’s crucial to understand this experience and its importance before seeking to improve it for the developers in your team.
What is developer experience?
A developer’s work life is not without challenges. Sometimes it’s hard to get your local set-up functional. Running tests can be an unnecessarily long process. The feedback loop moves at a snail’s pace and it often takes you three JIRA tickets to get a piece of infrastructure up and running. At times, the red tape feels onerous and endless. Such blocks slow software engineers down and interfere with their workflows. If their productivity takes a hit, their velocity declines, and the impact is noticeable in the software development process.
Developer experience (or DX) aims to improve the day-to-day quality of life for developers. A good developer experience (good DX) is a measure of how empowered your developers are to complete the tasks that help the team move forward quickly on the project. The speed at which your developers produce quality work is an important metric in the software development process, and enhancing developer experience is one way to increase their speed. By enabling developers to do their best work without unnecessary burdens, you can simultaneously improve their efficiency and happiness.
What falls under developer experience?
Developer experience comprises all activities that developers must partake in as part of their role in the software development process. It’s an umbrella term covering developers’ multiple daily activities that are wide-ranging and can include the types of work discussed below. A high-quality developer experience depends on the ease with which developers can perform these various tasks.
For instance, how easily can a new developer spin up a microservice and set up their local environment? Do they need to spend an entire week wiring the hardware and looking at documentation? Or is there already a script they can run that will have all necessary configurations built for them? Other considerations include the time it takes to develop software locally and how complicated it is to set up some examples. If a local microservice environment already exists, can a developer simply wire in a new service and test it without doing mocks?
The number of microservices needed for testing and debugging your services is another important factor. Does the developer need to spin up fifteen microservices to test something end-to-end? Or does one service suffice, in addition to mocking everything up or pointing it to a development environment to test against it? Developer experience is also impacted by how easy it is to test changes. For example, does the developer have access to ephemeral environments to open a pull request that automatically spins up a staging environment for that branch, which facilitates testing?
For developers in some companies, setting up a project from scratch can be a long-winded process. It involves opening several JIRA tickets, asking someone to create and run a repository for them, then obtaining the permissions and dependencies for it. Subsequently, they have to add it to the staging and production environments one after the other. However, in other cases, developers need only use a template. With a few clicks, the set-up is ready. This method not only helps simplify the process for the developer but also assures the team that best practices have been followed and obviates the need to check for anything else.
Infrastructure provisioning is another component of the developer’s job. The infrastructure being based on TerraForm or AWS can change the developer’s workflow. For infrastructure based on AWS, developers might need to contact people with access to the AWS console who are willing to help out. The ease with which a developer can start using new technologies is an important aspect of the developer experience.
Why is developer experience important?
Let’s further examine the role that developer experience plays in your developers’ work life and its contribution to the software development process.
A great developer experience bolsters developers’ morale and increases retention. When developers are willing and able to do their best and there is less churn in the engineering team, your organization can move faster, and if your team can speedily perform assigned tasks, it directly impacts your bottom line. Developer experience is, therefore, a key business value proposition that sets off a domino effect resulting in considerable improvements in business outcomes.
Various bottlenecks can hinder the developer experience, which can be detrimental both for the developer and the software being built. For those who like to think in rough estimates, we recommend internally calculating how much productivity you risk losing because of poor developer experience. Let’s use an example of an organization with a slow build process. This can include everything from tests taking 30 minutes to run or a small fix taking triple the amount of time designated to developers spending a third of their day waiting for programs to run and test. Eventually, you are unable to deploy anything until your cycle time decreases. In such cases, your developers’ productivity takes a nosedive. If we assume productivity loss to be 15% and if a single developer salary costs you $250,000 a year, your wastage would amount to $25,000 per developer per year. For a hundred developers, you would suffer a $2 million loss. This example affords a clear picture of your company’s potential monetary loss when your intangible processes and frameworks are inadequate.
Developers form the backbone of your software development ecosystem. If they have a suboptimal experience, your company will face fallout. On the other hand, a robust developer experience could help close contracts quickly and increase levels of customer success and happiness, propelling your company forward to beat the competition. That’s why we recommend thinking deeply about enhancing the developer experience at your company.
How can you improve the developer experience at your company?
Collect feedback and be informed
First, analyze and take stock of what is and isn’t working for your developers presently. If your team is small, discuss this question during your collective retrospectives. Whenever your team gathers for a retrospective every couple of weeks, have an open and honest conversation about what could be better and how you can improve it together. You can also consider mapping out their programmer journeys, which will help you get to know each of them better and understand what works for them.
At Cortex, for example, we figured out that our CI pipeline was not up to the mark. It would take about twenty minutes for it to run our front-end app. With some parallelization, the same task now takes about three minutes. The increased speed made everyone on the team happier.
A large organization might choose to conduct internal surveys to learn what matters to developers. Take a small subset of your employees and ask them what aspects of their experience they consider important and how their daily work life can be improved. Once you have a shortlist from your developers, you can conduct a broader survey that has them rank each listed aspect of their experience on a ten-point scale in order of priority. While this may seem like an involved process, it will give you valuable insights into workplace trends that you can use to create useful tutorials and enhance the experience of developers on your team.
Asking your developers what they need and how you can contribute to their success opens up the possibility of transparent two-way communication. It helps create a healthy and safe environment for developers in which they feel heard but have the confidence to innovate and experiment.
Use a developer portal
The developer portal is a step in the right direction because it builds on the concept of self-service. This includes spinning up new projects, setting up your local environments, cleaning up front-end interface or back-end code, putting up infrastructure, understanding what is running, and figuring out how to run tests. For example, if you are testing for a specific microservice to understand that service’s capabilities, a developer portal becomes a single repository of information for all your needs. Think of it as a single pane of glass. All the functions live in a single place, as opposed to existing as ten different tools.
The problem with using several tools to handle different functionalities is the unnecessary complexity it generates. Each time you build a service, you undertake the extra step of figuring out which developer tools you need and where they are located. Instead, collecting relevant information in a single place improves discoverability. Developers are incentivized to build functionality when they know they have the ability to find and use those features repeatedly. A developer portal also allows you to treat the developer experience as a product. You can now track what developers are using and also receive feedback.
A developer portal is a powerful tool, and setting one up will go a long way toward making your developers’ lives easier. Today, there are a multitude of options available to companies interested in setting up a developer portal. Depending on your developers’ needs, you can pick from open-source projects like Backstage or proprietary ones like Cortex. Many companies also invest time in building such portals internally.
Build a dedicated team
Companies also hire product managers dedicated to improving the developer experience internally. If your organization is large enough, consider bringing together a dedicated developer experience team. Their primary duties would be to conduct research into developer experience, spend time building the infrastructure to improve it, and maintain any developer portals you use.
Whatever the size of your company, focusing on developer experience is a must. Instead of thinking about a positive developer experience as a nice-to-have, we suggest making it a priority and allocating adequate resources to it.
Let Cortex assist you
Once companies understand and acknowledge the value of developer experience, they begin noticing that there is always room for improvement. A developer’s role in a company is not usually limited to one or two tasks; they undertake numerous responsibilities and therefore have various facets to their work experience. Understanding and enhancing developer experience, even if it’s complex, ultimately pays off in terms of business outcomes as well as developers’ well-being.
Cortex’s service catalog is a one-stop solution that gives your developers visibility into the services they build and own. This kind of centralized repository is especially beneficial when your team is using several tools to get their work done, which can get cumbersome and slow them down considerably. The catalog offers continuous integrations for a wide variety of tools often used by developer teams. See Cortex in action by booking a demo today.