Ao trabalhar no código, enfrento muitos dos mesmos desafios que meus colegas de equipe, e escrevi algumas funções e classes úteis, e eles também. Se houver uma boa comunicação, ouvirei falar de algo maravilhoso que alguém montou e, seis meses depois, quando precisar, talvez me lembre e chame essa função, economizando tempo. Se não me lembro, ou nunca soube, provavelmente reinventarei a roda.
Existe uma prática específica de documentar esse tipo de coisa? Como você os torna fáceis de encontrar?
Se sua equipe não possui essa documentação, como descobrir se sua roda já existe?
EDITAR:
Todas, exceto uma das respostas até agora, tratam de uma situação ideal, então deixe-me resumir essas soluções: documentação e comunicação; wikis, reuniões stand-up, etc. Tudo isso é ótimo, mas eles dependem de programadores que têm tempo (e habilidades) para escrever a documentação e participar das reuniões, tomar notas e lembrar de tudo.
A resposta mais popular até agora (de Caleb) é a única que poderia ser usada por um programador que é incapaz de documentação e reuniões, e faz apenas uma coisa: programação. Programar é o que um programador faz, e sim, um ótimo programador pode escrever documentação, testes de unidade, etc., mas vamos ser sinceros - a maioria de nós prefere programar a documentar. Sua solução é aquela em que o programador reconhece código reutilizável e o extrai para sua própria classe ou repositório ou qualquer outra coisa, e pelo fato de ser isolado, torna-se acessível e facilita a curva de aprendizado para usá-lo ... e isso foi realizado pela programação.
De certa forma, vejo assim: acabei de escrever três funções, e me ocorre que alguém deveria saber sobre elas. Eu poderia documentá-los, escrevê-los, anunciá-los em uma reunião etc. - o que posso fazer, mas não é a minha força - ou ... Posso extraí-los para uma classe, dar um nome a ele, fazê-los funcionar como uma caixa preta e cole-a onde os outros arquivos de classe vão. Em seguida, um breve email anunciando que é fácil. Outros desenvolvedores podem escanear o código e entendê-lo melhor do que uma função isolada usada em código que não entendem completamente - esse contexto é removido.
Eu gosto disso porque significa que ter um conjunto de arquivos de classe bem nomeados, com métodos bem nomeados, é uma boa solução que é realizada por uma boa programação. Não requer reuniões e suaviza a necessidade de documentação detalhada.
Existem mais idéias nesse sentido ... para desenvolvedores isolados e pressionados pelo tempo?