Readme Driven Development
01/06/2012
Esta é tradução de Readme Driven Development.
Eu tenho ouvido muita conversa ultimamente sobre TDD e BDD e Extreme Programming e SCRUM e stand up meetings e todos os tipos de metodologias e técnicas para desenvolver software melhor, mas isso tudo é irrelevante, a menos que o software que estamos construindo atenda às necessidades daqueles que estão usando. Deixe-me explicar de outra maneira. A implementação perfeita de uma específicação errada é inútil. Pelo mesmo princípio que uma biblioteca magnificamente desenvolvida sem documentação também é praticamente inútil. Se o seu software resolve o problema errado ou ninguém consegue descobrir como usá-lo, há algo muito ruim acontecendo.
Certo. Então como nós resolvemos este problema? É mais fácil do que você pensa, e é suficientemente importante para justificar seu próprio parágrafo.
Escreva seu Leia-me primeiro.
Primeiro. Como antes de você escrever qualquer código ou testes ou melhorias, ou estórias ou QUALQUER COISA. Eu sei, eu sei, nós somos programadores, porra, não escritores técnicos! Mas é aí que você está errado. Escrever um Leia-me é absolutamente essencial para escrever um ótimo software. Até você escrever sobre seu software, você não tem idéia sobre o que irá codificar. Entre A Grande Reação Sobre Waterfall Design e A Suprema Aceitação do Desenvolvimento Ágil, algo é perdido. Não me engane, waterfall design faz as coisas ficarem distantes. A grande e minimamente detalhada específicação de sistemas acabam sendo a minimamente detalhada específicação de sistemas ERRADA. Estávamos certos em derrubar isso. Mas o que tomou o seu lugar é longe demais em contrapartida. Agora temos projetos com curta, mal escrita, ou faltando documentação. Alguns projetos não têm sequer um Leia-me!
Isto não é aceitavel. Deve haver algum meio termo entre especificações técnicas básicas e especificações sobre tudo. E na verdade existe. Esse meio termo é o humilde Leia-me.
Isto é importante para distinguir Readme Driven Development do Documentation Driven Development. RDD deve ser considerado um subtipo ou versão limitada do DDD. Ao restringir a documentação do projeto em um único arquivo que se destina a ser lido como uma introdução para o seu software, o RDD mantém você seguro da síndrome DDD-waterfall, de bani-lo de uma especificação longa ou intrínseca. Ao mesmo tempo, ele o recompensa por manter as bibliotecas pequenas e modularizadas. Este simples esforço acompanha-o por um longo caminho conduzindo seu projeto na direção certa, sem um monte de processos para garantir que você faça a coisa certa.
Antes de escrever seu Leia-me primeiro reconheça algumas boas e significativas vantagens:
- Mais importante, você deve se dar a chance de pensar sobre o projeto sem o overhead de ter que mudar o código toda vez que você mudar de idéia sobre como alguma coisa deveria estar organizada ou o que deveria ser incluído na API pública. Lembre-se o que você sente quando você começa a escrever testes automatizados de código e percebe que você pegou todos os tipos de erros que teriam escapado em sua base de código.
- Como um subproduto de escrever o Leia-me você saberá o que precisa implementar, você terá uma grande parte da documentação na sua frente. Você também vai descobrir que é muito mais fácil para escrever este documento no início do projeto quando o seu entusiasmo e motivação são as mais elevadas. Retroativamente escrevendo o Leia-me é uma draga absoluta, e você está certo de quando perder todos os tipos de detalhes importantes quando você faz isso.
- Se você está trabalhando com uma equipe de desenvolvedores você deve incorporá-los em seu Leia-me. Se todo mundo na equipe tem acesso a essa informação antes de ter concluído o projeto, então eles podem confiantemente começar o trabalho com outros projetos que irão interagir com seu código. Sem qualquer tipo de integração, você tem que codificar serialmente ou reimplementar grandes partes de código.
- É muito simples ter uma discussão baseada em algo escrito. É fácil falar sem parar e em círculos sobre um problema, sem ter nada escrito. O simples ato de escrever uma proposta de solução significa que todos tem uma idéia concreta de que se pode argumentar sobre e reiterar.
Considere o processo de escrever o Leia-me para seus projetos como um verdadeiro ato de criação. Isto é aonde todas suas idéias brilhantes devem ser expressadas. Este documento deve falar por si só como um testamento para a sua criatividade e expressividade. O Leia-me deve ser o único e mais importante documento em sua base de código; escreve-lo primeiro é a coisa certa a fazer.