Mobile Developer Experience at Slack

At Slack, the goal of the Mobile Developer Experience Team (DevXp) is to empower developers to ship code with confidence while enjoying a pleasant and productive engineering experience. We use metrics and surveys to measure productivity and developer experience, such as developer sentiment, CI stability, time to merge (TTM), and test failure rate. We have…

Overview

The article discusses the Mobile Developer Experience Team at Slack, focusing on how they enhance developer productivity and satisfaction through targeted improvements in the mobile development process. It highlights the team's strategies for addressing common pain points and the measurable impact of their initiatives.

What You'll Learn

1

How to improve CI job times by implementing parallelization and caching strategies

2

Why investing in a dedicated developer experience team is crucial for productivity

3

How to utilize tools like Bazel and Bluepill to optimize testing processes

Key Questions Answered

What are the main pain points faced by mobile developers at Slack?
Mobile developers at Slack face several pain points including long CI test job times, flaky tests, CI-related failures, and merge conflicts. The article details how the Mobile Developer Experience Team identifies and addresses these issues to enhance developer productivity.
How did Slack reduce Time to Merge (TTM) for pull requests?
Slack reduced Time to Merge (TTM) from approximately 34 minutes to 20 minutes by migrating from Jenkins to BuildKite, which improved CI stability from around 87% to 95%. This transition eliminated webhook-related issues and simplified the user experience for developers.
What tools did Slack implement to improve testing efficiency?
Slack implemented tools like Bazel for build caching and Bluepill for parallel test execution, which significantly decreased CI job times from nearly 50 minutes to an average of 9 minutes. This allowed developers to receive faster feedback on their pull requests.

Key Statistics & Figures

Time to Merge (TTM) reduction
41% from ~34 mins to ~20 mins
This improvement was achieved after migrating from Jenkins to BuildKite.
CI stability increase
8% from ~87% to 95%
This stability improvement followed the migration to BuildKite.
CI job time reduction for iOS
from ~50 minutes to an average of 9 minutes
This was accomplished through the implementation of Bazel and Bluepill.

Technologies & Tools

Some links below are affiliate links. We may earn a commission if you make a purchase.

Build System
Bazel
Used for caching build outputs to improve CI job times.
Testing Tool
Bluepill
Used for parallel test execution to reduce CI testing times.
CI/CD Tool
Buildkite
Replaced Jenkins to improve CI stability and performance.

Key Actionable Insights

1
Investing in a dedicated developer experience team can significantly enhance productivity and morale among engineers.
By addressing common pain points and improving workflows, such teams can help developers focus on delivering high-quality features more efficiently.
2
Implementing parallelization in CI testing can drastically reduce wait times for developers.
This allows developers to maintain their workflow without unnecessary interruptions, leading to a more efficient development process.
3
Utilizing tools like Bazel for build caching can streamline the development process.
Bazel's ability to reuse build outputs can save considerable time and resources, making it an essential tool for large codebases.

Common Pitfalls

1
Failing to address flaky tests can lead to significant developer frustration and decreased productivity.
Flaky tests can cause developers to lose focus and waste time troubleshooting unrelated issues. Implementing a system to auto-detect and suppress these tests is crucial to maintaining a smooth development flow.
2
Relying on outdated CI tools can hinder development efficiency.
Using tools like Jenkins that frequently experience downtime can disrupt workflows. Migrating to more reliable CI solutions like BuildKite can alleviate these issues and enhance overall productivity.