Princípios de produtos da Intercom: Construindo em pequenos passos para entregar o máximo valor ao cliente

Publicados: 2022-09-07

Grandes mudanças são difíceis de entender e mais difíceis de depurar.

Na Intercom, entregamos mudanças complexas em uma série de etapas pequenas, controladas e fáceis de entender. Pequenas mudanças são mais fáceis de construir e mais rápidas de revisar, permitindo-nos entregar valor aos clientes mais rapidamente.

Este é o sétimo post de uma série que explora nossos princípios de produto . Aqui, Aidan discute nosso princípio de engenharia “Construir em pequenos passos”.

Ninguém acerta o tempo todo

Erros acontecem em todas as equipes, em todas as empresas do mundo. Depois de aceitar que não vai acertar o tempo todo, você pode ajustar de duas maneiras:

  • Tente corrigir os erros antes de enviá-los, tomando medidas para validar ou verificar seu trabalho.
  • Dê a si mesmo espaço para errar, aprenda com o erro e ajuste-se rapidamente para corrigi-lo.

Se você já mergulhou semanas em uma mudança, geralmente há menos espaço para estar errado. Isso pode levar você a confiar na validação para evitar surpresas ao enviar sua alteração. A validação tem seu lugar, mas é um substituto ruim para implantar algo de verdade. Quanto mais validação você precisar realizar antes do envio, mais tempo levará antes que você possa iterar ou passar para o próximo recurso – isso acaba deixando você mais lento.

Ao enviar uma alteração, nosso objetivo é controlar:

  • O número de variáveis ​​afetadas: quanto mais variáveis ​​forem afetadas durante uma mudança, mais difícil será descobrir qual parte da mudança causou o problema. Ao diminuir o tamanho de cada etapa, estreitamos o ciclo de feedback e nos preparamos para aprender e nos ajustar muito mais rapidamente, se necessário.
  • O tamanho da mudança: ao diminuir o tamanho de nossas mudanças, também reduzimos o raio de explosão de cada mudança. É importante testar as mudanças, mas a validação inicial é limitada. Mudanças menores nos permitem focar nossa atenção em alcançar sua meta de forma incremental e não ficarmos muito presos em garantir que cada mudança seja perfeita.
  • Quais clientes experimentam a mudança: contamos com sinalizadores de recursos para validar as alterações na produção e liberá-las de forma incremental para os clientes.

Não sabemos ao certo se o recurso resolverá o problema de um cliente até que ele o tenha em mãos. Esse compromisso de enviar pequenas iterações rapidamente se vincula a outro princípio da Intercom: enviar para aprender.

Gerenciando a complexidade

Construir dentro de sistemas complexos é um desafio. Quando os bugs surgem em grandes mudanças, ou recursos inchados erram o alvo, é difícil identificar o problema específico. Pequenos passos tornam mais fácil validar, mudar e seguir em frente – com a certeza de que você está construindo em terreno sólido.

Grandes mudanças incluem muitas suposições:

  • Suposições externas sobre como sua mudança afetará os fluxos de trabalho de seus clientes.
  • Suposições internas sobre como as diferentes partes de sua mudança interagem e dependem umas das outras.

Embora você possa fazer o possível para verificar suposições externas, geralmente é mais rápido e robusto enviar sua alteração e validar ou ajustar. As suposições internas são onde a complexidade pode se infiltrar. Quando sua mudança se torna grande o suficiente para abranger vários blocos de construção que dependem uns dos outros, testá-los juntos pode ser arriscado. É muito mais seguro lançá-los de forma incremental, construindo um em cima do outro e monitorando o impacto à medida que avança.

Velocidade durável cria impulso

A velocidade é ótima, mas a velocidade confiável e durável muda o jogo. O envio de uma grande mudança significa que há muito mais chances de sucesso e um risco maior de surpresas em comparação com uma série de iterações pequenas e rápidas.

Um ciclo apertado de envio de pequenas mudanças, aprendizado e iteração cria um forte impulso”

Um ciclo apertado de envio de pequenas mudanças, aprendizado e iteração cria um forte impulso. Ele elimina a necessidade de estar certo na primeira vez, incentiva a tomada de decisões mais rápida e reduz o raio de explosão de erros. Além disso, dividir o trabalho em unidades menores significa que os engenheiros podem progredir no trabalho em paralelo, permitindo que a equipe se mova mais rapidamente como um todo.

Construir em pequenos passos requer a cultura de equipe certa

