Como engenheiros do GitHub aprendem novos códigos

A Aprender novos codebases pode ser um desafio, independentemente do seu nível de experiência em programação. Um novo codebase pode conter várias camadas de padrões de design, correções de bugs e soluções alternativas temporárias, o que torna o processo de compreensão demorado e frustrante.

No ano passado, ao me juntar a uma nova equipe no GitHub, compilei diversas dicas de colegas sobre como eles abordam esse desafio. Descobri várias estratégias eficazes e estou muito animado para compartilhar essas dicas com você!

A seguir, apresento os métodos mais eficazes que encontrei, organizados por abordagem. Seja você um engenheiro experiente mudando de equipe ou um recém-chegado à área, estas estratégias podem facilitar sua integração em um novo codebase.

Exploração prática do código

Uma das melhores formas de começar é interagir diretamente com o código. Veja algumas dicas de como fazer isso:

* **Comece com “Good First Issues“**: Inicie sua jornada abordando tarefas menores e bem definidas. Essas tarefas são frequentemente selecionadas pela equipe responsável pelo codebase para ajudar os novatos a entender os componentes principais sem se sentirem sobrecarregados. Elas oferecem pontos de entrada naturais no sistema, ao mesmo tempo em que agregam valor imediato à equipe.

* **Aprenda com o GitHub Copilot**: Utilize o Copilot Chat enquanto explora o codebase. Você pode fazer perguntas e usar a função /explain para entender partes mais complexas.

* **Analise a telemetria e as métricas**: As aplicações modernas geram muitos dados de desempenho e uso. Estude essas métricas para entender como o sistema se comporta em produção, quais padrões emergem durante o uso máximo e quais componentes exigem mais atenção. Essa abordagem orientada por dados oferece um contexto valioso sobre o comportamento real da aplicação.

* **Explore através de testes**: Faça modificações deliberadas no código e observe seus efeitos. Escreva novos testes para verificar seu entendimento e quebre o código intencionalmente (em ambiente de desenvolvimento) para ver como o sistema falha. Isso ajuda a construir uma compreensão intuitiva dos limites da aplicação e dos modos de falha.

Aprendizado colaborativo

Compartilhar conhecimento é o caminho mais rápido para o entendimento. Veja algumas dicas de como aprender em conjunto:

* **Programe em par**: Não apenas observe, participe ativamente de sessões de programação em par com membros experientes da equipe. Faça perguntas sobre o fluxo de trabalho deles, observe quais arquivos eles acessam com frequência e conheça suas estratégias de depuração. Mesmo que você esteja apenas observando, você absorverá um contexto valioso sobre como diferentes partes se encaixam.

* **Entenda o “porquê”**: Ao receber tarefas, investigue a fundo a motivação por trás delas. Entender o contexto de negócios e o racional técnico ajuda você a tomar melhores decisões arquitetônicas e auxilia na resolução de problemas futuros. Não tenha medo de fazer perguntas aparentemente básicas, pois elas geralmente levam a insights importantes.

* **Monitore as comunicações da equipe**: Mantenha-se ativo nos canais de bate-papo da equipe e nas discussões sobre resposta a incidentes. Preste atenção especial aos alertas de produção e como a equipe responde a eles. Essa exposição ajuda você a entender os padrões de falha comuns e cria memória muscular para lidar com incidentes.

Documentação e gestão do conhecimento

Escrever e organizar informações ajuda a consolidar o entendimento. Veja algumas dicas:

* **Crie documentação pessoal**: Mantenha um documento vivo de suas descobertas, perguntas e insights. Documente caminhos de código importantes, decisões arquitetônicas e interfaces de sistema à medida que os encontra. Isso se tornará uma referência valiosa e ajudará a identificar lacunas em seu entendimento.

* **Construa mapas técnicos**: Crie diagramas da arquitetura do sistema, fluxos de dados e relações entre entidades. Comece com “caixas pretas” de alto nível e preencha gradualmente os detalhes à medida que seu entendimento aumenta. As representações visuais geralmente revelam padrões e relações que não são óbvios no código. Uma ferramenta que você pode usar para isso é o Figma. Comece adicionando os blocos básicos que você entende sobre um sistema e como eles interagem, e então continuamente amplie e reduza o zoom em diferentes partes do sistema para adicionar ao mapa à medida que aprende.

* **Mantenha uma folha de consulta de comandos**: Acompanhe os comandos, scripts e fluxos de trabalho úteis que você descobre. Inclua contexto sobre quando e por que usá-los. Isso se torna especialmente valioso ao trabalhar com sistemas de construção complexos ou pipelines de implantação.

* **Reúna informações sobre o domínio**: Uma chave para gerenciar seu conhecimento de um codebase é ter um profundo conhecimento do domínio. Isso pode ser obtido de proprietários de produtos, insights de clientes ou de melhores práticas da indústria se o domínio for generalizável o suficiente. Entender profundamente o domínio e o que os clientes nesse espaço consideram mais crítico é fundamental para **Aprender novos codebases**.

Aprenda ensinando

Uma ótima maneira de verificar seu entendimento sobre um tópico é a capacidade de explicá-lo com precisão para outras pessoas. Se você criou documentação pessoal, conforme recomendado na seção anterior, você pode formalizá-la em guias e documentação oficial para futuros novos membros de sua equipe:

* **Escreva guias internos**: Depois de aprender algo novo, documente-o para a próxima pessoa. Isso força você a organizar o que você aprendeu e geralmente revela áreas onde seu entendimento não é tão completo quanto você pensava.

* **Contribua para a documentação oficial**: Quando você encontrar lacunas na documentação existente, tome a iniciativa de melhorá-la. Isso não apenas ajuda futuros membros da equipe, mas também valida seu entendimento com os especialistas atuais.

* Reflita regularmente sobre seu aprendizado respondendo a estas perguntas-chave:
* Você consegue descrever o sistema em algumas frases concisas?
* Como ele interage com sistemas adjacentes?
* O que mais te surpreendeu durante o processo de aprendizado?
* Quais aspectos permanecem obscuros?

Após todas essas recomendações, percebi que minha maneira favorita de Aprender novos codebases é documentando-o e transformando essa documentação em algo que outras pessoas possam usar no futuro. Anotar as coisas me força a estruturar meus pensamentos e identificar lacunas em meu entendimento.

Se você está buscando formas de aprender a criar listas, uma ótima maneira de verificar seu entendimento sobre um tópico é a capacidade de explicá-lo com precisão para outras pessoas. Além disso, aproveite para conferir 10 novidades de tecnologia para ficar sempre atualizado.

É importante lembrar que, não importa como você escolha Aprender novos codebases, familiarizar-se com um novo codebase pode levar tempo.

Este conteúdo foi auxiliado por Inteligência Artificial, mas escrito e revisado por um humano.
Via The GitHub Blog

Leave a Comment

Exit mobile version