Por que o Pravaler escolheu a linguagem Elixir e qual foi o processo?
O PRAVALER é uma Fintech de soluções financeiras para a educação que cresceu bastante sua equipe de TI nos últimos meses. Nossa empresa foi fundada em 2001 e tem um legado tecnológico em PHP, que nos trouxe até aqui e mantém a operação funcionando, porém, estava na hora de nos modernizamos e escolhemos fazê-lo através do uso da linguagem Elixir.
Quando as discussões sobre o uso de uma nova linguagem começaram a aparecer, nos deparamos com as seguintes dúvidas: nós precisamos realmente de uma nova linguagem? O que o PHP faz e o que ele não faz? Quais são as nossas dores atuais?
Além disso, a liderança técnica da empresa também vêm de diferentes backgrounds tecnológicos, como PHP, C#, Java, Kotlin, Go, Ruby e Scala. Inclusive, isso gerou discussões bem interessantes que foram motivo de orgulho para gente! 😀
No primeiro momento, executamos rodadas de conversas com toda a equipe e consideramos todas as opções possíveis, sem ainda direcionar uma linguagem específica.
As opções sugeridas abertamente foram:
- Python;
- Go;
- Rust;
- Java;
- Kotlin;
- NodeJs;
- Ruby;
- C#;
- E, é claro, elixir;
Mas qual escolher? E por quê?
Em um determinado momento, surgiu a nossa principal pergunta: “qual é o problema que queremos resolver, de fato, hoje?” Isso nos incentivou a definir regras claras de como decidir entre as linguagens indicadas. Levando em consideração os seguintes critérios:
- Custo;
- Maturidade;
- Flexibilidade;
- Mercado;
- Performance;
- E produtividade.
Alguns outros pontos surgiram na discussão que, em um primeiro momento, achávamos importantes — mas no final, vimos que não eram — foram eles: paradigma (se era orientada a objetos ou funcional), se a linguagem era dinâmica ou estática e se a linguagem tinha incentivo no que diz respeito a utilizar boas práticas de programação.
Mas, nós percebemos, por exemplo, que esse último item especificamente era mais uma responsabilidade nossa, como equipe de desenvolvimento, do que qualquer outra coisa. Por isso, decidimos ignorar esse critério durante o restante da análise.
Como foi o processo?
Depois de definir o queríamos, cruzamos esses critérios e atribuímos um sistema de pesos, no qual 1 representa muito ruim ou inexistente e 5 representava excelência naquele quesito. No entanto, houve um critério nesse sistema que foi um grande solucionador de dúvidas e foi um excelente critério de desempate: nós só consideramos a opinião embasada sobre uma linguagem, se a pessoa já tinha, de fato, experiência com ela. Chegamos inclusive a consultar gente de fora da empresa. E foi bem legal! 🙂
Para isso, o critério de nivelamento que usamos foi o seguinte: só levaria nota 5 em um quesito, se a linguagem de programação realmente fosse a melhor naquilo. Exemplo: nada é visto como mais simples de aprender no mercado hoje do que Python, portanto, ela levou 5 nesse quesito de aprendizado. Se, por exemplo, surgia a seguinte afirmação: “mas a linguagem X também é simples de aprender!” A resposta era: “mais do que a Python”
Como não era, obviamente, a outra linguagem não levava 5 nesse mesmo quesito.
Fizemos esse mesmo processo para todos os critérios, comparando uma linguagem contra as outras, além de uma comparação especial ao PHP, afinal, essa é a linguagem que utilizamos hoje. Mas, ao contrário do que possa parecer, esse processo não levou muito tempo, no total, foram apenas umas quatro horas de discussão.
Com esses critérios tivemos a seguinte visão:
A decisão pelo Elixir
Depois das discussões, percebemos que ainda queríamos explorar o Go e o Elixir, mas não tínhamos ido a fundo nas características dessas linguagens.
Então, nessa fase, conseguimos conversar diretamente com o José Valim (criador da linguagem Elixir) e tirar todas nossas dúvidas. Isso diminuiu bastante a sensação de incerteza sobre a tecnologia e ainda descobrimos coisas incríveis, como:
- Suporte a concorrência excelente da linguagem (graças a VM BEAM da Erlang);
- Sintaxe enxuta (similar a Ruby);
- Framework web que não deixa nada a desejar comparado a outros do mercado;
- Ainda percebemos que ela é uma linguagem multiplataforma, com paradigma funcional e benefícios atrelados, como imutabilidade e código mais limpo.
Além disso, os pontos negativos, como por exemplo, falta de suporte a aplicações embarcadas e bibliotecas com suporte a machine learning, que foram mencionados pelo próprio Valim, não eram considerados um problema para o nosso atual momento.
Por fim, nas discussões finais, também conseguimos conversar com um especialista em Go para detalhar melhor os pontos positivos e negativos. E, para embasar nossa decisão final, elaboramos dois critérios mais assertivos neste processo, sendo eles:
- Qual o peso dos critérios para a estratégia do PRAVALER?;
- Qual o fit com nosso negócio?
Com esses ajustes, a versão final dos pesos ficou assim:
Com isso definido, só faltou o ponto final: o que a equipe queria utilizar?
Fizemos então uma votação, com os seguintes opções de escolha:
- Go;
- Elixir;
- Discutir mais um pouco.
O resultado final foi…
O Elixir foi campeão e junto ao resultado vieram muitas expectativas como:
- Auxílio para escrever regras complexas com sua expressividade e simplicidade;
- Tolerância a falhas (imprescindível em produtos financeiros);
- Escalabilidade (porque queremos crescer muito);
- Muito menos bugs e menos erros para nossos clientes;
- Melhorias de performance (velocidade de processamento) e redução de custo;
- Mais rapidez para desenvolver novos projetos;
- Facilidade de testar e reutilizar componentes;
- Muita diversão e satisfação do time técnico!
Veja o vídeo onde nosso diretor de tecnologia Daniel Cukier junto com o nosso techlead Adriano Croco contando como foi essa construção e escolha da linguagem Elixir
Gostou? Tem curiosidade de trabalhar com Elixir?
Então vem ser um #Pravalente! Clique aqui e descubra as vagas disponíveis na nossa Página de Carreiras.
Originally published at https://www.pravaler.com.br on September 11, 2020.