Como o conservadorismo técnico nos ajuda a escalar mais rápido e melhor

Publicados: 2022-07-21

Na Intercom, estamos focados no futuro e estamos dando passos ousados ​​para chegar lá. Mas quando tomamos decisões técnicas, gostamos de ser conservadores.

Na prática, ser tecnicamente conservador é como reutilizar tecnologias e estruturas existentes em nossa pilha ou promover padrões e soluções testados e comprovados. Valorizamos essa familiaridade porque entendemos que os problemas importantes a serem resolvidos são aqueles que agregam valor ao cliente ou ao negócio.

Em vez de avaliar novas tecnologias e gastar tempo com problemas operacionais já resolvidos que, em última análise, fornecem pouco valor ao cliente, podemos nos concentrar em melhorar o produto criando, lançando e iterando soluções.

Este é o sexto post de uma série que explora nossos princípios de produto . Aqui, Waheed discute nosso princípio de engenharia “Seja tecnicamente conservador”.

Há muitos benefícios de longo prazo para o conservadorismo técnico

Esse princípio é mais bem ilustrado por alguns exemplos ao longo dos anos, demonstrando como Ser tecnicamente conservador” nos permite escalar rapidamente sem ser uma restrição. Falei anteriormente sobre nossa experiência de projetar nosso sistema de relatórios, onde avaliamos os benefícios da introdução de um novo armazenamento de dados em nossa pilha – Redshift. Isso significaria introduzir um novo tipo de banco de dados em nosso sistema que nunca havia sido testado em produção. Além disso, teríamos que gastar muito tempo construindo conhecimento operacional, mantendo clusters em produção e lidando com problemas imprevistos da operação do Redshift em escala.

Alavancamos nossa infraestrutura existente para acelerar o processo de cerca de seis meses para apenas seis semanas”

Por fim, decidimos que um armazenamento de dados familiar era mais adequado para o trabalho. Aproveitamos nossa infraestrutura Elasticsearch existente, que capacita a maioria dos recursos de pesquisa da Intercom, para acelerar o processo de cerca de seis meses para apenas seis semanas.

A versão inicial do sistema de relatórios foi lançada há alguns anos, então tivemos a oportunidade de refletir sobre alguns dos benefícios de longo prazo de nossa aplicação de conservadorismo técnico nesse caso:

Resolvemos o problema do cliente mais rápido

Usar nossa infraestrutura existente significava que evitávamos gastar tempo nos familiarizando com um novo armazenamento de dados e lidando com todos os inevitáveis ​​contratempos. Conseguimos focar imediatamente no problema do cliente a ser resolvido e enviar rapidamente, reduzindo o tempo de entrega em mais de quatro meses.

Aproveitamos ao máximo o tempo da equipe

Nossa equipe de infraestrutura de dados conseguiu continuar a se concentrar em um conjunto pequeno e familiar de tecnologias, em vez de se espalhar por várias tecnologias. Como resultado, eles tiveram – e ainda têm – mais tempo para garantir a saúde de nossos sistemas existentes e otimizar o uso de cada tecnologia.

Como nosso conjunto de tecnologias é relativamente pequeno, as melhorias acontecem regularmente”

Aumentamos o valor das melhorias contínuas

Como nosso conjunto de tecnologias é relativamente pequeno, as melhorias acontecem regularmente. O produto aproveita essas tecnologias e, portanto, o impacto dessas melhorias é composto por tudo que foi construído sobre elas. Uma pequena melhoria pode ter um efeito cascata positivo em todo o produto.

Mais equipes tiveram mais contribuições

O uso de tecnologias comuns significa que mais engenheiros e equipes se sentem confiantes e capacitados para trabalhar com eles. Vimos melhorias frequentes no produto de relatórios de equipes de toda a empresa, em vez de apenas uma equipe que possui uma parte específica do sistema.

Lembre-se que princípios não são regras, são diretrizes

Princípios são uma maneira incrível de alinhar equipes e renderam ótimos resultados para a Intercom. Mas há momentos em que pode fazer mais sentido não segui-los. À medida que uma empresa cresce, existe o risco de que alguns membros da equipe sigam os princípios dogmaticamente ou os interpretem incorretamente. Deixar de lado o conservadorismo técnico não deve significar que nunca introduzimos algo novo.

“Conservadorismo técnico significa favorecer uma tecnologia que já está na sua pilha – mas apenas se for a melhor opção”

Conservadorismo técnico significa favorecer uma tecnologia que já está na sua pilha – mas apenas se for a melhor opção. Em algumas situações, uma tecnologia existente pode não ser adequada. Se não puder responder às seguintes perguntas, podemos procurar mais e avaliar alternativas:

  • A nova ferramenta permite que sua empresa escale com mais eficiência?
  • Isso permite que sua equipe ou organização se mova mais rapidamente e forneça valor mais rapidamente?
  • Ele resolve um problema do cliente que não pode ser resolvido com suas ferramentas existentes?

Se você responder “sim” a qualquer uma delas, pode valer a pena considerar a introdução dessa nova ferramenta. Na Intercom, houve um exemplo recente que respondeu “sim” a todas as três perguntas.

