Human Centered Design (HCD) and the Developer Experience (DX)
Human Centered Design (HCD) is at the heart of creating exceptional customer (and user) experiences. HCD methods, such as user research, UX design and prototyping, and usability evaluation, are ingrained in RIVA’s Digital Product Delivery model which allow us to create efficient, highly usable digital experiences for our federal government customers. In most cases, citizens, or those interacting with agency digital platforms, are the end users we have in mind when designing and developing complex digital systems needed to execute agency missions. But what about the people who are building—and I mean coding—these digital products? The Developer Experience (DX) is often riddled with a complex array of COTS, open source, and cloud-based tools utilized by progressive agencies such as US Patent and Trademark Office (USPTO) who have adopted a DevOps “Software Factory” model. We believe DX deserves the same attention and HCD approach to design efficient, usable toolsets that allow developers the ability to focus on producing quality digital products to produce mission-aligned outcomes.
The Developer Experience (DX) and DevOps Culture
The Developer Experience (DX) sits at the center of the DevOps culture in the Software Factory model. Getting DX right often results in more efficient engineering, widespread innovation, and more frequent releases that help agencies achieve their desired outcomes faster. Get it wrong, and you will see higher developer frustration and increased turnover, a costly mistake for any DevOps team.
Austin O’Donoghue, RIVA’s Director of Cloud and Infrastructure, describes the Developer Experience on his teams and how important usability, findability, and credibility are in DevOps culture:
There is nothing more frustrating than searching for obscure, hidden, tools or features. When DevOps tools are easy for developers to find and use, meaning the tools’ feature sets are intuitive and are right at a developer’s fingertips at exactly the time they need them, you’ve created ideal scenario. In this environment, developers can code with confidence using tools that are reliable and credible. This breaks down barriers to achieving an optimal flow state while coding and minimizes friction and impediments that distract developers from focusing on the things that enable a culture of delivery.
In a great Developer Experience, a developer’s toolset allows developers to efficiently complete their tasks with minimal errors and without having to constantly switch context and tools. Toolset features and functionality are easy to find, and the tools are considered trustworthy to the developer. Austin gives us a real-world example of great Developer Experiences:
“For a large Federal healthcare agency, where we designed and built a DevOps “Software Factory”, which developers on multiple teams utilized every day to do their work and produce valuable software. To get the Developer Experience right, we spent time observing how developers work, watching them as they coded and tested software. We noted ways that we could make the tools easier to find and usable. We used these observations to adjust the pipelines to improve DX.
For example, we built software agents configured for each of our commonly used frameworks. To utilize this feature our developers simply included an immutable build file to make our CI-CD pipeline aware that we wanted this code base built. The delivery platform would then pick up the project from SCM and start running CI checks, providing developers real-time feedback on the functional, security, and performance impact of our code changes. This was an amazing developer experience.”
How We Improve the Developer Experience Using HCD Methods
At RIVA, we treat the Developer Experience much like we do when we create user experiences for our clients, utilizing the tenants of HCD to optimize the experience which includes using observations and data to inform design. To improve the Developer Experience, we examine the end-to-end holistic experience beginning with onboarding and continuing through day-to-day work in the Software Factory. Our approach is guided by the following methods:
- Discovery: Spending time with developers to learn what the Developer Experience is really like, using interviews, contextual inquiries, observation with representative developers as they work. We learn how they interact with their tools, teams, and other individuals and artifacts.
- Strategy: Synthesizing what we learned about their processes to develop an optimal experience–including process flows, pain points and opportunities for improvement—with developer experience journey maps.
- Design: Designing optimized DX and associated DevOps environment solutions to meet their needs, improve usability, findability, and credibility.
- Usability: Improving stability and findability by conducting usability testing of the optimized DevOps environment solution to validate that it meets developer needs.
Spending a little time upfront observing and learning about the developer experience to improve and optimize can result in a great return on investment once software factory teams are up and running. Using these common HCD methods can greatly improve the Developer Experience by assembling DevOps tools into smooth operating environments that match developers’ needs and promote the consistent, optimal flow of software delivery. What common DX problems are your development teams dealing with? We’d love to chat more about ways to improve DX, reduce frustration, and increase speed of delivery and value. Reach out if you’d like to chat.