Existem muitas fontes para aprender, além de colegas mais experientes: livros, blogs de desenvolvedores hábeis, Stack Exchange, palestras / conferências etc. A revisão de códigos também é crucial e o CodeReview.SE é um recurso precioso.
Vamos ver como isso poderia funcionar em um exemplo.
Exemplo
Você está lendo uma postagem no blog que menciona um termo "ETL". Você não sabe o significado disso, mas, a partir deste artigo, você entende vagamente que é um tipo de processo ou fluxo de trabalho que move dados de um suporte de dados para outro.
Você acessa a Wikipedia e outros recursos e obtém uma visão mais precisa da coisa. Ainda não está muito claro quando seria útil usar um ETL. Afinal, parece muito mais fácil escrever uma consulta SQL que fará todo o trabalho, em vez de gastar muito tempo criando um ETL real.
Para responder a essas perguntas, você pede emprestado um livro sobre os ETLs da sua biblioteca local. Ele explica que alguns processos de extração, transformação e carregamento não são facilmente executáveis com uma simples consulta SQL: não apenas a fase de extração pode lidar com vários suportes de dados diversos, não apenas um banco de dados relacional, mas também a etapa de transformação pode ser muito complicada para validando / normalizando os dados e mapeando-os.
Agora você tem uma visão clara do que é um ETL, como usá-lo e, especialmente, quando você precisa de um ETL e quando não é uma ferramenta apropriada. Enquanto isso, você implementou um pequeno ETL como um projeto pessoal. Este projeto permite que você descubra alguns pontos que não são claros o suficiente para você e não são cobertos por um livro. Como esses pontos são bastante abstratos e não estão relacionados ao código-fonte, você posta uma pergunta no Programmers.SE .
Quando você tem a oportunidade de criar um em sua empresa, você começa a criá-lo. Você tem alguns problemas. Alguns estão relacionados ao código; você posta perguntas no Stack Overflow . Outros estão relacionados ao banco de dados; você faz as perguntas no DBA.SE .
Finalmente, há uma conferência realizada por um desenvolvedor altamente habilidoso sobre como otimizar ETLs. Você participa dessa conferência e fornece dicas preciosas sobre os aprimoramentos que você pode fazer para o seu projeto.
Você também começa a seguir o blog de um desenvolvedor que trabalhava em ETLs diferentes há anos. É interessante ver as diferentes abordagens e, através deste blog, você aprende sobre o ECCD; você está interessado, por isso empresta o The Data Warehouse ETL Toolkit de Ralph Kimball, o livro que fala em detalhes sobre o processo "extrair, limpar, conformar e entregar". O mesmo blog também menciona muitos aplicativos destinados a criar ETLs sem habilidades de programação. Isso é particularmente útil para o ETL que você fez para sua empresa, pois seu chefe, que não é técnico, pede constantemente que você faça algumas pequenas alterações no que você fez.
Descobrindo coisas
IMHO, a parte difícil, quando você não tem um mentor ou um colega mais experiente, é descobrir coisas e, com a descoberta, quero dizer passar do estado "eu nunca ouvi falar sobre isso" para "eu ouviu falar, mas não sabe muito bem o que é ".
Se alguém revisar meu código e disser que eu realmente deveria começar a usar algumas convenções de estilo, com um pouco de curiosidade, posso descobrir que, na programação, existem diferentes estilos de escrever código, que você deve seguir um estilo para uma determinada linguagem e base de código, e que muitos idiomas têm ferramentas para impor um estilo (como StyleCop para C #).
Se ninguém me fala sobre o estilo, como eu saberia que isso existe?
É aí que recursos como blogs ou Stack Exchange são úteis. A Wikipedia não ajudaria (a menos que você gaste dias acessando páginas aleatórias sobre programação), e os livros raramente falam sobre essas coisas.
O mesmo se aplica a padrões e práticas ou coisas menos relacionadas ao código. Por exemplo, eu dificilmente imagino algum desenvolvedor acordando de manhã dizendo a si mesmo que ele deve aprender algo sobre o ITIL enquanto nunca se interessou pelo ITIL antes.
Depois de descobrir um novo termo, é muito fácil aprender sobre ele. Se você deu um novo termo "contratos de código" e é desenvolvedor de C #, pode facilmente encontrar informações suficientes no MSDN (ou, melhor, no livro de Jon Skeet).
A curiosidade ajuda
Quando trabalho com estagiários, sempre percebo que os melhores são aqueles que ficaram curiosos fora de suas palestras. Eles podem saber que existe uma coisa chamada programação funcional, mesmo que nenhum de seus professores nunca a tenha mencionado e, embora não conheçam nenhuma linguagem funcional, ainda conseguem explicar em termos gerais o que é FP e como é diferente de outras. paradigmas. Eles podem conhecer o Agile, o Unicode ou o modelo de confiança parcial / sandbox, apenas porque estavam lendo blogs e usando o Stack Exchange, em vez de simplesmente assistir às palestras.
Mesmo quando não têm um mentor, ainda aprendem todas as coisas que não são ditas na faculdade.