Os usuários, ou os clientes de nossos clientes, são essenciais para a plataforma Intercom. À medida que crescemos, nossos clientes e suas necessidades em termos de quantidade de dados de usuários que armazenam na Intercom também cresceram. A grande quantidade de dados do usuário estava levando a problemas de dimensionamento com nosso armazenamento de dados de usuário atual na época e, para garantir que pudéssemos continuar a oferecer suporte a clientes novos e existentes, precisávamos repensar nossa solução atual. Isso acabou nos levando a introduzir uma nova tecnologia em nossa pilha – eis como chegamos a essa decisão.

Estávamos escalando mais rápido do que nosso armazenamento de dados permitiria

Estávamos usando o MongoDB há cerca de cinco anos e tínhamos as cicatrizes operacionais para provar isso. Otimizamos todos os aspectos de possuí-lo e executá-lo – desde o tipo de hardware em que ele era executado até as consultas que executamos nele. Estávamos no ponto de retornos decrescentes e estávamos vendo fortes sinais de que deixaria de ser adequado dentro de alguns anos – e poderia até se tornar um gargalo no crescimento da empresa.

“Pense regularmente na trajetória do seu negócio e pergunte 'O que nos trouxe até aqui, nos levará até lá? '. Isso permitirá que você seja proativo sobre suas escolhas, em vez de reativo”

É aqui que é fundamental ter uma estratégia técnica forte e com visão de futuro. Nesse ponto, tínhamos dados suficientes para sugerir que talvez precisássemos avaliar outra abordagem e tínhamos a pista para fazê-lo. Pense regularmente na trajetória do seu negócio e pergunte “O que nos trouxe até aqui, nos levará até lá?”. Isso permitirá que você seja proativo sobre suas escolhas, em vez de reativo, e mitiga os riscos em torno das incógnitas desconhecidas da introdução de uma nova tecnologia.

Nossa tecnologia estava desacelerando nossa equipe

Na Intercom, nos esforçamos para executar menos software. Nesse caso, embora estivéssemos adotando uma nova tecnologia com incógnitas desconhecidas, a adoção do DynamoDB nos permitiu fazer exatamente isso.

Anteriormente, estávamos autogerenciando o dimensionamento do MongoDB junto com o código para balanceamento de carga – uma sobrecarga significativa para a equipe. Parte do atrativo do DynamoDB era que ele era gerenciado pelo fornecedor, AWS. Isso significava que, embora houvesse um custo inicial para adotá-lo, em última análise, seria mais barato e economizaria muito tempo e esforço da equipe.

“Não ser dogmático sobre o conservadorismo técnico nos permitiu substituir uma tecnologia com grandes despesas gerais e capacidades limitadas”

Pode parecer contra-intuitivo, mas a introdução de uma nova tecnologia resultou em menos software. Não ser dogmático sobre o conservadorismo técnico nos permitiu substituir uma tecnologia com grandes despesas gerais e capacidades limitadas por uma nova tecnologia que era menos onerosa operacionalmente e mais escalável.

Fomos implacáveis ​​com os requisitos

Às vezes, exigimos que o MongoDB realizasse consultas complexas e caras que arriscavam a disponibilidade e o desempenho de consultas mais comuns, mas menos complexas. Ao avaliar o DynamoDB, percebemos que ele não suportaria essas consultas complexas e caras, mas seria muito melhor nas consultas mais simples e comuns.

Já usávamos principalmente o Elasticsearch para realizar consultas complexas, e a necessidade de migrar nos obrigou a revisar e definir de forma mais deliberada os recursos que exigimos de nosso repositório de usuários e, por fim, nos permitiu melhorar o desempenho de seu caso de uso principal: recuperar registros de usuário único.

“Ao pensar em substituir uma tecnologia, não tome como certo que você usará a nova tecnologia da mesma maneira”

Ao pensar em substituir uma tecnologia, não tome como certo que você usará a nova tecnologia da mesma maneira. Seus requisitos provavelmente terão mudado consideravelmente ao longo do tempo, e o restante da pilha terá evoluído ou amadurecido para que os casos de uso se tornem mais restritos. Isso abrirá oportunidades para adotar tecnologias mais focadas e de alto desempenho ou transferir algumas tecnologias para serem gerenciadas por um fornecedor.

Faça seus princípios funcionarem para o seu negócio, e não o contrário

O conservadorismo técnico é uma ótima ferramenta para permitir que suas equipes se mantenham focadas no que é importante – resolver os problemas dos clientes e entregar valor sem gastar recursos preciosos respondendo a perguntas que já foram respondidas.

No entanto, tornar-se muito rígido na crença de que a introdução de novas tecnologias é ruim pode impedir que você aproveite as tecnologias que o ajudarão a executar menos software e dimensionar com mais facilidade e rapidez. É importante aplicar esse princípio de uma maneira que funcione melhor para sua equipe e sua empresa a longo prazo.

Você está interessado em se juntar à equipe de engenharia da Intercom? Saiba mais e veja nossas vagas abertas aqui.

Carreiras CTA - Engenharia (horizontal)