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.
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:
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.
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.
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 à 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.