Engenharia de software e Slack: uma história de amor

Um olhar sobre como o Slack foi projetado para apoiar o sucesso dos desenvolvedores, desde a nossa origem até às nossas melhores práticas de engenharia atuais

Uau! Isso foi rápido!

Em 2009, éramos uma equipe pequena de engenheiros de software, desenvolvendo um jogo multiplayer enorme chamado Glitch.

Começamos usando o Internet Relay Chat (lembra do IRC?) para manter todos atualizados. À medida que o jogo avançou, queríamos que o nosso canal no IRC oferecesse mais do que apenas a comunicação básica. Por isso, nós começamos a ajustá-lo, adicionamos funções e criamos novas maneiras de fazer as tarefas mais rapidamente.

Bom, o jogo foi um fracasso, então decidimos nos concentrar nesse novo projeto colaborativo que desenvolvemos. Essa foi uma boa decisão. Nós acabamos criando um produto feito para o mercado: um jeito muito eficaz para empresas trabalharem juntas.

Talvez porque não estávamos tentando "projetar" nada. Não havia ego nem especulações sobre um usuário fictício. Éramos os usuários. Foi assim que o Slack nasceu.

Atualmente, ele está ficando maior do que imaginávamos e sua adoção por equipes de desenvolvimento de todos os portes é um dos principais motivos. Sim, o Slack é usado basicamente em todos os departamentos e setores, mas a engenharia de software foi o ponto de origem dele e ainda é de onde vem muito amor dos usuários, o que nos faz trabalhar com um sorriso no rosto. É extremamente gratificante saber que somos capazes de criar algo que tem um impacto direto no trabalho diário dos desenvolvedores.

Este guia é uma rápida introdução a algumas maneiras que o Slack ajuda desenvolvedores. Esperamos que ele ajude a explicar por que os engenheiros de software parecem gostar tanto do Slack.

Por que o Slack atende tão bem a engenharia de software

O Slack é usado todos os dias por vários tipos de equipes não técnicas. Ele parece se adaptar organicamente ao trabalho ao qual está servindo de base.

Mas, o Slack parece caber na engenharia de software como uma luva. Afinal, esse é um tipo de trabalho bem especializado.

Se pararmos para pensar, todo o trabalho está cada vez mais assim. Mas, a engenharia de software é o caso de uso ideal. Ela exige um tipo de colaboração que não acontece com e-mails e reuniões. Esse tipo de trabalho precisa de um novo tipo de colaboração.

Slack: plataforma de mensagens baseada em canais

Quem nunca usou o Slack acha que ele é um app de mensagens instantâneas. Ele é muito mais do que isso. Ele se adapta à forma de trabalhar de diferentes equipes, às suas escolhas de software e... à mudança.

  • Mensagens baseadas em canais

Isso permite que equipes criem canais dedicados a tarefas, projetos ou problemas específicos. Como o canal #des-novo-site em que todos os desenvolvedores se encontram para trabalhar no novo site. Ou o canal #triagem-app-móvel em que as equipes trabalham juntas para consertar bugs no app móvel.

Os canais são bem melhores do que mensagens individuais ou conversas privadas por e-mail, pois, com eles, fica fácil incluir as pessoas certas nos assuntos certos no momento ideal.

  • Um repositório de conhecimento pesquisável

O conhecimento só tem valor se pode ser descoberto, e os anexos de e-mail costumam ser esquecidos por todos, exceto pelas pessoas copiadas na mensagem. O Slack, por outro lado, é um único lugar onde as pessoas podem encontrar documentos, conversas e decisões relevantes, como especificações do produto ou alguma discussão sobre aquele novo recurso.

  • Uma camada de integração

Com o Slack, o software que seus desenvolvedores mais usam (como GitHub, Jira, Jenkins e Trello) se integra ao lugar onde o trabalho é discutido todos os dias. Isso minimiza a constante troca de contexto que resulta do trabalho em muitos apps diferentes.

Observação: reunir essas três funções em um único lugar torna cada uma delas muito mais eficaz. A plataforma é muito mais do que a soma das suas partes.

Benefícios para as equipes de engenharia de software

A plataforma certa de mensagens baseada em canais influencia diretamente os aspectos mais importantes para todas as equipes de engenharia: código melhor que se entrega num piscar de olhos; maior confiabilidade dos serviços; e uma experiência do desenvolvedor melhor (para que seus funcionários talentosos fiquem satisfeitos). Qualquer software que ajude você a fazer tudo isso provavelmente vale a pena conferir.

