How to manage software development in Slack | Slack
How to manage software development in Slack
Tips and tricks from engineering teams of all sizes
By the team at Slack27th April 2017Illustration by Sarah Lazarovic
TABLE OF CONTENTS
- Well-worn paths
- Build stuff
- Fix stuff
- Get it out there
- Keep it running
5 min read
Lots of engineering teams (including ours) use Slack to manage their software development process. We were curious: exactly how do these teams use Slack to keep their work focused and ship stuff faster? So we did as we do, and talked to a bunch of technical teams to find out what works best for them.
TL;DR: Every channel should have a clear reason for being. From there, take advantage of the Slack platform — by using off-the-shelf apps from the Slack App Directory, or building home-grown integrations to pipe in data from internal data sources — to commit and review code, fix bugs, and manage deployment and keep everything running just as it should.
One thing we heard loud and clear: well-organized public channels — where anyone on your team or at your company can stay informed, seek help, and complete tasks — are of utmost importance.
While it may seem like having fewer channels would keep things simpler, we actually recommend an organizational scheme of more channels, each with a specific purpose — this can help to focus work among smaller groups of people who want and need to know the nitty-gritty.
Here’s a channel organization scheme we heard works for a lot of engineers:
General software team channel: Teams usually have a top-level, large membership channel (e.g. #engineering) for all managers and individual contributors from different disciplines (front-end, back-end, deployment, etc.) to talk and solve problems together.
Project channels: Use a naming convention to organize channels for each new feature. If each channel starts with something clear and recognizable like #project- , it’ll be easier to find.
“Your interface is discoverability,” says Nic Benders, chief architect at New Relic. “If I need to talk to somebody on the insights team, I should be able to pop into Slack and post in #insights-team to find help.”
Interest-area channels: Create a channel for each technology or sub-group in engineering, for example #security, #ios, or #java, where specialists can gather. At New Relic, Benders calls them “communities of practice.”
Automated output channels: Some teams organize their notifications from software services (some examples below) into a dedicated channel collecting the output, while others instead report specific notifications into project- or team-specific areas.
Well-worn paths
Software development commonly falls into four general areas: writing code, fixing code you’ve already written, publishing it, and keeping everything running and stable. Let’s break down how each part works in Slack.
Build stuff
A software engineer writes code to build and improve product features, and code repositories are key to coordinating it all. A code repository allows a team to work on different aspects of a codebase concurrently, while also managing contributions and code review.
Typically, a developer branches out from the master codebase, deploys to their own local environment, and makes changes. When they commit their code to the cloud, notifications from apps like GitHub and Bitbucket appear in specified Slack channels.
Piping commit messages into Slack raises the visibility of a developer’s work and helps managers track progress. In the event of a problem, it also provides a breadcrumb trail of recent changes that might need to be rolled back.