Como Erick Wendel, um especialista do Google Developers da Web, mudou para sempre o Node.js com o suporte da comunidade de código aberto

MAI 23, 2023
Kevin Hernandez Developer Relations Community Manager

Você já enfrentou bugs em tecnologias de renome internacional? O que você fez? 

Confira o exemplo de Erick Wendel, especialista do Google Developers da Web, que encontrou a solução para um bug que tem assolado grandes empresas de tecnologia. 

Erick começou a atuar como desenvolvedor por meio de uma comunidade de software que oferecia cursos gratuitos no país onde nasceu, o Brasil. Essa experiência despertou nele uma paixão por projetos de código aberto e colaboração que o ajudou a resolver um problema no Node.js que afetava o funcionamento de subprocessos no ambiente de execução. Erick decidiu compartilhar o conhecimento que adquiriu ao demonstrar exatamente como resolveu o bug em um vídeo detalhado no YouTube.



erickWendelNodeJS
Erick Wendel, especialista do Google Developers da Web, falando na conferência FrontInSampa

O bug

No Node.js, existe um módulo chamado “processo filho” que permite criar tarefas em outras funções para processar dados em segundo plano. Esse processo usa mais potência da sua máquina e das páginas da Web, permitindo que as páginas carreguem rapidamente. Ao tentar importar módulos em JavaScript, há duas maneiras principais de carregar esses módulos:

  1. CommonJS: os scripts precisam ser carregados em uma determinada sequência. Esse método bloqueia o programa até que todos os módulos sejam carregados na sequência especificada.
  2. Módulos ECMAScript: permitem que o JavaScript carregue módulos de forma assíncrona, evitando assim o bloqueio do programa à medida que os arquivos são carregados.

Enquanto montava uma aula para os alunos, Erick usou o módulo de processo filho do Node.js para tentar agendar uma função que seria executada em segundo plano. No funcionamento correto, o processo pai deveria enviar mensagens para o programa em execução em segundo plano, assim que a função fosse chamada. Durante o trabalho, Erick percebeu que estava recebendo um erro e teve que reescrever o código diversas vezes. Ele estava 100% certo de que o código deveria funcionar, mas mesmo assim, o erro continuava aparecendo. Foi aí que ele pensou: “E se eu colocar uma função setTimeout aqui apenas para esperar um pouco e depois solicitar os eventos?” E funcionou! Erick percebeu que se tratava de um bug real e acessou o repositório GitHub do Node.js para reportar um problema. Ele trabalhou com outros colaboradores em busca da melhor solução.

Uma solução para o problema

Após a descoberta, Erick queria ter certeza de que se tratava de um problema geral. “Quando pesquisei no Google, encontrei esses problemas no Facebook Jest, Yarn e outras grandes bibliotecas que qualquer pessoa executando JavaScript poderia usar”, disse ele. Como defensor de projetos de código aberto e colaboração, Erick criou um problema no GitHub do Node.js e discutiu a questão com outros colaboradores.

Quando questionado sobre os recursos que usou para corrigir o bug, Erick destaca a comunidade de código aberto. Ele conversou com Anna Henningsen, uma das mais importantes colaboradoras do Node.js, na opinião dele. A ideia proposta era introduzir um novo evento no módulo do processo filho que alertaria os usuários quando o evento estivesse “pronto”. No entanto, como Anna apontou, isso levaria a mudanças, exigindo que a comunidade aprendesse como usar esse novo processo. Em vez disso, ela propôs: “E se você simplesmente enfileirar todas as mensagens e, quando o processo filho estiver pronto, despachar todas elas?” Esse era o tipo de colaboração que ele buscava, e essa solução de Anna corrigiria o bug sem interromper todos os aplicativos que usam Node.js.

Anna ofereceu imenso apoio e, imediatamente após a abertura da discussão no GitHub, membros da comunidade comentaram sobre o projeto. Ele lembra: “Depois que enviei a primeira versão da minha solução, muitos colaboradores revisaram o código e disseram: 'Não, este não é o caminho certo, você deveria corrigir isso, é um problema de desempenho e assim por diante.' Recebi feedback e aprendi muito até que a ideia foi finalmente aprovada.” Sem a ajuda da comunidade de código aberto, ele teria trabalhado em uma solução que criaria outros problemas. Em vez disso, a comunidade apontou os pontos cegos, e essa colaboração permitiu uma solução perfeita.

Com a solução de Erick, o Node.js pode efetivamente executar tarefas em segundo plano usando módulos ECMAScript, e as grandes empresas devem agradecer a ele e à comunidade de código aberto por terem resolvido um problema que existe desde o início do Node.js.

Impacto

Desde que resolveu o problema, Erick se tornou um membro essencial do Node.js, onde analisa solicitações de envio, participa de discussões e é reconhecido como um desenvolvedor influente no setor. Ele também foi convidado para conferências em todo o mundo para falar sobre desenvolvimento de código aberto e a experiência como desenvolvedor.

Erick quer dar visibilidade ao poder dos projetos de código aberto e pede a todos, estudantes e profissionais, que ajudem nesse sentido. Esses projetos o ajudaram a deixar uma marca no mundo, e ele afirma: “Quero colocar meu nome em algo que as pessoas se lembrem para sempre. Eu diria que esse é o poder do código aberto. É possível adicionar ideias ou tentar consertar algo, e isso pode tornar você um desenvolvedor e uma pessoa melhor.”

Erick continua resolvendo problemas (a mais nova solução dele corrigiu um bug no Node.js com uma única linha de código), aprendendo e compartilhando conhecimento pelo canal dele no YouTube. Ele está ansioso para o próximo grande desafio.

Erick agradece

Erick agradece à comunidade de código aberto e, em especial, a Anna Henningsen e Rich Trott pelo apoio e pelas contribuições para essa solução. Nas palavras dele: “Para os colaboradores experientes do Node.js, esse bug teria sido corrigido em apenas alguns minutos, e eles me deixaram ajudar e dar meu melhor. Essa é uma lição que vai ficar para sempre na minha memória."

You can find Erick on Twitter, GitHub and YouTube where he published a step-by-step tutorial (in Brazilian Portuguese) on how he fixed this bug and also gave a summarized tech talk sharing his journey.

O programa Especialistas do Google Developers (GDE, na sigla em inglês) é uma rede global de especialistas em tecnologia, influenciadores e líderes de pensamento altamente experientes que apoiam desenvolvedores, empresas e comunidades de tecnologia, com apresentações em eventos e publicação de conteúdo.