Construir em pequenos passos não acontece por acaso, requer intenção deliberada e o ambiente certo. Nossa cultura de equipe e pilha de infraestrutura desempenham um papel crucial em nossa capacidade de enviar pequenas alterações rapidamente.

Depois que as equipes aceitam a importância de enviar pequenas alterações rapidamente, as revisões por pares são priorizadas e concluídas mais rapidamente. Como pequenas mudanças são mais fáceis de entender e revisar, há mais chances de bugs serem detectados em cada estágio. Essa compreensão e urgência da equipe acelera todo o processo.

Investimos significativamente para garantir que, uma vez que uma mudança seja revisada e mesclada ao master, leve menos de 15 minutos para chegar à produção, incluindo testes automatizados e validação de preparação”

Quando os tempos de implantação diminuem, os engenheiros ficam mais inclinados a fazer alterações em lote, resultando em um ciclo de alterações maiores. Investimos significativamente para garantir que, uma vez que uma alteração seja revisada e mesclada ao master, leve menos de 15 minutos para atingir a produção, incluindo testes automatizados e validação de preparação. É totalmente prático e os engenheiros recebem uma notificação automática do Slack assim que a alteração estiver ativa.

Aplicando o princípio “construir em pequenos passos” à integração do Salesforce da Intercom

No ano passado, procuramos integrar mais profundamente o Intercom ao Salesforce, permitindo que os clientes criassem automaticamente casos do Salesforce a partir de conversas do Intercom. Compreendemos rapidamente a complexidade; conversas e casos nem sempre são mapeados de forma direta e sincronizar dados em um relacionamento muitos-para-muitos seria um desafio tanto do ponto de vista da engenharia quanto do design. Além disso, havia uma grande variação em como os clientes queriam usar esse recurso e precisava se encaixar na integração existente da qual os clientes dependem muito.

Depois de trabalhar com as muitas implicações e compensações de design, estacionamos o projeto em favor de algo que sentimos que traria um impacto mais confiável. Quase não o construímos porque o abordamos como uma grande mudança em vez de uma série de pequenos passos.

Revisitamos o projeto com uma abordagem diferente

Não demorou muito para que nossa equipe de vendas voltasse para destacar o quão importante esse recurso era para nossos clientes – e decidimos dar outra olhada. Desta vez, adotamos uma abordagem diferente, começando com a menor versão possível e evitando um pouco da complexidade até que pudéssemos aprender o que os clientes realmente precisavam.

Os clientes com quem trabalhamos realmente valorizaram o ritmo em que a equipe interagiu e como o recurso evoluiu no dia-a-dia, guiado por seus comentários”

Em duas semanas, outro engenheiro e eu construímos a versão mais básica desse recurso que poderíamos compartilhar com os clientes. Fizemos isso em muitas pequenas etapas, garantindo que não quebramos nenhum dos fluxos de trabalho existentes que os clientes já estavam usando. Isso tornou o recurso muito mais tangível e os clientes puderam fornecer feedback específico sobre as lacunas e melhorias do produto.

Depois que os clientes começaram a usá-lo, a equipe iterou em pequenas etapas, tornando o recurso mais flexível rapidamente. À medida que a flexibilidade crescia, aumentava também o número de clientes que a usavam e expandimos rapidamente a versão beta.

Acontece que o relacionamento muitos-para-muitos não impediu que os clientes usassem o recurso e o lançamos com sucesso com segurança e sem essa complexidade extra, algo que descobrimos apenas começando pequeno e iterando rapidamente. Os clientes com quem trabalhamos realmente valorizaram o ritmo em que a equipe interagiu e como o recurso evoluiu no dia-a-dia, guiado por seus comentários.

Construir em pequenos passos funciona para todos

Construímos em pequenos passos principalmente porque isso nos ajuda a entregar valor ao cliente mais rapidamente, de maneira mais segura e durável. Mas, além disso, como engenheiro, é uma maneira mais agradável de trabalhar. É muito menos estressante do que enviar grandes mudanças, onde há muita coisa que depende de você estar certo na primeira vez – e você recebe uma dose regular de dopamina toda vez que envia o que está trabalhando para a produção.

Portanto, se nada nesta postagem do blog o convencer a otimizar para reduzir riscos e fornecer valor incremental, você deve fazê-lo porque é apenas mais divertido.

Interessado em saber mais sobre a forma como trabalhamos na Intercom? Descubra mais.

Carreiras CTA - Engenharia (horizontal)