Ideas & Insights
The recently shared Pandemic Programming survey (Dr. D. Paul Ralph, PhD) looked at the ways that developers' lives have been impacted by the lockdowns and changes caused by COVID-19. Over 2200 people from 52 countries answered the questionnaire to assess their well being and productivity before and while working at home. The results show that well-being and productivity are suffering with some groups, particularly women, parents, and people with disabilities, more negatively impacted than others. Here is the researchers advice to software team leaders on how best to help mitigate the negative impact:
- DO support developers' emotional wellbeing; it will help their productivity
- DO ask employees what they need (e.g., equipment, professional training)
- DO help employees improve the ergonomics of their home work spaces
- DON’T expect normal productivity during the pandemic; it’s unrealistic
- DON’T pressure employees to be productive; it will make matters worse
- DON’T make any decisions (e.g., layoffs, promotions) based on productivity during the pandemic
Expert Takes
Flaky, or non-deterministic, tests are a serious and prevalent problem in modern software development. Martin Fowler’s words resonate with me:
Non-deterministic tests have two problems, firstly they are useless, secondly they are a virulent infection that can completely ruin your entire test suite. As a result they need to be dealt with as soon as you can, before your entire deployment pipeline is compromised. — Martin Fowler on Eradicating Non-Determinism in Tests
I couldn't agree more — flaky tests suck. They are a problem for every software team, but most teams lack effective flaky test tracking and analysis tools. This is precisely why I am working on flaky test management tools at Gradle. My mission is to help you identify, prioritize, and fix flaky tests using a data-driven approach.
Some questions you should ask yourself when fixing flaky tests:
- When exactly did the flakiness start occurring? What changed right before this started?
- How do flaky test runs differ from passed test runs?
- Is the test flaky only on certain build hosts?
- How has the test execution duration changed over time?
I made a video to demonstrate how you can gather flaky test data and answer these questions in order to deal with flaky tests before they impact your business.
Success Stories
Stash operates both a web platform and mobile apps that allow users to incrementally invest small amounts. They now have approximately 5 million subscribers that depend on them for investing, banking, saving, and learning. Stash recently deployed DPE best practices and tools embedded in Gradle Enterprise and is already seeing benefits. These benefits are described in a recent interview (Blog post) with their Principal Engineer, Joel Parrish.
According to Joel, key challenges the Stash Android team faced included slow builds with no insight into what the bottleneck could be and slow configuration times. With the help of Gradle Enterprise, Stash addressed all of their initial pain points and saw a reduction of about one hour in the time from issue discovery to fix. Joel credited Gradle Enterprise Build Scan Comparison capability for being a critical driver of that result.
Moving forward, Stash plans to to hone and improve the Build Cache mechanisms between android variants to improve build times substantially. They also plan to explore Flaky Test Management including adding repeat logic as a detection method. Check out the complete article to get a more complete picture of Stash’s progress on their journey to DPE excellence.
Technology News
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 check out a 4min overview video called An Intro to and Example of Distributed Testing on our YouTube channel Faster Feedback Cycles playlist.
For a more in depth discussion watch the on-demand Webcast presented by the software engineers at Gradle that developed the technology developers, Marc Philipp and Benedikt Ritter. Marc and Benedikt explain the impact of slow feedback cycles on developer productivity and software quality and strategies organizations currently employ to mitigate slow tests. Next they 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.
Featured Upcoming Event
On August 12 Gradle will host a training where participants will learn the basics and best practices to make the most of caching in Gradle builds. The different possible architectures will be discussed, how they affect build performance, and how Gradle Enterprise can help with the management, analysis, and troubleshooting of the build cache. This is a 3-hour training session followed by 30-minutes Q&A. Maven build tool users, as well as Gradle Enterprise users interested in speeding up builds, are encouraged to attend the training. This course assumes a good understanding of the Java language and working knowledge of the Gradle Build Tool.
After this training the participants will be able to:
- Understand the benefits of using the Gradle build cache
- Use and configure the build cache
- Optimize build logic for maximum cacheability
- Maximize the benefits of the build cache with Gradle Enterprise
|