10 aulas de engenharia em 6 anos na Intercom
Publicados: 2024-02-03Depois de mais de seis anos incríveis, desempenhando três funções, em três grupos de produtos diferentes, estou deixando a Intercom em busca de uma oportunidade totalmente nova.
Como já escrevemos extensivamente no passado, a Intercom tem uma cultura única de engenharia e produto – então aqui está minha tentativa de refletir sobre a cultura e resumir as principais lições do meu tempo aqui. Espero que esses insights sejam valiosos para outros engenheiros e gerentes de engenharia.
E se você estiver interessado em trabalhar em problemas difíceis com ótimas pessoas, não deixe de conferir a página de carreiras da Intercom para ver se há uma função para você – você não se arrependerá.
1. Apostar apenas no futuro é como vender a descoberto no presente e acarreta um custo de oportunidade
A Intercom é uma empresa extremamente inovadora e nossa liderança sênior é excelente por ter uma ótima visão sobre quais tendências irão agitar o mercado. Mas apostar apenas nisso, construir apenas para o futuro, é como vender a descoberto o presente e, portanto, acarreta um custo de oportunidade. Na Intercom, talvez tivéssemos esse problema com e-mails e telefone – durante anos estivemos confiantes de que esses canais estavam morrendo, apenas para percebermos, ano após ano, que não estavam diminuindo em nada. Considero que é um modelo mental útil quando se pensa nas tendências futuras – estaria vendido no presente e estaria disposto a pagar o prémio se continuasse a estar errado?
2. Todo desenvolvedor precisa ter IA em sua caixa de ferramentas
Quando trabalhamos no Fin, nossa equipe de IA foi fundamental para fazê-lo funcionar, não conseguiríamos fazer isso como uma equipe de produto. No entanto, com o passar do tempo, mais e mais recursos excelentes foram incorporados a esse sistema diretamente pelas nossas equipes de produto. O impulso inicial pode exigir especialização, mas é importante expor a IA à sua organização o mais rápido possível. Outro engenheiro compartilhou comigo esta anedota – em 2008, as empresas tinham equipes inteiras que faziam “design móvel”. Apenas alguns anos depois, isso fazia parte do trabalho de todos.
3. Os monólitos podem escalar muito bem, oferecer segurança de implantação sólida e alta alavancagem para experiência e observabilidade do desenvolvedor
Continuo surpreso com o quão bem o monólito Intercom Rails foi dimensionado ao longo dos anos. Decisões de engenharia excepcionais, mantendo a simplicidade, a enorme vantagem que nossa única equipe de experiência de desenvolvedor possui e a adesão a tecnologias de nuvem comprovadas nos ajudaram a navegar muito bem pelo crescimento.
“Monolith é algo que mantém nossa capacidade de envio muito rápido e com muita frequência”
Monolith também é algo que mantém nossa capacidade de envio muito rápido, com muita frequência (suando coisas como reversões rápidas ou CI rápido). Em comparação, descobrimos que alguns serviços que possuímos eram difíceis de trabalhar: as equipes precisavam ser desaceleradas para manter suas próprias dependências, pipelines de implantação ou atualizações de infraestrutura. Nunca trabalhei com arquitetura profissional de microsserviços de alta escala, mas mal posso esperar para aprender sobre as vantagens e desvantagens disso.
4. A frequência com que você envia é crítica. É o seu batimento cardíaco
Você pode não enviá-lo aos clientes, mas sempre há uma maneira de enviá-lo para a produção de maneira segura. Se você não consegue encontrar, continue procurando. Ele constrói músculos para acelerar ainda mais quando necessário e evita que você perca a impaciência culturalmente. Mostre o progresso, de preferência em uma demonstração regular para toda a empresa.
5. Crie muitos modelos de sistema e modelos mentais e aplique diferentes camadas de abstração
Olhar para o mesmo problema de ângulos diferentes realmente expande seus horizontes e cria alinhamento. Na Intercom aprendi que a melhor reunião começa quando alguém pega o marcador. Modelos de sistema, criados na hora, adaptados, evoluídos conforme você fala – tudo isso realmente ajuda a aprimorar sua compreensão do problema, suas complexidades e dependências.
“Modelos mentais compartilhados são muito úteis para avançar rapidamente”
Anote-os, mostre-os na sua próxima conversa, peça o modelo mental de outra pessoa. Fazer esse trabalho junto com seus parceiros e partes interessadas acelera a rapidez com que você colabora e elimina o desalinhamento. Modelos mentais compartilhados são muito úteis para avançar rapidamente.
6. Tenha e conheça seus dados, sem desculpas
Eu tinha muitas desculpas no passado para entender os dados do produto sem a ajuda do analista de dados para elaborar consultas e técnicas de análise. Não tenho piedade de mim mesmo desde o ChatGPT. A qualidade e a confiança com que posso navegar no meu espaço de produtos sem um analista dedicado aumentaram dramaticamente e espero que todos, pelo menos um pouco técnicos, possam fazê-lo agora.
7. O gerenciamento de dados está evoluindo, é doloroso e é difícil encontrar uma solução mágica
Possuímos uma plataforma de dados relativamente flexível e amplamente utilizada. Foi a área de produto com maior quantidade de feedback. Mas causar impacto neste espaço foi muito difícil. O mercado está evoluindo rapidamente, com novas abordagens como ETL, ETL reverso, integrações pontuais, CDPs. Sua base de clientes estará espalhada por diversas “melhores formas de gerenciar seus dados”.
“Para ver mudanças e melhorias significativas no gerenciamento de dados, é tudo uma questão de estratégia e consistência”
E por causa disso, nunca houve um único problema – sempre houve longas listas de problemas, semelhantes em alguns formatos, mas diferentes. Para ver mudanças e melhorias significativas no gerenciamento de dados, é tudo uma questão de estratégia e consistência. Pequenos investimentos aqui e ali raramente funcionam.
8. As integrações de dados ficam mais complexas à medida que você se aprofunda nelas
Aprendi a nunca subestimar as integrações entre sistemas. À distância, eles sempre parecem relativamente fáceis – se isso, então aquilo, sincronize objetos no sistema A com os mesmos objetos no sistema B. Mas quanto mais perto você chega, mais diferenças você descobre. Pequenas nuances, limites de taxa de API, condições de corrida, novas tentativas e falta de idempotência e muitos outros ângulos. O diabo está sempre nos detalhes, e os trabalhos que seus clientes estão tentando alcançar com essas integrações costumam ser semelhantes, mas fundamentalmente únicos. As integrações são supercomplexas quanto mais você se aprofunda e não as subestime.
9. Construir integrações fáceis de adotar elimina o atrito, mas reduz o TAM.
As integrações mais fáceis de usar são camadas de abstrações sobre os recursos principais (como APIs ou blocos iPaaS). Eles removem muito atrito, geralmente funcionando imediatamente. O que percebi ao longo dos anos é que construir integrações amplamente adotáveis é muito difícil, pois cada empresa tem necessidades e configurações únicas e sua própria confusão interna de TI para navegar.
Construir essas abstrações facilita a adoção, mas reduz significativamente o TAM, o que pode resultar em um número menor de clientes utilizando-as em comparação com uma versão mais complexa, porém poderosa.
10. A IA mudará fundamentalmente a forma como construímos integrações
No entanto, acredito que o desempenho será diferente para integrações determinísticas e de alto volume e integrações dinâmicas e não previsíveis. As experiências de co-piloto acelerarão drasticamente os usuários em ferramentas iPaaS como Zapier ou Workato, ao mesmo tempo que criam automação de processos previsíveis, repetíveis e de alto volume.
“Os agentes de IA eliminarão a necessidade de construir quaisquer integrações em atividades desencadeadas por humanos”
Isto irá acelerá-los, mantendo ao mesmo tempo a confiabilidade atual e, em última análise, o comportamento determinístico dessas integrações. Os agentes de IA que conseguem raciocinar sobre quais ferramentas usar e se adaptar a informações dinâmicas e imprevisíveis eliminarão a necessidade de construir quaisquer integrações (fora dos recursos da API) em atividades acionadas por humanos, como relatórios, exploração de dados ou solicitação de ajuda.
Lições para a vida
A experiência de trabalhar na Intercom sempre moldará a forma como abordo a engenharia e o gerenciamento pelo resto da minha carreira. Quero agradecer muito a todos com quem trabalhei e que me ajudaram a formar essas lições ao longo dos anos. A Intercom é uma empresa verdadeiramente especial.
Se quiser acompanhar os escritos de Kuba, você pode ver mais reflexões dele sobre gerenciamento de engenharia aqui.