Nada acelerará seu crescimento como um mentor experiente. No entanto, encontrar um pode ser um desafio e sua disponibilidade geralmente é limitada.
Por outro lado, agentes de IA como o ChatGPT estão disponíveis 24 horas por dia, 7 dias por semana e também parecem ter bastante conhecimento. Poderia tal agente servir como um substituto razoável para um verdadeiro mentor humano?
O que me interessa particularmente são mais "meta" conselhos - as pequenas dicas e truques, adquiridos apenas por meio de uma vasta experiência, que o ajudarão a crescer e amadurecer como desenvolvedor - não apenas gerar ou explicar o código.
Como alguém com mais de 20 anos de experiência, que orientou vários desenvolvedores juniores, estou curioso para saber como seria sólido, abrangente e acionável para um iniciante esse conselho do ChatGPT.
Vamos fazer um teste rápido!
Se você está curioso sobre a qualidade dos conselhos do ChatGPT, mas não quer passar por toda a discussão e meu comentário detalhado passo a passo, sinta-se à vontade para pular direto para a última seção.
💬 Meus prompts.
🤖 Respostas ChatGPT.
🤔 Meus pensamentos/comentários.
💬 Aja como um desenvolvedor de software experiente e profissional com mais de 10 anos de experiência. Imagine que você está orientando um colega júnior mais jovem, com não mais de 2 a 3 anos de experiência. Farei várias perguntas relacionadas à carreira de programação e desenvolvimento de software. Eu estarei perguntando a eles como este desenvolvedor mais jovem. Responda-os da maneira que for mais útil para eu me tornar um desenvolvedor melhor e crescer profissionalmente.
🤖 Claro, estou aqui para te ajudar! Sinta-se à vontade para fazer qualquer pergunta sobre programação ou sua carreira de desenvolvimento de software, e farei o possível para orientá-lo com base em minha experiência.
🤔 Até aí, tudo bem. Vamos começar!
💬 Por favor, compartilhe 10 lifehacks que são rápidos e fáceis de implementar e irão me ajudar imediatamente a me tornar um desenvolvedor melhor.
🤖 Claro! Aqui estão 10 lifehacks que você pode implementar rapidamente para melhorar suas habilidades como desenvolvedor:
Use atalhos de teclado : aprenda e use IDE ou atalhos de teclado específicos do editor para navegar e manipular o código mais rapidamente. Isso economizará seu tempo e aumentará sua produtividade.
Siga a técnica Pomodoro : divida seu trabalho em intervalos pequenos e gerenciáveis (geralmente 25 minutos), seguidos de uma pequena pausa. Essa técnica pode ajudá-lo a manter o foco e manter um ritmo de trabalho consistente.
Controle de versão mestre : fique à vontade com o Git ou outro sistema de controle de versão. Isso ajudará você a rastrear alterações em seu código, colaborar com outras pessoas e reverter para versões anteriores quando necessário.
Automatize tarefas repetitivas : use scripts ou ferramentas para automatizar tarefas mundanas, como formatação de código, renomeação de arquivo ou estrutura de projeto. Isso economizará tempo e reduzirá as chances de erro humano.
Leia e escreva código limpo : adote um estilo de codificação limpo que seja fácil de ler e entender. Siga as práticas recomendadas para convenções de nomenclatura, recuo e estrutura de código. Isso tornará seu código mais fácil de manter e reduzirá o tempo gasto na depuração.
Comente seu código : escreva comentários significativos para explicar o propósito e a funcionalidade do seu código. Isso tornará mais fácil para os outros entenderem seu código e para você relembrar seu processo de pensamento ao revisitar o código posteriormente.
Procure revisões de código : peça a seus colegas ou mentores que revisem seu código regularmente. Isso ajudará você a identificar áreas para melhoria e aprender com seus conhecimentos.
Fique curioso : explore constantemente novas linguagens, estruturas e ferramentas. Isso ajudará você a se manter atualizado com as últimas tendências do setor e ampliar seu conjunto de habilidades.
Divida os problemas em partes menores : quando se deparar com um problema complexo, divida-o em tarefas menores e mais gerenciáveis. Isso ajudará você a manter o foco e evitará que fique sobrecarregado.
Cuide-se : Priorize seu bem-estar físico e mental. Exercite-se regularmente, durma o suficiente e faça pausas quando necessário. Uma mente e um corpo saudáveis o ajudarão a ser mais produtivo e focado em seu trabalho.
Lembre-se, tornar-se um desenvolvedor melhor é um processo contínuo e leva tempo e dedicação. Mas, ao implementar esses lifehacks, você pode acelerar seu crescimento e melhorar continuamente suas habilidades.
🤔 A lista parece sólida, embora um tanto aleatória e não particularmente inovadora. No entanto, pedi conselhos ao ChatGPT para iniciantes, então as respostas relativamente óbvias são compreensíveis.
Algumas dessas dicas não parecem tão rápidas e fáceis de implementar (o que fazia parte do meu prompt). Alguns outros são um pouco vagos e requerem mais explicações - mas como o ChatGPT foi projetado para ser usado de forma iterativa, aprofundando-se cada vez mais com perguntas de acompanhamento, acho que está tudo bem. Há alguns pontos com os quais não concordo totalmente, mas os vejo mais como uma questão de opinião do que incorreta. No geral, nada mal!
Vamos nos aprofundar um pouco mais em cada sugestão:
Use atalhos de teclado : conselhos sólidos. Rápido e fácil de implementar, sem dúvida aumentará sua produtividade. Uma coisa que me surpreende é por que apenas atalhos de teclado simples? Utilizar recursos mais avançados como inteligência de código, snippets, autoformatadores, geradores de código e assistentes de IA como o GitHub Copilot (ou o próprio ChatGPT, duh) seria igualmente fácil de começar a usar e proporcionaria um impulso muito maior.
Siga a Técnica Pomodoro : Bons conselhos. Você definitivamente deveria tentar. Se você nunca ouviu falar do Pomodoro antes, pode ser necessário pesquisar no Google ou fazer uma pergunta complementar ao ChatGPT, mas, caso contrário, é bastante direto e autoexplicativo.
Controle de versão mestre : um bom conselho, mas definitivamente não é um macete. Mesmo a palavra "mestre" mostra claramente que não é uma solução rápida e fácil. Eu também diria que o controle de versão é parte integrante de sua pilha de tecnologia principal, semelhante à sua linguagem de programação, estrutura principal ou banco de dados, em vez de um "hack" para melhorar sua produtividade. Mas, caso contrário, o conselho está correto.
Automatize tarefas repetitivas : conselhos sólidos, mas, novamente, precisam ser mais explorados. É um nível muito alto para ser implementado imediatamente.
Ler e escrever código limpo : Ler muito código limpo (ou código em geral) é um conselho fantástico – e fácil de implementar. A única parte complicada é como saber, como iniciante, qual código é limpo e onde encontrá-lo. Novamente, isso requer uma investigação mais profunda. Escrever código limpo, no entanto, é uma questão completamente diferente. É parte de um domínio vitalício de seu ofício, e livros inteiros são escritos sobre o assunto. Você deve absolutamente estudá-lo, mas, assim como dominar o controle de versão, está muito longe de ser um macete.
Comente seu código : Esta é a primeira dica que considero discutível (embora, como eu disse anteriormente, não porque esteja obviamente errado, mas por causa de preferências pessoais). Existem duas posições em relação aos comentários: comentar muito versus tornar o código tão auto-explicativo que você não precisa de comentários (a menos que precise explicar o objetivo comercial por trás do seu código). Estou fortemente no segundo campo, então o muito autoritário "escrever comentários" do ChatGPT não ressoa em mim. Por outro lado, também diz para escrever comentários significativos e explicar o propósito do seu código, com o qual concordo plenamente. Mas também diz para explicar a funcionalidade do seu código, o que considero uma prática ruim e uma perda de tempo. Então, eu tenho sentimentos mistos sobre este.
Buscar revisões de código : Este conselho é o mais sólido e facilmente aplicável possível. Você deve procurar revisões de código o máximo possível, especialmente como iniciante.
Fique curioso : Este é o segundo conselho que considero um tanto discutível. Explorar novas linguagens, estruturas e ferramentas é um bom conselho em geral (embora eu discuta sobre "constantemente" - cheira a desenvolvimento orientado a palavras-chave), mas pode não ser a melhor estratégia para um iniciante com apenas um ou dois anos de experiência. experiência. Como um júnior, você deve se concentrar mais em construir uma base sólida de melhores práticas e princípios e aprendê-los em profundidade, o que é mais fácil quando você se concentra em dominar uma única pilha por um tempo. Mas, francamente, estou criticando aqui e não chamaria esse conselho de errado.
Divida os problemas em pedaços menores : Conselho sólido, mas, novamente, é de alto nível. Quebrar os problemas de forma eficaz não é trivial. Para realmente implementar isso na prática, alguns detalhamentos adicionais seriam necessários.
Cuide-se : conselhos muito bons e aplicáveis. Na verdade, é bom que o ChatGPT tenha incluído conselhos como este, que não estão diretamente relacionados a habilidades técnicas.
Tudo bem, passamos por todas as dicas. Nada mal, nada mal. No entanto, nem todos eles são imediatamente aplicáveis. Vamos detalhar alguns para ver o quão perto podemos chegar do núcleo
💬 Vamos nos aprofundar na dica "Usar atalhos de teclado". Você pode elaborar um pouco se devo aprender todos os atalhos possíveis ou se há categorias específicas de atalhos nas quais devo me concentrar?
🤖 Certamente! Quando se trata de atalhos de teclado, a chave é se concentrar em aprender aqueles que terão o impacto mais significativo em sua produtividade e eficiência. Você não precisa aprender todos os atalhos disponíveis, mas priorizar aqueles que economizarão mais tempo e ajudarão a otimizar seu fluxo de trabalho.
Aqui estão algumas categorias de atalhos de teclado para focar:
Atalhos de navegação : esses atalhos ajudam você a navegar rapidamente pelo seu código, pular entre arquivos ou guias e localizar símbolos específicos ou instâncias de uma palavra-chave. Os exemplos incluem "Ir para definição", "Ir para linha" e "Localizar todas as referências".
Atalhos de edição : esses atalhos ajudam você a manipular o código recortando, copiando, colando e formatando o texto. Os exemplos incluem "Linha duplicada", "Mover linha para cima/para baixo" e "Alternar comentário".
Atalhos de refatoração : a refatoração é uma parte essencial para manter o código limpo e eficiente. Atalhos que ajudam você a refatorar o código rapidamente podem economizar muito tempo. Os exemplos incluem "Renomear símbolo", "Extrair método" e "Alterar assinatura".
Atalhos de depuração : a depuração é uma parte crucial do processo de desenvolvimento. Atalhos que ajudam você a gerenciar pontos de interrupção, percorrer o código e inspecionar variáveis podem simplificar suas sessões de depuração. Os exemplos incluem "Toggle Breakpoint", "Step Over" e "Step Into".
Atalhos específicos do IDE : seu IDE ou editor de código pode ter recursos ou ferramentas exclusivos que podem ser acessados por meio de atalhos. Familiarize-se com esses atalhos para aproveitar ao máximo o ambiente de desenvolvimento escolhido.
Lembre-se de que as combinações de teclas reais para esses atalhos podem variar dependendo do IDE ou editor de código que você está usando. Consulte a documentação ou as configurações do seu editor para descobrir e personalizar esses atalhos de acordo com sua preferência.
Ao aprender atalhos, comece concentrando-se em alguns de cada vez. À medida que você se sentir mais confortável com eles, incorpore gradualmente mais atalhos em seu fluxo de trabalho diário. Com o tempo, usar esses atalhos se tornará uma segunda natureza e você notará uma melhoria significativa em sua produtividade e eficiência.
🤔 Essa é uma ótima categorização! Estou impressionado. Também gosto dos exemplos concretos para cada categoria. Esse nível de recomendação já é acionável – você pode procurar facilmente por "Atalhos de navegação" ou "Ir para definição" na documentação do seu IDE. Além disso, as categorias são bem escolhidas. Eles são realmente os que darão um impulso significativo à sua produtividade.
Ainda sinto falta de uma coisa: os impulsionadores de produtividade mais substanciais, como preenchimento automático ou trechos de código. Não quero perguntar sobre eles explicitamente, pois estou fingindo não saber que eles existem. No entanto, vamos quebrar um pouco as regras:
💬 Você disse que eu deveria aprender atalhos "para navegar e manipular o código mais rápido", que "a chave é focar em aprender aqueles que terão impacto mais significativo em sua produtividade e eficiência" e "priorizar aqueles que economizar mais tempo e ajudar a simplificar seu fluxo de trabalho". Existem outras ferramentas ou recursos de IDE, além dos atalhos de teclado, que possam me ajudar a atingir essas metas?
🤖 Com certeza! Além dos atalhos de teclado, existem muitas outras ferramentas e recursos IDE que podem ajudar a aumentar sua produtividade e eficiência. Aqui estão alguns deles:
Trechos de código e modelos : Muitos IDEs e editores suportam trechos de código ou modelos que podem gerar estruturas de código comumente usadas ou código clichê com apenas algumas teclas. Isso pode economizar seu tempo e ajudar a manter a consistência em seu código.
Preenchimento automático e IntelliSense : IDEs modernos e editores de código geralmente fornecem conclusão de código inteligente, o que sugere conclusões para variáveis, métodos ou palavras-chave com base no contexto atual. Isso pode acelerar o processo de codificação e reduzir a chance de erros de digitação ou de sintaxe.
Depuração integrada : as ferramentas de depuração integradas ao seu IDE permitem que você defina pontos de interrupção, percorra seu código e inspecione variáveis sem sair do ambiente de desenvolvimento. Essa experiência de depuração perfeita pode ajudá-lo a encontrar e corrigir problemas com mais eficiência.
Integração de controle de versão : Muitos IDEs oferecem suporte integrado para sistemas de controle de versão como o Git. Essa integração pode simplificar tarefas comuns de controle de versão, como confirmar alterações, criar ramificações e resolver conflitos, tudo dentro do seu IDE.
Análise de código e linting : as ferramentas de análise e linting de código em tempo real podem ajudá-lo a identificar possíveis problemas, como erros de sintaxe, variáveis não utilizadas ou violações de estilo de código, enquanto você escreve seu código. Isso pode economizar tempo na depuração e garantir que seu código siga as práticas recomendadas.
Ferramentas de refatoração : alguns IDEs têm ferramentas integradas que podem refatorar seu código automaticamente, como extrair métodos, renomear variáveis ou alterar assinaturas de métodos. Essas ferramentas podem ajudá-lo a manter um código limpo e eficiente sem esforço manual.
Gerenciamento de tarefas e projetos : muitos IDEs e editores possuem recursos que permitem gerenciar tarefas, criar listas de tarefas e acompanhar o andamento de seus projetos. Isso pode ajudá-lo a se manter organizado e priorizar seu trabalho com mais eficiência.
Personalização : a maioria dos IDEs e editores oferece um alto nível de personalização, incluindo temas, plug-ins e opções de configuração. Adaptar seu ambiente de desenvolvimento de acordo com suas preferências pode ajudá-lo a trabalhar de forma mais confortável e eficiente.
Terminal integrado : ter um terminal integrado em seu IDE pode economizar seu tempo, permitindo que você execute comandos, crie seu projeto ou interaja com o controle de versão sem alternar entre as janelas.
Essas ferramentas e recursos podem melhorar significativamente sua experiência de codificação, tornando-o mais eficiente e produtivo. Reserve um tempo para explorar os recursos do seu IDE ou editor de código e não hesite em experimentar novas ferramentas ou plug-ins que podem aprimorar seu fluxo de trabalho.
🤔 Agora vamos falar! A lista não é totalmente exaustiva (por exemplo, falta os autoformatadores de código e, surpreendentemente, ainda falta os assistentes de IA - o ChatGPT não está ciente de seus próprios recursos? Ou é humilde demais?), Mas é sólido e amplo o suficiente para ser genuinamente útil para um desenvolvedor iniciante. Além disso, agora que você está ciente da riqueza das ferramentas de desenvolvedor modernas, você pode se aprofundar ainda mais.
💬 Uma das dicas que você me deu foi "Controle de versão mestre". Mas é realmente um macete rápido e fácil? Parece-me um longo processo para dominar totalmente o controle de versão. Existe alguma dica rápida relacionada ao controle de versão que possa ser implementada imediatamente?
🤖 Você está certo ao dizer que dominar o controle de versão pode ser um processo mais longo, mas existem algumas dicas rápidas e práticas recomendadas que você pode implementar imediatamente para fazer uso mais eficaz de sistemas de controle de versão como o Git. Aqui estão alguns:
Comprometa-se com frequência e em pequenas unidades : faça confirmações pequenas e focadas que contenham uma única alteração lógica. Isso facilita a compreensão do histórico do projeto, a localização de problemas e a reversão de alterações, se necessário.
Escreva mensagens de confirmação descritivas : quando você fizer alterações, escreva mensagens de confirmação claras e concisas que descrevam as alterações e seus propósitos. Isso ajuda você e sua equipe a entender o histórico do projeto e torna mais fácil encontrar alterações específicas posteriormente.
Use branches : crie branches para novos recursos, correções de bugs ou experimentos. Isso mantém seu ramo principal estável e permite que você trabalhe em várias tarefas em paralelo sem afetar a base de código principal.
Mesclar regularmente : Mescle as alterações do branch principal em seus branches de recursos regularmente para mantê-los atualizados e minimizar os conflitos de merge quando for a hora de integrar suas alterações.
Puxe antes de enviar : antes de enviar suas alterações para o repositório remoto, sempre extraia as alterações mais recentes do remoto para garantir que seu repositório local esteja atualizado. Isso pode ajudar a evitar conflitos e garantir uma experiência de colaboração mais tranquila.
Abrace .gitignore : Use um arquivo .gitignore para excluir arquivos que não precisam ser rastreados, como arquivos temporários, artefatos de compilação ou arquivos específicos do IDE. Isso mantém seu repositório limpo e focado no código essencial.
Essas dicas rápidas podem ajudá-lo a fazer uso mais eficaz dos sistemas de controle de versão e simplificar seu fluxo de trabalho. Embora eles possam não torná-lo um mestre de controle de versão da noite para o dia, eles podem servir como uma base sólida para você construir enquanto continua a aprender e refinar suas habilidades.
🤔 Bem liso. Embora essas dicas não o levem ao domínio total do controle de versão, elas agora são mais acionáveis - e, no geral, são bastante decentes, considerando que são conselhos para iniciantes.
Alguns pontos permanecem um pouco vagos, por exemplo, "Use branches". As estratégias de ramificação de controle de versão são um tópico amplo e complexo, e esse ponto específico não é muito acionável sem exploração adicional. No entanto, é um único valor discrepante e, pelo menos, fornece um ponto de partida claro para uma pesquisa mais aprofundada.
No geral, nada mal!
💬 Você me deu uma dica para "Ler código limpo". Mas como vou saber, como iniciante, qual código está limpo? Como reconhecê-lo? E onde encontrar esse código para ler?
🤖 Como iniciante, pode ser difícil reconhecer um código limpo à primeira vista. No entanto, com prática e exposição a um código bem escrito, você começará a desenvolver uma compreensão do que constitui um código limpo. Aqui estão algumas diretrizes gerais e características do código limpo:
Legibilidade : código limpo é fácil de ler e entender. Ele tem uma estrutura clara, nomes significativos de variáveis e funções e recuo adequado. Ele também segue convenções de nomenclatura consistentes e diretrizes de estilo.
Modularidade : o código limpo é organizado em funções ou métodos pequenos e focados que executam uma única tarefa. Cada módulo deve ter uma única responsabilidade, e o código deve ser dividido em componentes lógicos.
Manutenibilidade : o código limpo é fácil de modificar, estender e refatorar. Evita a duplicação de código (princípio DRY) e segue as melhores práticas para minimizar as chances de introdução de bugs quando as alterações são feitas.
Documentação e comentários : O código limpo é bem documentado com comentários que explicam o propósito e a funcionalidade do código. Os comentários devem ser concisos e fornecer apenas informações que não sejam imediatamente aparentes na leitura do próprio código.
Eficiência : O código limpo é eficiente em termos de desempenho e uso de recursos. Evita complexidade desnecessária e os algoritmos e estruturas de dados usados são adequados para o problema em questão.
Para encontrar um código limpo para ler e aprender, considere as seguintes fontes:
Projetos populares de código aberto : muitos projetos populares de código aberto em plataformas como o GitHub têm código de alta qualidade que foi revisado e refinado por vários colaboradores. Explore projetos na linguagem ou estrutura com a qual você está trabalhando para encontrar exemplos de código limpo.
Práticas recomendadas de codificação : procure artigos, livros ou cursos sobre práticas recomendadas de codificação para a linguagem de programação com a qual você está trabalhando. Esses recursos geralmente fornecem exemplos de código limpo e diretrizes sobre como escrevê-lo.
Revisões de código : participe de revisões de código em sua equipe ou busque feedback de desenvolvedores ou mentores experientes. Observar seus comentários e sugestões pode ajudá-lo a aprender a reconhecer um código limpo e melhorar seu próprio estilo de codificação.
Desafios de codificação : sites como LeetCode, HackerRank ou Codewars oferecem desafios de codificação junto com soluções enviadas por outros usuários. A revisão dessas soluções pode ajudá-lo a aprender diferentes abordagens para a solução de problemas e expô-lo a exemplos de código limpos.
Lembre-se, reconhecer e escrever código limpo é uma habilidade que se desenvolve com o tempo. À medida que você lê e escreve mais código, você se torna mais hábil na identificação de código limpo e na adoção de práticas recomendadas em seu próprio trabalho.
🤔 Desta vez, o resultado é meh na melhor das hipóteses.
A primeira parte da resposta afirma essencialmente que você pode reconhecer o código limpo pelo fato de aderir a princípios vagos e de alto nível de código limpo (alguns dos quais, como comentários e eficiência, são até discutíveis - por exemplo, não código realmente precisa ser eficiente para ser limpo e legível?).
A segunda parte também é um sucesso ou um fracasso. Participar de revisões de código é um bom conselho (embora possa ser mais enfatizado que você não deve apenas revisar seu código, mas também fazer quantas revisões puder, para aprender com o código de desenvolvedores mais experientes). Ler livros e artigos sobre melhores práticas de codificação é um bom conselho, mas bastante óbvio, não agregando muito valor. Aprender com projetos de código aberto e sites de desafio de codificação é um conselho potencialmente fantástico, mas essas fontes geralmente contêm códigos ruins também e ainda não resolvem o enigma de como um iniciante pode reconhecer qual é qual.
Vamos tentar cavar um pouco mais fundo:
💬 Você disse que, para encontrar um código limpo para ler e aprender, posso consultar projetos populares de código aberto, pois muitos deles têm código de alta qualidade. Mas muitos dos projetos de código aberto também têm código de baixa qualidade. Como posso reconhecer qual projeto de código aberto é de alta qualidade e qual não é?
🤖 Você está certo, nem todos os projetos de código aberto têm código de alta qualidade. Para identificar projetos de código aberto de alta qualidade, considere os seguintes fatores:
Popularidade : projetos com um grande número de estrelas, forks ou observadores em plataformas como o GitHub geralmente indicam que o projeto é bem visto pela comunidade. Embora a popularidade não seja uma garantia de qualidade do código, pode ser um indicador útil.
Mantenedores e colaboradores ativos : projetos de alta qualidade tendem a ter mantenedores ativos e um grupo diversificado de colaboradores. Procure projetos com um histórico regular de commits, atualizações e correções de bugs. Um bom número de contribuidores e uma comunidade ativa podem ser um sinal de que a base de código é continuamente aprimorada e refinada.
Documentação clara : projetos bem documentados geralmente são um sinal de uma base de código bem mantida e de alta qualidade. Procure projetos com arquivos README abrangentes, documentação de API e guias de uso.
Revisões e discussões de código : verifique as solicitações pull do projeto e as discussões de problemas. Um projeto saudável terá análises completas de código, feedback construtivo e discussões ativas sobre melhorias e correções de bugs.
Aderência aos padrões de codificação : Projetos de alta qualidade geralmente seguem padrões de codificação e melhores práticas para a linguagem de programação ou estrutura que usam. Procure formatação, convenções de nomenclatura e organização de código consistentes.
Testes automatizados : Projetos com um conjunto robusto de testes automatizados indicam que os mantenedores se preocupam com a qualidade do código e garantem que o software funcione conforme o esperado. Procure projetos com alta cobertura de teste e um pipeline de integração contínua (CI) que execute testes em cada confirmação ou solicitação pull.
Dependências e licenciamento : Projetos de alta qualidade devem ter uma lista clara de dependências, junto com suas respectivas licenças. Isso mostra que os mantenedores estão atentos aos aspectos legais e operacionais do projeto.
Para começar sua busca por projetos de código aberto de alta qualidade, você pode explorar listas ou coleções selecionadas, como Awesome Lists no GitHub, que agregam projetos populares e conceituados em vários domínios. Você também pode conferir projetos mantidos por organizações ou desenvolvedores conceituados que são bem conhecidos no setor.
Lembre-se que mesmo projetos de alta qualidade podem ter áreas que poderiam ser melhoradas. À medida que você ganha mais experiência, você desenvolverá uma melhor compreensão do código limpo e estará mais bem equipado para avaliar a qualidade de vários projetos de código aberto.
🤔 Esta resposta é decente mais uma vez. Embora fatores como popularidade do projeto ou boa documentação não necessariamente garantam um código limpo, todos eles combinados são um proxy decente – provavelmente o melhor que você pode obter, já que nunca há garantias definitivas. E o conselho de olhar para as listas selecionadas, embora sejam mais um indicador de popularidade do que necessariamente de qualidade, fornece um ponto de partida razoável. Não é exaustiva, pois a pesquisa do GitHub, por exemplo, também é uma ótima maneira de encontrar projetos de código aberto populares e ativos. Mas, considerando que reconhecer código limpo é um tópico muito subjetivo e difícil, essa resposta está correta. Poderíamos tentar cavar ainda mais fundo - mas preciso manter o comprimento deste post sob controle...
💬 Um dos macetes que você me deu foi escrever comentários significativos para explicar o propósito e a funcionalidade do meu código. Você pode elaborar sobre isso? Que comentários você considera significativos? Devo sempre escrever comentários para todo o meu código? Existe alguma boa heurística sobre quando e como escrever comentários?
🤖 Escrever comentários significativos é um aspecto importante para escrever um código limpo e sustentável. Comentários significativos devem fornecer informações e contexto adicionais que não são imediatamente aparentes na leitura do próprio código. Aqui estão algumas diretrizes sobre quando e como escrever comentários:
Explique o código complexo ou não óbvio : se um trecho de código for complexo ou difícil de entender para alguém não familiarizado com o projeto, um comentário pode ajudar a explicar o raciocínio por trás da implementação ou fornecer uma visão geral de alto nível do algoritmo.
Suposições e limitações do documento : se o seu código depende de suposições específicas ou tem limitações, é importante documentá-las nos comentários. Isso ajuda a evitar problemas futuros ou mal-entendidos quando outra pessoa (ou mesmo você) modificar o código posteriormente.
Esclareça o propósito de funções e classes : embora os nomes de funções e classes devam ser descritivos, um breve comentário pode fornecer contexto adicional sobre o propósito e o comportamento esperado de uma função ou classe.
Explique soluções alternativas ou hacks : Se você teve que implementar uma solução alternativa ou hack para resolver um problema ou limitação específica, documente o raciocínio e quaisquer possíveis efeitos colaterais em um comentário. Isso ajuda os futuros mantenedores a entender o propósito da solução alternativa e considerar possíveis melhorias.
Recursos externos de referência : se o seu código for baseado em um recurso específico, como um trabalho de pesquisa, algoritmo ou biblioteca de terceiros, inclua um comentário com uma referência a esse recurso. Isso ajuda a fornecer contexto e informações básicas para outras pessoas que trabalham no projeto.
Aqui estão algumas dicas sobre como escrever comentários eficazes:
Seja conciso : os comentários devem ser curtos e direto ao ponto. Evite escrever parágrafos longos ou repetir informações que já estão claras no código.
Mantenha os comentários atualizados : certifique-se de que seus comentários permaneçam relevantes à medida que seu código evolui. Atualize os comentários ao modificar o código, para que reflitam com precisão o estado atual do código.
Evite afirmar o óbvio : evite escrever comentários que simplesmente reafirmem o que o código faz. Concentre-se em fornecer contexto, justificativa ou explicações que não sejam imediatamente óbvias no próprio código.
Você não precisa escrever comentários para cada linha ou bloco de código. Em vez disso, concentre-se em comentar onde agrega valor e ajuda a melhorar a compreensão do código. Lembre-se de que um código bem escrito deve ser autoexplicativo, portanto, priorize escrever um código claro e expressivo, usando comentários para complementar quando necessário.
🤔 Esta é uma resposta muito boa. Embora a dica inicial fosse ambígua e deixasse espaço para interpretações que poderiam levar a comentários excessivos, esta elaboração esclarece bem e é 100% correta. É exatamente assim que eu aconselho abordar a escrita de comentários.
Houve alguns pequenos erros aqui e ali, mas no geral os resultados são surpreendentemente bons.
Algumas respostas eram muito óbvias, algumas eram uma questão de opinião, mas nenhuma delas estava totalmente errada e muitas delas eram realmente boas e acionáveis. Também gostei da amplitude e variedade de conselhos - incluiu até um ponto sobre como cuidar da saúde!
As respostas iniciais são superficiais - elas não agregam muito valor sem ir pelo menos alguns níveis mais fundo por meio de perguntas de acompanhamento. Mas se você se acostumar com esse fluxo, tudo correrá bem. Você não fica sobrecarregado com muitas informações antecipadamente, mas pode explorar gradualmente, aprofundando-se apenas nos tópicos que lhe interessam ou não entendem. Eu diria até que é mais parecido com trabalhar com um mentor humano real do que, por exemplo, ler um livro ou assistir a um curso.
Você fica um pouco mais sobrecarregado ao trabalhar com o ChatGPT em comparação com um mentor humano real. Um humano pode captar mais pistas de seu tom de voz, expressões faciais e linguagem corporal e pode conduzir a discussão de forma mais proativa em resposta ao seu comportamento. Ao trabalhar com o ChatGPT, no entanto, as únicas pistas que ele pode captar são suas perguntas diretas – portanto, a qualidade da experiência depende apenas de sua capacidade de formular perguntas claras, não da experiência ou inteligência emocional de seu mentor. Dito isto, aprender a fazer perguntas apropriadas não é muito difícil e, se o fizer, ainda poderá obter muito valor de sua interação.
Para um iniciante, a parte mais complicada pode ser descobrir exatamente o que perguntar para passar de respostas superficiais para respostas mais profundas. Se você não possui conhecimento aprofundado em uma determinada área, geralmente está longe de ser óbvio. No entanto, isso pode ser mitigado aprendendo a fazer perguntas "detalhadas" mais gerais, como "Por que você escolheu esta resposta?", "Você pode elaborar mais?", "Esta resposta é realmente a melhor?", " Esta é a única resposta boa?", "Quais são os prós e os contras?", "Quais seriam as alternativas?", "Existem técnicas mais semelhantes?" e assim por diante. Ficar bom em fazer perguntas como essas também o beneficiará em seu trabalho diário: ao esclarecer requisitos, fazer brainstorming com seus colegas de equipe ou até mesmo ao trabalhar com um verdadeiro mentor humano – portanto, é um treinamento que vale a pena.
Resumindo, pelo que pude observar em um teste tão limitado, certamente o recomendaria .
Não é um substituto completo para um verdadeiro mentor humano, mas se você não tiver acesso a um, você deve definitivamente tentar o ChatGPT. E mesmo se você tiver um mentor, ainda vale a pena aproveitar os dois, pois o ChatGPT está muito mais disponível. Você pode começar com o ChatGPT (e usá-lo com mais frequência) e, em seguida, pedir ao seu verdadeiro mentor para avaliar suas respostas, expandi-las ou aprofundar-se em áreas mais complicadas, mantendo-se no ChatGPT para os casos mais diretos.
Também pode ser benéfico começar com uma visão geral de alto nível do que há para aprender em uma determinada área, para entender a configuração geral do terreno - e então usar o ChatGPT para aprofundar os tópicos selecionados. Existem muitos recursos bons que fornecem essa visão geral, como roadmap.sh ou o guia que estou escrevendo .