“O Slack é uma plataforma de documentação dinâmica, e tudo pode ser pesquisado.”

Malika RajvanshyEngenheira sênior, Slack

A IDC nos ajudou a determinar a proporção do que afirmamos: as equipes de engenharia usam o Slack para fazer mais atividades.

Como o Slack determina todo o processo de engenharia de software

Quando o assunto é desenvolvimento de software, nossas equipes de desenvolvimento são alguns dos usuários mais sofisticados do Slack, uma vez que todas nossas equipes de desenvolvimento vivem nele. Mas, todos os dias, nós descobrimos novos casos de uso e apps e integrações interessantes que nossas equipes de software estão implantando.

Agora, vamos abordar alguns deles, organizados por estágios no ciclo de desenvolvimento do software.

Plano

O Slack ajuda gerentes de produtos, designers e engenheiros a chegar a um consenso sobre o que eles estão criando e o porquê.

Detalhes do canal do Slack
Conversa no Slack sobre o formulário de feedback para usuários no app
  • Inicie o processo todo com um único canal para um novo produto ou recurso

Talvez seja algo como #recurso-novo-app. Agora, há um único lugar para analisar o projeto, coletar requisitos do recurso, discutir alternativas e tomar decisões fundamentais sobre a funcionalidade e UX.

  • Compartilhamento de documentos torna tudo pesquisável

O Slack se integra perfeitamente ao Google Docs para que todos os documentos estejam a um clique de distância para colaboradores e novos participantes.

  • Tem uma pergunta? É só colocar no canal

Inicie uma discussão e chegue a uma solução para que todos vejam. Agora, há o registro permanente.

Código

O Slack ajuda desenvolvedores a orquestrar as inúmeras peças móveis de uma ampla base de código, acelerando o desenvolvimento e melhorando a qualidade. Quando for hora de começar a codificar, o Slack verifica se toda a equipe está trabalhando junta:

  • Um canal chamado #des-nome-produto é o lar de tudo

Incluindo o trabalho diário da engenharia e do CQ; solicitações de pull, mesclas de código, revisões de design, reuniões diárias, discussões etc.

  • Um espaço central para a revisão de código

O Slack é compatível com qualquer processo que você usa para fazer branch, merge, revisar e lançar o código, seja um desenvolvimento de versões de branches, branches de recursos ou a partir de um mestre de merge.

Integrações do Git (com GitHub, Bitbucket ou o repositório de sua escolha) reúnem todos os alertas de mudança no Slack.

  • Um novo tipo de reunião

As reuniões são uma parte importante do desenvolvimento ágil, mas elas não precisam ser presenciais. As equipes de desenvolvimento usam o Slack para fazer reuniões, seja todas as manhãs, seja todas as semanas, e ter reuniões ou chamadas de vídeo síncronas somente quando é necessário. Para muitos desenvolvedores, a melhor reunião é aquela que foi cancelada.

As integrações com softwares, como o Standuply, enviam relatórios de resumo automaticamente para o Slack. Assim, suas equipes podem compartilhar metas e tarefas, monitorar métricas de negócios, postar anotações de reuniões e monitorar o progresso e a felicidade da equipe.

Integração do Checkpoint no Slack para postar solicitações de pull no canal

Promova a reutilização de código: a reutilização de código é um princípio fundamental de equipes de engenharia eficientes, mas é um desafio quando você tem centenas de desenvolvedores contribuindo para muitos produtos diferentes. Antes de escrever um código novo, seus desenvolvedores podem pesquisar em todos os canais do Slack para ver se alguém mais criou algo parecido. Depois, eles só precisam perguntar nos canais certos: "Alguém já fez um seletor de datas?” Não é necessário reinventar a roda.

Crie e compartilhe código com os snippets: os snippets facilitam o compartilhamento de código, arquivos de configuração e arquivos de registro no Slack. Os membros da equipe podem baixar os snippets, ver o arquivo bruto e deixar comentários.

Slack em ação

A essência da extensibilidade

O Slack não tenta fazer o trabalho do software que suas equipes já usam, como PagerDuty, GitHub ou Jenkins.

