Como escolher a stack ideal para o seu projeto

Vinnicius Gomes
5 min readMay 9, 2024

--

Foto de traf na Unsplash

Nossa área está repleta de novas soluções, algumas que ficam hypadas, outras nem tanto. Aposto que você já ficou na dúvida de qual tecnologia ideal para começar aquele projeto, certo?

Hoje vou te mostrar uma abordagem relativamente simples, mas muito eficaz, que estou utilizando no meu dia a dia de engenheiro de software. Ela é baseada no movimento criado pelo Dan McKinley, que se chama Boring Technology. Vou te explicar como ela funciona!

Mas antes, vamos entender um pouco mais sobre o problema de não escolher a tecnologia certa para o projeto.

O problema

Para o time de engenharia:

  1. Complexidade desnecessária: Tecnologias de ponta podem introduzir complexidade desnecessária no desenvolvimento, dificultando a compreensão e a manutenção do código.
  2. Curva de aprendizado acentuada: Ferramentas novas e não testadas geralmente têm uma curva de aprendizado acentuada, exigindo tempo e recursos para que os membros da equipe se familiarizem com elas.
  3. Instabilidade e bugs: Tecnologias recentes podem ser mais propensas a bugs e instabilidades, resultando em atrasos no cronograma e frustração para os desenvolvedores.

Para o negócio:

  1. Atrasos no desenvolvimento: Problemas técnicos causados pela escolha da tecnologia errada podem levar a atrasos no lançamento do produto, afetando a competitividade no mercado.
  2. Custos elevados: Corrigir problemas relacionados à tecnologia inadequada pode aumentar significativamente os custos do projeto, comprometendo os orçamentos estabelecidos.
  3. Perda de confiabilidade: Uma infraestrutura técnica instável pode minar a confiança dos investidores, parceiros comerciais e stakeholders no sucesso do projeto.

Para o produto:

  1. Limitações funcionais: Tecnologias inadequadas podem impor limitações funcionais ao produto, dificultando a implementação de recursos essenciais para atender às necessidades dos usuários.
  2. Escalabilidade comprometida: Uma arquitetura técnica inadequada pode prejudicar a escalabilidade do produto, limitando sua capacidade de lidar com um aumento no volume de usuários e dados.
  3. Experiência do usuário prejudicada: Problemas técnicos recorrentes podem resultar em uma experiência do usuário insatisfatória, levando à perda de clientes e danos à reputação da marca.

Para os clientes:

  1. Funcionalidades ausentes ou defeituosas: Os clientes podem enfrentar funcionalidades ausentes ou defeituosas devido a problemas relacionados à escolha da tecnologia errada, resultando em uma experiência de usuário insatisfatória.
  2. Frustração e insatisfação: Problemas técnicos frequentes podem levar à frustração dos clientes e à perda de confiança na empresa, levando à perda de lealdade e recomendações negativas.
  3. Perda de valor percebido: Uma experiência do usuário deficiente pode diminuir o valor percebido do produto para os clientes, reduzindo sua disposição para pagar e comprometendo o sucesso comercial a longo prazo.

Esse são alguns dos problemas que podem ser gerados pela má escolha da tecnologia. Agora vou te mostrar a abordagem que utilizo no meu dia a dia!

O que é o Boring technology?

“Boring technology” é uma abordagem de desenvolvimento de software que dá prioridade à estabilidade, confiabilidade e à manutenção das nossas aplicações. Com tantas novas tecnologias surgindo a cada dia, algumas super úteis, outras nem tanto, fica aquela dúvida: devemos ou não pular no trem das tendências? Esse movimento nos ajuda a filtrar as opções e escolher as tecnologias certas para as nossas aplicações, deixando de lado o hype e focando no que realmente importa: um sistema que funcione bem e seja fácil de manter.

Como funciona na prática?

O funcionamento é bem simples, podemos colocar lado a lado os problemas e as tecnologias existentes, nosso objetivo é juntar os pontos entre problema e tecnologia.

Imagem tirada do post original: https://boringtechnology.club/

Ao tentar juntar os pontos para resolver o problema da escolha da tecnologia, precisamos pensar não só nos prós imediatos, mas também nos custos de manutenção a longo prazo. Cada decisão traz um benefício e um custo. Se o benefício e o custo se equilibram, não há vantagem clara. No entanto, quando os benefícios superam os custos, a escolha da tecnologia vale a pena!

Exemplo:

Se escolhemos uma tecnologia que oferece melhor desempenho e escalabilidade, mas demanda mais esforço inicial de aprendizado, estamos obtendo dois benefícios (desempenho e escalabilidade) por um custo (maior esforço de aprendizado). Nesse caso, a escolha da tecnologia faz sentido, já que os benefícios superam os custos.

Imagem tirada do post original: https://boringtechnology.club/

Então resumindo, se você tem um benefício para um custo, eles acabam se anulando. Mas, se você tem vários benefícios para o mesmo custo, aí sim a escolha da tecnologia se justifica.

Um exemplo não tão interessante:

Imagem tirada do post original: https://boringtechnology.club/

Óbvio que nem sempre será possível escolher o cenário ideal, pode ser que não tenhamos tecnologias que conseguimos usar para resolver outros problemas, e isso faz parte, na tecnologia nunca teremos uma bala de prata que resolve tudo, o que vale é nosso senso crítico para conseguir escolher o melhor cenário.

Um exemplo de um cenário real:
Onde escolhemos N tecnologias para resolver nossos N problemas, mas sempre tentando escolher o mínimo possível:

Imagem tirada do post original: https://boringtechnology.club/

Conclusão

Então, fica claro que escolher a tecnologia certa para o seu projeto é mais do que só pegar a última moda. É sobre entender os problemas que você precisa resolver e ver qual tecnologia se encaixa melhor nesse quebra-cabeça.

A abordagem “Boring Technology” pode parecer meio chata, mas ela é um salva-vidas. Ela nos ajuda a evitar dor de cabeça lá na frente, garantindo que nossos sistemas sejam estáveis, confiáveis e fáceis de manter.

Então, da próxima vez que você estiver na dúvida sobre qual tecnologia usar, lembre-se: nem sempre é sobre o que tá na moda, mas sim sobre o que vai funcionar melhor para o seu projeto a longo prazo.

Alguns outros links sobre o assunto:

Boring Technology: boringtechnology.club
Post original do Dan McKinley: https://mcfunley.com/choose-boring-technology

Bom, é isso, espero que tenha gostado! E se tiver alguma sugestão deixe aí nos comentários 💬

Se gostou, dê 1 ou 50 claps (Só clicar 50x na 👏)

Obrigado pela leitura!

Me acompanhe por aí! 😜

--

--

Vinnicius Gomes

Senior Software Engineer who love to write about Frontend, JavaScript and Web development. See more about me — vinniciusgomes.dev