16 September - SRE
How we apply the defence in depth concept for red team engagements
Ubirajara Aguiar Jr., Information Security Specialist
4 mins read
As more and more businesses realize the value of cloud-based solutions and integrated digital experiences, so too are they becoming aware of another concern – the developer experience. When building products for developers or evaluating technical solutions for business operations, there’s strategic value in improving how well developers can adopt and operate those technologies.
As with any emerging practice, the definitions and approaches toward developer experience might vary. However, the goals and the factors that contribute toward those goals are often the same. Here, we’ll take a closer look at the goals and key factors that define our approach toward adopting a developer experience mindset at Pismo.
In a broad sense, developer experience is the journey that a person who writes code goes through when trying to use technologies to accomplish their goals.
Because this experience can encompass so many interactions and interfaces for a given technology, it might be hard to find a single framework or process that captures every aspect of it. As a technology provider, a developer experience exercise might start by considering these questions:
Similar to other experience disciplines, empathy is one key to understanding the developer experience. Consider what a developer might need in different phases of their journey and how they feel when they do or do not get it.
Discovery — Think about when the developer first looks at a new technology. Someone in the business might have asked them to evaluate it. Or they might be searching for a solution to a problem. The developer must learn about the technology quickly and assess the technical feasibility and fitness for their needs without a lengthy research or setup process.
If the website or documentation highlights relevant features and advantages, they might feel more confident about the technology. The ability to perform some exploratory testing might increase this confidence. If, on the other hand, the information is inconsistent, the developer might become frustrated or even evaluate a different option.
Onboarding — After a technology is selected, the developer needs to put it into practice. They need a good understanding of what they must do to implement the required functionality, and they must work within the time and resource constraints of the business.
APIs that use clear names and consistent patterns are much easier to understand, which might help the developer feel ready to get started sooner. Accurate, thorough documentation might give the developer more confidence that they are headed down the right path. If common tasks can be automated or abstracted, the developer might feel less time and resource pressure and be more confident in their implementation choices. If, on the other hand, the functionality is hard to understand and no help is available, the developer might struggle to get up and running or worry about the quality and reliability of their implementation.
Operation — After a new technology implementation goes live, the developer needs to keep it running smoothly and look for ways to improve it. They need good support for day-to-day operations and an awareness of opportunities to upgrade or expand their implementation.
Good visibility into operational status, clear error messages, and troubleshooting documentation might make the developer feel more self-sufficient and ready to solve any issues that might come up. If the developer can also rely on the provider’s team to support them — and help them implement new or better solutions — they might feel more confident in the long-term suitability of the technology. If, on the other hand, the developer has no support for their existing implementation or potential improvements, the developer might get frustrated and lose confidence in the technology.
Upon considering the challenges that developers face at each stage in their journey, several key factors emerge that are crucial to their success.
Excellent documentation — When your technology is an API, your documentation is its UI. A thorough reference of available endpoints and parameters is essential for a developer to be able to use it. But, reference documentation alone can seem like a bucket of Legos without its building instructions. Good developer documentation provides different types of resources to support different needs and learning contexts.
Guides can explain fundamental concepts and relationships between system components. Step-by-step tutorials can provide code samples that demonstrate good practices and provide a starting point for custom solutions. Other educational resources can supplement the written documentation, such as visual aids, videos, or training. Interactivity built into the documentation, such as the ability to make “mock” API calls and view the response object, can further enhance learning and exploration. Release notes and changelogs communicate newly available upgrades and deprecated functionality. Good documentation starts the developer down the right path and keeps them on it as the technology and business needs change.
Clear, consistent, and reliable APIs and developer tools — When APIs are easy to understand and work as expected, the developer can spend less time learning or debugging the nuances of the technology. Testing an API before it is released is necessary to make sure it works but not sufficient to make it easy to use. Providing consistent and clear APIs requires thoughtful API design processes and standards that are maintained across endpoints.
In addition to APIs, libraries and orchestrated solutions that implement standard functionality can allow the developer to spend less time writing code that doesn’t bring unique value to their business. Developer tools can also automate configurations or testing scenarios. They can also provide visibility into performance, usage patterns, and other metrics that might inform better technical solutions.
Dedicated support and outreach — To provide a stellar developer experience requires advocacy from the provider. Every use case for a specific technology has unique requirements, and so the developer needs support that picks up where the documentation, APIs, and tools inevitably leave off. Whether it’s helping the developer solve a complex technical problem or providing guidance that makes it easier to adopt best practices and new functionality, they need someone with excellent engineering skills, who is in their corner.
This advocacy extends beyond getting the developer past a particular hurdle. Ideally, the provider would take any feedback or frustrations and turn them into actionable insights that the product and documentation teams could use to improve the experience for future developers.
For the developer, a good experience means less frustration and more successful projects. But, how does that translate into strategic value for the business?
When adopting a new technology for the business, a quicker implementation means a reduced time to value. Better technical solutions also lead to a more reliable infrastructure, which means less time and money spent on operational issues.
It sounds like developers are pretty darn important! For the provider, improving developer discovery means more businesses will choose your technology to meet their needs. Successful implementations lead to a reduction in support tickets and incidents, which also means happier customers. So, providing a great developer experience can increase sales revenue, retention, and customer satisfaction while decreasing support time and ticket volume.
At Pismo, we’re taking the first steps toward embracing developer experience as an integral part of our company culture. We’re building a team focused on what developers need most to be successful with our platform, and we’re incorporating developer experience into our product development and support models.
We know we won’t get there overnight, and we know we won’t get there alone. Over the next few months, we’ll be looking to our developer community for candid feedback on what we can do better and what’s most important to them.
Is developer experience important to you? Tell us why and what you’d like to see from us. Or check out our open positions and join our team!