Em vez disso, o Slack une todos esses apps diferentes com simplicidade, reunindo as informações relevantes deles nos canais onde o trabalho está sendo discutido (e estimulando ações nesses aplicativos, acionadas no Slack).

“Sempre que vejo uma integração do Slack, eu a ativo. Ela oferece muito mais valor e nos ajuda a economizar vários passos no processo.”

Thomas LawlessEngenheiro de software sênior, IBM

Essas integrações ajudam desenvolvedores a fazer o que eles amam: criar sistemas que funcionam. Os exemplos compartilhados neste guia são apenas isso: exemplos. As maneiras de usar o Slack são tão diversas quanto as equipes que o usam.

Teste

O teste é incluído ao processo moderno de desenvolvimento/implantação. O Slack oferece suporte a uma abordagem dinâmica, colaborativa e transparente de testes.

A integração contínua executa seu conjunto de testes em relação a toda mescla com cada novo trecho de código. O Slack simplifica o processo de várias maneiras, grandes e pequenas:

  • Um canal #teste-recursos coordena o CQ

Deixe que a equipe de CQ colabore com desenvolvedores em um fórum aberto.

  • A integração do Jira automatiza os fluxos de trabalho de teste

Capture problemas no Slack e envie-os para o processo automaticamente. Envie notificações personalizáveis do Jira para seus canais. Atribua rapidamente problemas a pessoas e saiba que eles estão registrados onde pertencem.

Algumas equipes usam o Slack para mover automaticamente as solicitações de mudança para um novo canal, atualizando o Trello ou o Asana ao mesmo tempo.

  • Crie um canal para cada cliente

Com canais de teste exclusivos para iOS, Android e Web.

Comando de barra do Jira no Slack

Como trabalhar com o Jenkins

Muitas equipes usam o Jenkins como um servidor de integração contínua. Não demorou muito para eles encontrarem novos jeitos de integrar o Jenkins ao Slack para automatizar todos os tipos de tarefas de desenvolvimento de rotina.

Um exemplo: a integração personalizada do Slack de uma equipe de software abre um servidor do Jenkins que executa um grande conjunto de testes sempre que um desenvolvedor cria uma solicitação de pull.

Quando os testes foram executados, as notificações aparecem diretamente nos canais do Slack. Se o código falhar o teste, uma notificação é enviada ao desenvolvedor.

Versão

A entrega contínua sempre requer muitos lançamentos de códigos pequenos, implantados frequentemente. O Slack ajuda equipes de engenharia a simplificar um pouco disso automatizando fluxos de trabalhos e notificações.

Um exemplo: uma de nossas equipes de software escreveu um app, chamado Deploy Wizard, que se integra a operações e comunica o status do código no canal. Ele começa com um estágio de "canário" (um pequeno lançamento para detectar falhas repentinas), depois progride para 10%, 25%, 75% e 100% da base de usuários.

Integração do Deploy Wizard no Slack para postar atualizações de preparação

O Deploy Wizard avisa os desenvolvedores e os canais certos no Slack à medida que a implantação progride. Tudo é gerenciado pelos comandantes de implantação de plantão (engenheiros treinados, trabalhando em turnos de três horas).

Se os desenvolvedores quiserem testar o código no ambiente de preparação, eles especificam isso na solicitação de mesclagem. A implantação será interrompida na preparação até que um desenvolvedor informe que ele testou o código no canal #implantações.

Algumas equipes de desenvolvimento usam comandos de barra (como /implantar_nomeproduto_preparação) para acionar a implantação diretamente no Slack. As mensagens automatizadas mostram quando a implantação foi realizada, junto com um link para acessar e conferir (ou um botão para enviar para produção).

Operações

As equipes de desenvolvimento usam o Slack para fazer a triagem de tíquetes de problemas, detectar incidentes em tempo recorde e debater problemas.

  • Todos os problemas passam pelo canal #triagem-nome-produto

Inclusive relatórios de atendimento ao cliente (tanto manuais quanto por integrações com ferramentas, como Zendesk).

  • Integrações reúnem alertas em único lugar

Em vez de esperar que os desenvolvedores monitorem e-mails e verifiquem painéis, o Slack se torna o único lugar onde todos os alertas encontram as pessoas certas para responder.

Agregar eventos do PagerDuty ou tíquetes do Asana e postá-los nos canais certos reduz os tempos de resolução de problemas e cria uma trilha de triagem. Os membros da equipe podem trabalhar juntos no acionamento, na visualização, na confirmação e na resolução de incidentes diretamente do Slack.

