Pense antes de codar! O que avaliar antes de usar uma nova tecnologia

Diego Martins de Pinho
Code Prestige
Published in
4 min readJan 8, 2019

Um dos aspectos mais interessantes (e empolgantes!) da tecnologia é que ela está sempre mudando e se renovando. Quem está na área a um certo tempo já sabe da importância de estar sempre estudando e quebrando antigos paradigmas. A tecnologia que é o hype hoje, pode ser o grande fracasso de amanhã. Veja o exemplo do Java: hoje muita gente faz piada e diz que a linguagem e sua plataformas são horríveis, lentas, verbosa… (coisas que eu particularmente considero um baita exagero) entretanto, há alguns anos atrás (e não muitos, viu?) você encontrava um programador Java a cada esquina (e hoje ainda é a grande porta de entrada para se trabalhar no exterior).

Entretanto, adotar uma tecnologia nova em um projeto no mundo real é um passo que deve ser medido no maior número possível de ângulos diferentes.

Isso porque quando estamos tratando de projetos reais, estamos falando de empregos, empresas, pessoas, processos e dinheiro (às vezes, muito dinheiro). Apesar de toda a empolgação de ter uma nova tecnologia que pode reduzir pela metade o seu esforço atual, precisamos ser profissionais e avaliar se faz realmente sentido adotá-la em curto, médio e/ou longo prazo dentro do projeto.

Mas como fazer essa análise de maneira adequada? Como saber quais pontos avaliar antes de sair usando a tecnologia? Foi para ajudar neste questionamento que a engenheira Sacha Greif fez uma grande pesquisa que resultou no seu artigo “The 12 Things You Need to Consider When Evaluating Any New JavaScript Library” (link nas referências).

No artigo original ela trabalha dentro do mundo do JavaScript, no entanto, acredito que os pontos levantados são válidos para qualquer tecnologia.

Os doze pontos apontados pela autora são:

  1. 🕹️ Features (funcionalidades): Este ponto diz respeito às funcionalidades que esta tecnologia vai te proporcionar. Ela vai permitir otimizar o seu fluxo de trabalho ou somente é um outro jeito de fazer a mesma coisa? O que ela realmente agrega ao seu projeto?
  2. 🐞 Stability (estabilidade): Além das funcionalidades, precisamos estar muito atentos a estabilidade do projeto. Com que frequência sai atualizações? O que são essas atualizações? Existem versões LTS desta tecnologia? Há casos de sucesso no mercado que a utilizam?
  3. ⚡ Performance: Este é outro ponto chave que quase não preciso comentar. A tecnologia que você quer usar é performática? Ela realmente aumenta a velocidade da sua aplicação? E da sua equipe?
  4. 🎁 Package Ecosystem (ecossistema): Este item é mais voltado ao mundo JavaScript, mas ainda sim é bastante válido. Você sabe quais as tecnologias que dão suporte ao que você quer usar? E como são estes tópicos que estamos estudando para as dependências deste projeto? Afinal, do que adianta usar um projeto que possui vulnerabilidades de terceiros? Por osmose você poderá passar estes mesmos problemas para a sua aplicação.
  5. 🌎 Community (comunidade): Como é a comunidade desta tecnologia que você quer utilizar? É forte? Há Meetups e/ou eventos relacionados? Há grupos regionais/nacionais ou somente grupos estrangeiros? É importante avaliar isso para saber como a tecnologia está engajada dentro do seu meio.
  6. 👶 Learning Curve (curva de aprendizado): Dificilmente seu chefe permitirá que você adote uma tecnologia em que a curva de aprendizado é muito longa. Projetos precisam ser entregues com rapidez e um tempo dedicado somente para estudos pode sair muito caro.
  7. 📖 Documentation (documentação): Tão importante quanto a comunidade é a própria documentação do projeto. É por meio dela que você será capaz de compreender como ela funciona e porque foi implementada daquela maneira.
  8. 🔧 Tooling (ferramentas): Há um tempo atrás era muito difícil aprender o React e isso se dava ao fato do ferramental necessário para conseguir utilizá-la era extenso. Era preciso aprender o que era Babel, Webpack, Gulp, ES6… isso era bastante complicado. Hoje não é mais assim, mas note como isso atrapalhou em parte a adoção da tecnologia. É importante avaliar o que é necessário aprender junto a tecnologia que você deseja utilizar.
  9. 🏛️ Track Record (histórico): Este aspecto diz a trajetória da tecnologia. Ela já está consolidada? Como foi sua adoção no mercado? e nas comunidade? Quais os casos de sucesso? E os de fracasso? É importante conhecer a história da tecnologia para ter uma ideia melhor sobre o seu futuro.
  10. 👫 Team (time): Quem está por trás da tecnologia? Há algum movimento ou organização que suporta e regulamenta o desenvolvimento desta tecnologia?
  11. ⚖️ Compatibility (compatibilidade): Não há nada que faz menos sentido na programação do que querer usar algo que não é compatível com o que você já tem. Para projetos novos isso não costuma ser um problema, mas para os que já estão na estrada há algum tempo, isso pode ser determinante.
  12. 📈 Momentum (momento): Este item reflete exatamente a ideia de ter cuidado com o hype. Não é porque todo mundo está usando e falando, quer dizer que seja o melhor para você. Novamente, o exemplo do Java. Será que faz sentido trocar todo seu back-end para Node só porque é o que está bombando? Talvez faça, mas jamais tome esta decisão por impulso, sempre avalie este e os outros onze itens anteriores.

E você? O que achou destes pontos? O que você e sua equipe avaliam na hora de adotar um tecnologia? Compartilhe conosco aí embaixo!

Referências

Gostou? Recomende 👏 este artigo e acompanhe nossa publicação para não perder os próximos conteúdos!

Siga nossa publicação e não perca os próximos artigos! http://www.codeprestige.com.brFacebook, Twitter, Youtube

Siga o autor deste artigo e troque uma ideia com ele! http://www.diegopinho.com.br • Twitter, LinkedIn

Aprenda mais com nossos cursos de programação online!

ECMAScript 6ECMAScript 7 e 8React 16VS Code+ Mais

--

--

Diego Martins de Pinho
Code Prestige

Professor de tecnologia, desenvolvedor de software e escritor