For Software Houses, developers are as important as customers are to a retail organization – if the Developer Experience (DX / DevExp / DevEx) is poor, then work simply will not get done effectively and the best and the brightest are likely to leave for an employer who offers a better experience and hence, more productivity and job satisfaction. Long-term frustrated employees and staff attrition tend to impact product quality and lead to weaker software applications.
As a monitoring vendor we have a stake on both sides of the fence, we make a monitoring solution that some of our customers use to monitor development environments and virtual workspaces used by their software engineers, but we also have large teams of developers ourselves that we must ensure are happy to deliver our products.
Like many organizations we have evolved to have multiple on-site development teams in multiple countries plus a substantial number of employees who work from home, remotely or on hybrid work schedules. To keep our developers productive and content, we have to provide them with some very basic things:
- To be able type fast and not experience applications freezing or glitching
- Have the tools and applications available 24/7, if someone can’t check in a code fix it ultimately also increases MTTR and affects our ability to service customer support tickets
- Developers need to be able to properly test their work, so they don’t get swamped with support tickets when code goes into production or is released to customers
- Collaboration tools and mechanisms to collect data so different teams aren’t finger-pointing or blaming each other
Seven Key Ways to Ensure Great Developer Experience
There are a few key areas we place particular emphasis on to ensure our development teams stay happy and productive:
Step 1 – Provide secure, high performing Digital Workspaces for a good Developer Experience
Large numbers of our developers rely on us successfully providing them with performant secure digital workspaces (VDI/DaaS like systems such as VMware/Citrix/Microsoft Azure Virtual Desktop or Amazon WorkSpaces). It is critical that our developers can access these workspaces 24/7 and moreover that the applications delivered through them are actually performant enough to allow employees to do their jobs. We use a mixture of Real User Monitoring and Synthetic monitoring (robot users simulating access 24/7) to detect issues proactively and to resolve them – for details, see: Digital Experience Monitoring (DEM) – Synthetic vs Real User Monitoring (eginnovations.com).
VDI is extremely useful for standardizing development environments and ensuring our IT teams only support a limited known configuration. VDI also helps unnecessary use of potentially problematic technologies such as VPNs.
Step 2 – Have visibility into user end points for troubleshooting to protect the Developer Experience
Many of our developers access our VDI systems from laptops remotely. Often when they encounter user experience problems, the root cause is something associated with the physical endpoint or associated with worker’s home location (poor ISP connection, Wi-Fi router issues, other household members gamin or streaming and hogging bandwidth). Having tools in place to troubleshoot home and remote workers’ hardware and home networking is very important.
To find out more on this, see Wendy Howard’s recent blog – How to Monitor Physical Desktops and Laptops with eG Enterprise | eG Innovations.
Step 3 – Ensure shared services are continually monitored
We have many shared resources that our developers leverage, particularly databases. If these have a problem the effects can impact multiple teams and block progress. Having database monitoring in place that our developers have visibility on is extremely important for our business continuity. Similar services that should be monitored are systems responsible for building and delivering customer patches and responses. Uptime and performance of infrastructure services including file servers, Active Directory, hypervisors and even storage devices are important to ensure that developers remain productive.
Step 4 – Integrate monitoring into DevOps processes
Continually providing developers with performance monitoring data both live and historical allows them to assess the impact of change, being able to automatically detect changes in the baseline performance and correlate performance changes to new versions and code releases as they are implemented makes development processes faster and raises quality. Monitoring tools with AIOps capabilities will build intelligent benchmarks for developers to use.
Configuration Change Tracking can be extremely useful if you have multiple development and IT teams working on systems, see: Configuration Management & Change Tracking for Observability (eginnovations.com).
Step 5 – Embed monitoring into test processes for early problem remediation
This is particularly important to us for find issues early, having Application Performance Monitoring (APM) in place alongside stress and load testing allows our developers to identify bottlenecks and their causes even down to a single line of code in a Java or .NET application. This helps us avoid many bugs or performance issues reaching customers or even our own QA team.
We’ve recently released a new guide on how to get visibility into Java applications which covers this in deeper detail – see: How to Get Full-Stack Visibility for Your Java Applications | White Paper (eginnovations.com).
Step 6 – Ensure your collaboration tools are continuously working to help the Developer Experience
Beyond monitoring the obvious developer tools such as Github, Jenkins, Ansible and so on, we also continually monitor applications and tools such as O365, Zoom and Microsoft Teams. It is important to have visibility into the root cause of issues, particularly if tools are delivered as SaaS or are cloud hosted – is it an Azure problem vs. a bandwidth issue. It’s also important to ensure our developers can communicate if email services, cloud dependent services or O365 are down – see: How to Protect your IT Ops from Cloud Outages (eginnovations.com) for additional tips on how to practically do this.
Our monitoring infrastructure is also integrated with ITSM and ticketing tools such as JIRA and ServiceNow to ensure we track and review problems with the developer experience by process and can set targets for issue resolution. Treating your developers and their issues with the same diligence and urgency as customers helps keep your developers happy!
Step 7 – Pay attention to cloud dependencies
Many development teams now deploy applications on cloud infrastructure including public clouds such as Microsoft Azure, Amazon AWS or Google GCP for agility. Often there is a lack of coordination between IT teams provisioning cloud resources and the development teams that need those resources. An important decision that has to be taken when provisioning resources is the type of cloud instances to use. Development teams often describe their requirements in terms of CPU and memory needed (e.g., 4 vCPUs, 16 GB RAM), while IT teams will provision VMs by choosing an instance type. For example, if the team uses a burstable IT instance type because it is cheaper, it may not match the resource usage needs of the development team (who may be thinking they are getting a VM with dedicated capacity). When stress testing the application, the VM may run out of CPU credits and performance may be poor, leading to developer frustration – see: Select the right AWS EC2 instance type for optimal monitoring (eginnovations.com) for a deep dive blog on what can go wrong. No amount of debugging the code will reveal the cause of the issue. Having the right oversight and monitoring for cloud environments is a key for application success in the cloud.
If using cloud infrastructure, you may like to check out this White Paper – White Paper | Top 10 Requirements for Performance Monitoring of Cloud Applications and Infrastructures (eginnovations.com).
Developers like to be independently productive and efficient and that’s exactly what we want them to be. Ensuring that developers always have performant access to the tools they use and visibility to how well their applications perform are the key factors to provide a good Developer Experience at eG Innovations. Moreover, by monitoring and tracking the availability and performance of developers’ tools and applications we can set internal SLAs and KPIs to quantify whether we are providing a good DX.