Da mesma forma, o Slack pode enviar todos os alertas da Web, de transações, do servidor e de dispositivos móveis do New Relic para um canal do Slack a fim de conseguir respostas rápidas. Qualquer curioso sobre o incidente pode entrar no canal e ler a respeito. Assim, os gerentes não precisam interromper os responsáveis por incidentes para ter atualizações constantes. Está tudo lá.

Emojis e reacjis ajudam a fazer a triagem de problemas e acionar fluxos de trabalho

Os reacjis são uma maneira eficiente de capturar respostas de membros de equipe, mas eles também oferecem um jeito para acionar fluxos de trabalho automatizados. Um app coleta todos eles para que eles possam ser agregados, marcados e acionados. Qualquer problema aberto (emoji de olhos, mas sem marca de verificação) é mostrado no PagerDuty.

Um canal automatizado chamado #decisões: algumas equipes usam o emoji de martelo para indicar quando uma decisão foi tomada. Depois, um bot envia todas as decisões para o canal #decisões, onde a administração pode ver o fluxo das decisões e os membros de equipe podem pesquisar com facilidade.

Além disso, criamos um bot que coleta e relata eles em um canal exclusivo.

O lado das pessoas

Há uma demanda por engenheiros de software. Para reter seu talento, você precisa oferecê-lo a melhor experiência do funcionário possível. As ferramentas certas podem ter um papel fundamental nisso: ajudar a reduzir o atrito no trabalho, promover a transparência, automatizar tarefas rotineiras e ajudar o trabalho entre equipes.

Converse com qualquer equipe de engenharia de software que usa o Slack. Peça para ver como eles usam os canais, os apps e as integrações. Depois pergunte o que eles ficariam sem.

Integração de novos desenvolvedores

Dois novos desenvolvedores entram na equipe. Como você os atualiza?

Jeito antigo: várias reuniões de integração e um monte de conversas por e-mail que eles precisam decifrar.

Novo jeito: convide-os para o novo canal #des-novo-produto para analisar as postagens marcadas, como:

  • As especificações do produto
  • As especificações tecnológicas
  • Os designs

Se forem arquivos no Google Docs, no Dropbox ou no OneDrive, os desenvolvedores sempre estarão atualizados. Eles também podem ver todas as conversas e decisões anteriores e as pessoas envolvidas. É assim que você integra um novo desenvolvedor.

É assim que os engenheiros de software usam o Slack

Essa foi a nossa rápida tour de como o Slack ajuda equipes de software a simplificar, automatizar e acelerar o trabalho. Esperamos ter esclarecido os pontos principais:

  • É algo novo: o Slack ajuda os engenheiros a trabalhar de novas maneiras. É mais do que apenas um app de mensagens instantâneas.
  • É muito flexível: permite que suas equipes criem workspaces, canais, apps e integrações que reflitam o jeito que elas trabalham.
  • Ele ajuda você a aproveitar mais do seus softwares: desde o GitHub e o Bitbucket até o Jenkins, o Jira, o PagerDuty, o New Relic e o Zendesk. Seja qual for o software das equipes de desenvolvimento, produto, CQ e suporte, eles usarão essas ferramentas de modo mais eficiente reunindo o trabalho no Slack. Aliás, existem mais de 2.200 apps no nosso Diretório de apps atualmente.
  • Ele agrega valor a todos os estágios do ciclo de desenvolvimento: do planejamento ao desenvolvimento, testes, implantação e operação.

Os engenheiros de software amam: o que significa que eles adotarão o software e expandirão o uso ao longo do tempo.

“Nós temos o que gostamos de chamar de ‘fluxo de entrega de ponta a ponta’, que começa pelo código-fonte e percorre todo o processo até a implantação na produção. Agora nós integramos o Slack às principais etapas desse processo.”

Thomas LawlessEngenheiro de software sênior, IBM

Se você quiser ver mais, agende uma demonstração ou peça a um de nossos desenvolvedores para mostrar nossa instância do Slack. Temos orgulho dela.

Este recurso foi útil?

0/600

Ótimo!

Agradecemos seu feedback!

Entendi!

Agradecemos seu feedback.

Estamos com problemas. Tente novamente mais tarde.