Já têm algumas boas respostas, mas deixem-me acrescentar uma pequena reviravolta…
Eu gosto de pessoas que usam documentação e é um grande sinal para o vosso profissionalismo.
Não usar documentação
Eu conheço programadores suficientes que tropeçam sem um plano real durante longos períodos de tempo, tentando isto e aquilo por acaso, escolhendo através do código-fonte antigo onde o que eles querem alcançar parece já ter sido feito (mas não foi bem feito) e assim por diante. Francamente, eu detesto este tipo de abordagem. Eles nunca vão muito longe, muitas vezes têm de perguntar às pessoas, raramente aceitam conselhos e preferem continuar assim para sempre, ao que parece.
Apenas tutoriais?
As pessoas procuram frequentemente no Google tutoriais ou snippets de código, incluindo SO, Sem alguma vez se referirem a documentação, irritam-me sem fim. Este comportamento é uma grande armadilha, na minha opinião. Conduz a uma espécie de programação alimentada por “conhecimentos” pouco rigorosos, arbitrários e não-sistemáticos. Esses programadores tendem a acabar com muitos preconceitos. É daqui que provêm pepitas como “nunca usar git rebase
”, “nunca usar not in
em SQL”, “sempre fazer XXX”, “nunca fazer YYYY”. Eles vão ter muita dificuldade em pensar fora da caixa, inventar novas ideias, formar intuição sobre como estruturar as suas aplicações e tudo aquilo que compõe os grandes programadores.
Eu gostaria de vos exortar a resolver qualquer problema primeiro, olhando para a documentação/referência, e então procurar SO ou outros snippets.
Claro que existem excepções. Se o seu problema for algo como um bug, ou algo muito, muito, muito, muito especial que é pouco provável que seja tratado em qualquer tipo de documentação (por exemplo uma combinação especial de bibliotecas/módulos, etc.), então vá directamente para SO.
Se é algo que pode ser facilmente descoberto pela documentação/API, então eu sugeriria que se sentasse e trabalhasse nessa parte específica da sua linguagem de programação/bibliotecas, etc. para que os seus conhecimentos fiquem mais apertados.
Documentação
O melhor tipo, para mim, é um programador que, quando se depara com um novo tópico, leva algum tempo para realmente se sentar, escavar, ter uma boa visão geral e uma boa compreensão técnica. Isto é conseguido na maioria das vezes (mais uma vez, pela minha experiência, com as muitas linguagens de programação com que tive contacto) através da leitura da boa documentação antiga incluindo referências API e assim por diante. Isto, na minha opinião, nunca pode ser substituído por outra coisa.
Não acho estranho ler, por exemplo, os velhos clássicos do C++ (bom e velho papel), o Gang of Four Design Patterns, o (versão online do) manual “Programming Ruby”, as manpages do Perl extremamente bem feitas, o livro Git, certos RFCs, as especificações HTML/XML/etc. e assim por diante, da frente para trás. Eu faria e teria feito isso mesmo no meu tempo livre e, francamente, esperaria isso de qualquer programador que valesse a pena (dependendo com o que estão a trabalhar, obviamente). Também tenho plena consciência de que estou (pelo menos nas empresas em que trabalhei, nas últimas décadas) completamente só com esta opinião.
(N.B.: Obviamente não é necessário memorizar listas enormes de referências API, mas pelo menos ignorá-las para ver o que está disponível e o que o “espírito” da API parece ser. )
Depois de estar completamente confortável com o tópico, then é o momento de olhar para o código de terceiros para inspiração, ou de olhar para perguntas mais antigas de SO (ou fazer novas perguntas você mesmo).
Você também pode descobrir que quando você absorveu um campo como este, fica muito fácil de encontrar respostas, fazendo zoom diretamente na carne de onde quer que você obtenha a sua documentação (páginas de homem, etc.). Neste ponto, o auto-completar do seu editor também pode já ser suficiente. E pode muito bem saber muito em breve quando algo não é possível com a ferramenta com a qual está a trabalhar, poupando muita pesquisa inútil.