Remote Development at Slack

In this article, “remote development environments” refer to AWS EC2 instances where engineers make code changes and can see a running Slack application with those changes. For years, engineers at Slack isolated and tested their changes by running microcosms of the Slack application on their local computers. This was difficult for many reasons: it involved…

Sylvestor George
11 min readintermediate
--
View Original

Overview

The article discusses the transition to remote development environments at Slack, highlighting the challenges faced with local setups and the benefits of using AWS EC2 instances for development. It details the improvements in developer productivity and efficiency achieved through this shift.

What You'll Learn

1

How to set up a remote development environment using AWS EC2 instances

2

Why transitioning to remote development environments can enhance developer productivity

3

When to utilize remote environments for web application development

Prerequisites & Requirements

  • Understanding of cloud computing concepts and AWS services
  • Familiarity with Visual Studio Code and its extensions(optional)

Key Questions Answered

What are the main challenges of local development environments at Slack?
Local development environments at Slack faced issues such as long setup times, resource-intensive software, and the need for maintaining local dependencies. Engineers reported difficulties with homebrew installations and frequent updates to HHVM, which disrupted their workflow.
How does the remote development environment improve efficiency for engineers?
The remote development environment allows engineers to reserve isolated environments quickly, reducing setup time from about 30 minutes to under 90 seconds. This setup eliminates the need for local code cloning and dependency management, significantly enhancing productivity.
What was the adoption rate of the remote development workflow at Slack?
After the initial beta release in August 2021, 30% of webapp engineers switched to the remote development workflow. By the end of January 2022, over 90% of engineers had fully adopted the new system, indicating a strong positive reception.

Key Statistics & Figures

Time to reserve a development environment
Under 90 seconds
This is the time taken to set up a new remote development environment, significantly faster than previous local setups.
Percentage of engineers switched to remote development workflow
Over 90%
This reflects the adoption rate by the end of January 2022 after the general availability release.
Time saved in bootstrap time for new environments
12 minutes
This is the time saved by not having to bootstrap a new environment every time an engineer reserves one.

Technologies & Tools

Cloud Computing
AWS EC2
Used for hosting remote development environments for engineers.
Backend
Hhvm
The backend technology used in Slack's web application.
Development Tool
Visual Studio Code
The primary code editor used by engineers for development.

Key Actionable Insights

1
Implementing remote development environments can drastically reduce setup times for developers.
By leveraging cloud resources, teams can minimize local setup requirements, allowing developers to focus on coding rather than environment configuration.
2
Encouraging collaboration through shared remote environments can enhance team productivity.
Engineers can work on the same branch in a shared environment, facilitating real-time collaboration and reducing context-switching costs.
3
Regular feedback loops during the transition to remote environments are crucial for success.
Gathering input from engineers during the beta phase helped identify pain points and improve the workflow, ensuring a smoother transition for all users.

Common Pitfalls

1
Failing to adequately prepare engineers for the transition to remote environments can lead to confusion and resistance.
Without proper training and support, engineers may struggle to adapt to new workflows, which can hinder productivity and lead to frustration.
2
Neglecting to gather feedback during the beta phase can result in unresolved issues in the final rollout.
Feedback is essential to identify pain points and improve the system before full deployment, ensuring a smoother transition for all users.

Related Concepts

Remote Development Environments
Cloud Computing
Developer Productivity
CI/CD Practices