협업

How to manage software development in Slack

Tips and tricks from engineering teams of all sizes

Slack 팀이 작성2017년 4월 27일Sarah Lazarovic의 일러스트

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.

A GitHub commit message showing recent changes piped into a Slack channel

Pushing changes to the main codebase requires a pull request, and that’s another activity where visibility in Slack can facilitate code reviews and reduce context switching.

Some teams create bots to check outstanding pull requests every morning to make sure a review hasn’t fallen through the cracks:

Slack’s custom bot reminds a channel when a pull request is still open and requires review, and the team marks them with emoji to show when it’s done

Most companies use off-the-shelf apps available in Slack’s app directory, while others, like Vox and its CTO Pablo Mercado, go the custom route. “We take GitHub webhooks and we pass it through our own API layer that then posts to Slack, because we want to customize the amount of output that comes through,” he says.

Fix stuff

For bug tracking, most teams use dedicated tools like JIRA (including JIRA cloud and server, and also Jirio), or they build a custom option to sync with internal systems they’re already using.

Piping bug tracking alerts into Slack is another way your team can be notified in the same place they’re already discussing bugs and code reviews — saving you from constantly switching between apps and browser tabs.

When bugs are reported, channel messages can be used to assign work and monitor progress:

A custom bot sends you a DM in Slack when a bug you reported is closed

Get it out there

Once you’re ready to deploy, sending notifications from Jenkins, CircleCI, or Travis CI in Slack is a good way to keep everyone in the loop when new versions of your apps and sites are live.

You can also catch any failures in the build process and get people talking right away about how to fix them.

Slack built a custom bot to track recent pull requests as they move from staging to deployment. If bug reports began at, say, 5:09 p.m., it’s easy to backtrack to what may have caused any issues or failures.

Other teams launch build-and-deploy events using slash commands (e.g. /deply project-rocket) inside Slack. Still others create custom bots to convert release checklists into multi-step bot interactions that ensure every step for rolling out a new site or app is followed.

“Developer attention is the scarcest resource on the engineering team, so it’s crucial to have a deploy process that makes really good use of it,” says Aaron Suggs, operations engineering manager at Kickstarter.

“It requires very little developer attention because it’s so automated, and if things are broken, it just stops deploying. That’s a really valuable tool to invest in.”

Keep it running

The enormous responsibility of keeping a product online and stable is often the domain of a software operations team (commonly known as “ops” or “devops”). An ops team usually deals with uptime and maintaining infrastructure, and also helps manage minor service interruptions or major security breaches.

Incident response is a blanket term for when things go wrong, and engineering teams were nearly unanimous in their use of Slack as the mechanism for real-time information gathering, analysis, and triage — exactly what you need when things go haywire.

Ops teams most commonly use apps like PagerDuty, Pingdom, and New Relic for monitoring, error-reporting, and uptime packages. Alerts from these services automatically appear in Slack, and thanks to notification settings, ops team members can make sure they’re the first to know when something goes awry.

Pagerduty notification in the #alerts channel showing an ops team member resolved it

When you integrate the apps your engineering team needs into Slack, your team will stay up to date and organized right where they’re already working.

You’ll also get the added benefit of a searchable communication history that makes adding new developers to projects really straightforward. As Jeremy Mack, Director of Engineering at Postlight puts it, “The whole point is (for Slack) to be simple and easy to understand and get into for new people or people on a project — they’ve got the whole history right there.”

이 포스트가 유용했나요?

0/600

훌륭해요!

피드백을 주셔서 감사합니다.

알겠습니다!

피드백을 주셔서 감사합니다.

죄송합니다. 문제가 발생했습니다. 나중에 다시 시도해주세요.

계속 읽기

협업

Slack 10주년, CxO 조찬모임: ‘Slack me’가 조직의 소통 방식이 되기까지

이번 조찬모임은 기업 고객과 함께 성장한 Slack의 시간을 돌아보고 말랑말랑하고 좋은 조직문화에 대한 탐구를 함께 할 수 있었던 시간이었습니다.

협업

꼭 맞는 음악을 들려주는 Slack 허들의 새로운 주크박스

팀 멤버들의 참여를 기다리는 동안 기발한 음악으로 지루한 대기 시간을 달래줍니다

생산성

[Slack People 3탄] 모든 조직이 ‘Slack’을 찾을 수 있도록 신나게 달리는 Slack 마케팅 팀

Slack의 마케팅 팀은 “일인데 어쩌겠어, 싫어도 해야지.”라는 말을 뱉는 직장인들이 줄어들기를 소망합니다. 그리고 힘들게 느껴지던 업무를 훨씬 더 즐겁고 재밌게 수행할 수 있는 조직이 늘어나기를 바랍니다.

새 소식

지능형 생산성 플랫폼을 강화하는 새로운 방식인 Slack 캔버스

이제 누구나 Slack에서 중요한 정보를 생성하고 구성하고 공유할 수 있습니다