Eliminate Developer Process Waste
Welcome to the first monthly Developer Productivity Engineering (DPE) newsletter. Here you will find timely information related to this emerging discipline, including best practices and related resources, industry news and events, and this segment focused on ideas and insights aimed at providing inspiration and motivation.
Since this is the first DPE newsletter, let’s start by defining DPE. DPE uses data and acceleration technologies to speed up and improve the critical software development processes from builds to testing to CI. This includes achieving a higher degree of automation, more reliable and actionable data, and, perhaps most importantly, a highly satisfying developer experience.
The key to improving the developer experience is eliminating build, test and CI “waste”. Waste includes idle time waiting for builds and tests to complete; waste associated with inefficient processes for troubleshooting incidents and determining root cause; and systemic waste due to a lack of tools to proactively manage performance regression and build a more resilient toolchain.
If you experience these pains, learn more about how DPE can be used to mitigate these pains and bring more joy back to software engineering. You can start by checking out the Guide to DPE.
Developer Productivity Engineering at Elastic: Avoiding the Cost of Inaction
Like many companies, the software development experience at Elastic was starting to become negatively impacted under the increasing strain of slowing builds and inefficient process for flaky tests and debugging. And, the pain was only expected to increase in line with the growth of development teams and code bases. The cost of inaction was projected to soon become unbearable. The emerging discipline of developer productivity engineering promised to address these challenges through a higher degree of automation, faster feedback cycles and more reliable and actionable data. Check out the recent webcast led by Mark Vieira, Senior Software Engineer at Elastic as he discusses how Elastic overcame the natural resistance to change their process and toolset by quantifying the Cost of Inaction and blazing a new path toward build engineering excellence. In this webcast you will learn the key developer productivity pain points that drive up the cost of inaction; Developer Productivity Engineering concepts and solutions; and how to quantify the Cost of Inaction.
Speed Up Builds with “Distributed Testing”
Distributed Testing is a new capability available in Gradle Enterprise that speeds up test execution dramatically and addresses the pain associated with long feedback cycles due to slow running local and CI integration/system tests. It is one of the keys to improving developer productivity and the developer experience. You can learn more about this new technology in this webcast from Marc Philipp and Benedikt Ritter, software engineers at Gradle. They will explain the impact of slow feedback cycles on developer productivity and software quality and strategies organizations currently employ to mitigate slow tests. They will then demonstrate how to speed up test execution by distributing the test set to remote agents and how to connect and manage remote test agents with Gradle Enterprise.
Martin Fowler: Eradicating Non-Determinism (“Flakiness”) in Tests
According to software development guru Martin Fowler, an automated regression suite can play a vital role on a software project, valuable both for reducing defects in production and essential for evolutionary design. However, left uncontrolled, non-deterministic tests -- tests that sometimes pass and sometimes fail -- can completely destroy the value of an automated regression suite. In this article, Fowler outlines how to deal with non-deterministic or “flaky” tests. Initially quarantine helps he says to reduce their damage to other tests, but you still have to fix them soon. As a result, he discusses treatments for the common causes for flakiness: lack of isolation, asynchronous behavior, remote services, time, and resource leaks.
The Gradle Enterprise team has developed techniques and tools to prevent flaky tests from ruining your test suite. These are discussed in an on-demand Webcast led by Eric Wendelin, analytics lead at Gradle. Specifically, Eric shows you how to (a) prevent flaky tests from hindering your development lifecycle; (b) detect new flaky tests in Gradle and Maven build scans, and (c) use reports and analytics in Gradle Enterprise to aid you in prioritizing and eliminating flaky tests.
Gradle & Maven Build Cache Deep-Dive Training
If you are a Gradle or Maven build tool user interested in speeding up builds, you may be interested in upcoming online training sessions being conducted by the Gradle Enterprise team. In these trainings, you will learn the basics and best practices to make the most of caching in your build. The discussion will cover the different possible architectures, how they affect build performance, and how Gradle Enterprise can help you manage, analyze, and troubleshoot the build cache. After this training, participants will be able to understand the benefits of using the Gradle or Maven build cache; use and configure the build cache; optimize build logic for maximum cacheability; and maximize the benefits of the build cache with Gradle Enterprise.
Don’t Miss these Opportunities to Learn More
If you have some news you’d like us to share in the next issue, use
#devprodeng hashtag on Twitter or send us an email with the details to email@example.com.
Until next time!
—The Gradle Team