Os 4 motivos que nos levaram a migrar do C# para o Javascript

Participei semana passada de um hangout do Vue.js Brasil e comentei que no início da NOALVO nossa stack era C#/ASP.NET e quando fundamos oficialmente a empresa, mudamos para 100% JS (do front ao banco de dados).

Alguns dias depois, o Glauber Barcelos me questionou via LinkedIn quais foram os motivos que nos levaram a mudar a stack e aqui vai a resposta que mandei pra ele.


O que falou mais alto foi nossa experiência recente (à época) com o Node, AngularJS e MongoDB, mas consigo listar alguns motivos mais racionais:

1. Razor + SPA = não faz sentido

Não faz sentido a renderização server-side (e o view engine do ASP.NET, o Razor) juntamente com o funcionamento SPA do AngularJS. Como o AngularJS trabalha muito mais com APIs REST, a Web API em ASP.NET só serviria para operações que retornassem JSON.

2. Serialização/desserialização desnecessária na API

O banco de dados que já usávamos no C# era o MongoDB. Como você deve saber, o MongoDB é em Javascript e suas operações retornam BSON (uma variação do JSON). Como o front-end e o banco de dados conversam na mesma linguagem (JS), não faz nenhum sentido ter uma API que desserializa (BSON-POCO) e serializa novamente (POCO-JSON).

3. Versatilidade do Javascript

Javascript é uma linguagem de programação franca. Unificar toda a stack em Javascript permite reutilizar ou portar código com muito mais facilidade entre front-end (desktop, mobile, web), back-end e banco de dados.

4. Contratação de novos devs

Unificar toda a stack em uma única linguagem facilita a contratação de novos desenvolvedores. Por exemplo, se você contratou um dev front-end que programa JS, consegue ter uma curva de aprendizado para back-end ou banco de dados muito menor do que outras linguagens. Basta um programador saber JS que ele se encaixa em qualquer lugar na equipe de desenvolvimento.

Mas existem alguns contrapontos também.

1. ASP.NET > Node.js

O ASP.NET Core já superou o Node na questão de performance. Acredito que esse seja um ótimo argumento, mas a performance não foi o critério mais importante quando montamos a stack na fundação da startup e sim a agilidade no desenvolvimento. Talvez revejamos o back-end quando estivermos extremamente preocupados em extrair os milissegundos de performance.

2. Estrutura/complexidade

Sabemos que o C# realmente possui uma superioridade em estrutura, capaz de permitir estruturas mais complexas de código com OOP e garantir mais estabilidade na hora do desenvolvimento. Mas, novamente, a nossa prioridade era agilidade no desenvolvimento e nossa regra de negócio era relativamente bem imatura/simples para sairmos estruturando tudo em OOP. Hoje essa necessidade está surgindo, mas estamos testando e nos estruturando para adotar o Typescript que, na minha opinião, vai servir bem esse propósito e vai permitir o melhor dos dois mundos (JS+C#) no back-end.


Adoro essas filosofias tecnológicas. Façam igual o Glauber e me mandem questões polêmicas sempre que puderem 😍

Like what you read? Give Gustavo Gondim a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.