Developer Experience Playbook for Developer Happiness and Productivity
Critical elements for driving developer experience and organizational outputs
Key Takeaways
Developer experience encompasses all of the interactions and resulting feelings that affect developers daily.
Understanding the negative and positive experiences your developers face with people, processes, and technology can empower your organization to improve areas that are dampening developer happiness and productivity.
Fostering and measuring developer experience is essential for ongoing productivity and sustainable development velocity.
Launchable is highly focused on improving developer experience through better testing with five use cases.
Developing software looks different in real life than most people think. On any given day software developers balance time writing code, running tests, interacting with their suite of tools, attending meetings and stand-ups, and collaborating with peers among many other tasks.
Developer experience encompasses all of the interactions and resulting feelings that affect developers daily.
Issues can get in the way when trying to work with the software development pipeline and all of the moving parts that it entails. These issues often have nothing to do with the developer and their performance, but greatly contribute to the developer experience.
Developers can get crushed under the pressure of unrealistic expectations and a lack of tactics to execute them. Job dissatisfaction, burnout, and frustration can cause a decrease in developer experience resulting in lower productivity and contributing to turnover rate within organizations.
At the same time, more companies than ever need top talent to keep their products up to par with competitors. Creating an environment where improving developer experience is prioritized nurtures developer happiness, team productivity, and organizational outputs.
What is Developer Experience?
Developer experience covers a combination of all the social and technical system touchpoints that a developer uses to plan, produce, and monitor software engineering. It’s the breakdown of everything the developers interact with daily. It can include elements that developers reference such as documentation or SDKs, tools that they use including source code repositories and build automation, testing processes or platforms that they reference like application performance monitoring (APM) dashboards.
Developer experience also includes making sure that the culture of your organization including team communication and project management is making developers' lives easier. DevOps is an important aspect of company culture to consider, as it has to do with sharing responsibilities between previously-siloed stages of development, and communicating well with these different teams.
Developer experience is about removing the friction that interferes with developer happiness and productivity. It isn’t just about loading more tools onto your SDLC. It’s about putting great practices and organizational methods into place to streamline the entire daily process.
The Harm of Poor Developer Experience
When developer experience isn’t taken into consideration by an organization, it can cause a significant negative impact on developers. Here are some all too common examples of the harm poor developer experience has on individuals and organizations due to ineffective processes and tech stacks.
Poor Processes
Eshin’s company has been working on automating parts of their SDLC, which has helped in some ways. But, one of the criteria for running an automated, agile development lifecycle is adding in testing at every stage. The idea is to get testing done as early and often as possible, so developers don’t have to fix their mistakes later downstream.
But, Eshin is wondering if he prefers the pre-automation era of his job. His company’s executive team couldn’t decide which tests to run, so they said, “let’s just run as many as possible, just to be sure that we do this right.” So, most of Eshin’s job now entails running tests, checking tests, and trying to decide if any of them are giving him false positives or negatives. Truth is, he misses actually coding.
Troublesome Tech Stacks
Hannah appreciates all of the new solutions that her company is incorporating into its development processes. But, these tools are not configured to work together and keep crashing or sending error messages.
She’s frustrated by the lack of productivity each day. Every time she commits a new artifact, it’s a mystery of whether she’ll get to continue coding, or battle against the programs for hours, trying to figure out what went wrong with all of those interconnected tools.
Unrealistic Deadlines and Poor Collaboration
Michael’s team grew faster than anyone ever anticipated. And everyone works at a different pace, creating new features and functions for their proprietary software, then storing their work in whatever format and file hierarchy make sense to them. Michael was told that he needs to get a new feature update out, in time for a big campaign that the marketing/sales team is running.
But, he can’t find all of the source files for this specific feature. Plus, he can’t understand the documentation on the pieces that he does have and is unclear on who in his team originally wrote them. It’s become a late-night endeavor, digging through company files for hours after work, and racing against the clock. He has limited time but hasn’t even started the actual work of revising the feature yet.
The key to defeating these bad developer experiences is with development tools that focus on fixing critical friction points.
The Three Pillars of Developer Experience for Tooling
Effective developer experience promotes innovation, speeds up releases, reduces risk, and supports iteration. When it comes to tech stacks and tooling, their developer experience has the same foundational elements as user experience, which can be broken into three pillars: usability, findability, and credibility.
Usability
Development tools need to be practical and usable for team members. Tool fragmentation often stands in the way of creating a smooth, end-to-end experience for developers. Developers sacrifice development time to mitigate issues in their complex toolchains.
To prioritize developer experience, companies need to think through interactions between tools and the features within individual tools. Are there any unnecessary steps that developers are needing to take, to switch between systems? Is context switching happening too often, across the board?
Findability
Another big roadblock for developers is the difficulty of finding what they need when they need it. If the development team fails to find ways to streamline and organize files, lots of time can be wasted. To fix these issues, developers need logical, contextual, and concise navigation options. These options also need to be thought through in the context of every tool that a developer uses.
Credibility
The tools used by development teams need to be high quality. If developers can’t trust the toolkits chosen by management, then there’s a chance that they could “go rogue”, each using their own chosen solutions and causing technical debt and confusion. The key to finding credible solutions for your team is not just focusing on output, but on user-friendliness and dependability as well.
But, developer experience is more than tool quality.
Thanks to open source, the options for development tools are endless. This gives ample opportunity to improve developer experience, but also creates a lot of noise with the number of tech stacks and toolchains. It also increases the chances that these tools won’t “play nicely” with each other, also contributing to a negative developer experience.
Developer experience not only needs to focus on getting the right tools but more importantly, the entire end-to-end journey of the developer.
What is Developer Experience Engineering?
The industry is starting to see the importance of focusing on developer experience. This is evident as more companies create Developer Experience Engineering roles. This title is a hybrid between playing the role of a developer advocate and working with integration engineering and documentation teams.
DevEx Engineering involves many of the same responsibilities that a typical UX team would have but is specifically focused on the end-to-end developer experience. A few examples of the responsibilities of a developer experience engineer include:
Working on integrations
Advocating for developers to other departments
Building and testing system prototypes
Teaching developers how to use systems
Reviewing developer feedback
Depending on the size and maturity of your organization, Developer Experience Engineering might be the next step. But even if it’s not, improving developer experience is possible, especially when you know how to effectively measure it.
Measuring Good Developer Experience
Fostering and measuring developer experience is essential for ongoing productivity and sustainable development velocity. When a business decides to bring simplicity, ease, and delight into a developer’s workflow, they will see improvements in two pivotal areas: organizational output and developer happiness.
Organizational Output
Good developer experience increases development velocity and drives organizational output. When an organization focuses on continuous improvement and streamlines feedback, they in turn create a better developer experience.
Take the CI/CD pipeline as an example. A well-built Continuous Integration process makes it so developers don’t have to worry about disorganized or outdated code (thanks to the repository), taking the extra trouble to manually compile builds, or missing key tests at the beginning of the cycle and needing to backtrack. And when all of these issues are mitigated, software releases become more efficient and high-quality.
Continuous Delivery improves efficiency for the software release, as well as ease of use for developers because they no longer have to perform this delivery manually. And for those teams using Continuous Deployment, they are further increasing output through developer experience measures by facilitating an even more rapid turnaround of software releases, as well as facilitating less human intervention.
Developer Happiness
Developers need to be happy at their jobs, or a company risks experiencing high turnover rates. Whenever a team member chooses to leave an organization, a price has to be paid for their absence. New developers need to be recruited and trained.
Developer dissatisfaction can become a domino effect within an organization. Negative conversation from more developers leads to more disgruntled employees. Resignations lead to even worse job situations for the people who stayed, as they have to pick up the slack after team members leave.
Developer experience is not only about creating better outputs but about paying attention to the humans who help your organization run.
With 75 percent of DevOps professionals in a recent survey reporting losing over a quarter of their time to testing bottlenecks, a focus on the common pipeline pain points is a good place to start addressing ways to improve developer happiness and foster retention.
Spark developer joy by focusing on empowering them to innovate more by reducing their daily pipeline bottlenecks. Their level of job satisfaction could make or break your business’ success. Focusing on providing a good developer experience is a great way to ensure that they have the tools they need to perform well and maintain job satisfaction.
Five Ways to Improve Developer Experience with Launchable
Here at Launchable, we’re highly focused on improving developer experience through better testing. Running the right tests at the right time can reduce critical development bottlenecks, improve the developer experience of your pipeline, and amplify production velocity. At Launchable, we help teams:
Build out a data-driven pipeline. Launchable provides a richer view of test results, helping developers triage failures and fix them more quickly. These testing reports lead to more effective, data-driven decisions.
Remove testing bottlenecks. We use machine learning to select the right tests to run for a specific code change. Rather than running an entire suite of irrelevant tests against every change- causing a bottleneck- Launchable enables teams to only run the tests that matter in the given situation.
Launch fearlessly. Launchable also ensures that speed and quality are prioritized during software releases. We empower teams to test “early and often”, without compromising the quality of testing that they perform at every stage.
Increase output and velocity. Using data from your CI runs, Launchable provides various features to speed up your testing workflow so you can ship high-quality software faster.
Facilitate developer happiness. Developer experience is one of Launchable’s top priorities. By minimizing wait time for tests and other test-related roadblocks, we make developers’ lives easier, leading to higher job satisfaction.