A Catedral e o Bazar

Um livro bacana que te ajuda ser um programador melhor

Eu gosto de metáforas. Acho interessante a forma como uma boa história pode ensinar coisas mais complexas e como isso facilita a transmissão de ensinamentos. Na verdade se formos analisar os grandes mestres que o mundo já teve sempre ensinavam através de histórias, analogias de coisas comuns para transmitir conhecimento.

Não me lembro ao certo como conheci Eric Raymond. Talvez tenha sido quando me envolvi com Linux e comecei a pesquisar muita coisa sobre a parte técnica e a filosofia do software livre. Dessa forma que acabei conhecendo o livro The Art of Unix Programming. Conhecer a regra da modularidade, da clareza, da simplicidade, etc me ajudou a me tornar um programador melhor mesmo não desenvolvendo diretamente para Unix ou Linux na época.

Também foi nesse livro que conheci os Koans do Mestre Foo. Coincidiu de na época eu estar lendo a respeito dos Koans Zen-budistas e achei fantástico a forma como ele escreveu as historietas do Mestre Foo. O Koan é uma forma de história onde não se pode interpretar/entender o significado somente com a razão. Na verdade não fica tão explícita a ideia em um koan da mesma forma que acontece com as parábolas, por exemplo. Tá, para você entender (ou não entender), esse é um koan:

“Batendo as duas mãos uma na outra, temos um som; qual é o som de uma mão somente?”

Caso você ainda não tenha lido os koans do Mestre Foo, aqui tem quatro deles traduzidos para português. Eu gosto bastante do “Mestre Foo discorre sobre a Interface Gráfica do Usuário”.

A Catedral e o Bazar é um ensaio escrito por Eric Raymond onde ele descreve a diferença entre software livre e software proprietário através da experiência que ele teve na criação de um software de código aberto chamado Fetchmail. A propósito, o livro está disponível gratuitamente e você pode obter uma cópia dele já traduzido para português no site Domínio Público.

A analogia do título vem da comparação que o autor faz entre software proprietário e software livre, sendo o software proprietário/comercial visto como uma catedral de forma imperiosa, incontestável, altiva e do outro lado temos o desenvolvimento bazar. Uma forma legal de você pensar em um bazar são as feiras da idade média onde as pessoas falavam alto, havia trocas, e no meio daquele suposto “caos” havia ordem. Imagine isso em uma comunidade de software livre onde ao invés de termos toda uma metodologia lógica, formal a ser seguida (catedral) temos centenas (e até milhares) de desenvolvedores de diferentes lugares do mundo buscando conversar com o objetivo de ter o software funcionando.

Release early, release often

Outra filosofia bastante difundida por este livro é “Libere cedo, libere frequentemente” onde ele comenta da necessidade de liberação frequente de releases do software para que sejam testados o quanto antes. Isso enfatiza sem dúvida um maior envolvimento entre desenvolvedores, analistas de testes e até mesmo usuários. Se temos versões incrementais menores sempre com envolvimento dos usuários estes irão apontar erros e falhas bem no início do desenvolvimento e acarretará em um menor impacto na correção destas.

Raymnond comenta ainda que “Tratar seus usuários como codesenvolvedores é seu caminho mais fácil para uma melhora do código e depuração eficaz” e dessa forma ao termos versões liberadas cedo e envolvendo os usuários nos protótipos de telas por exemplo faz com que diminuamos a distância da expectativa do usuário com a realidade do software desenvolvido.

Você percebe aí a essência de metodologia ágil? Será que nós enquanto desenvolvedores devemos nos manter em uma sala fechada apenas seguindo o que foi descrito em uma especificação? E se pudéssemos aumentar o envolvimento do usuário e o compromisso deste levando-o a acompanhar as evoluções em uma base semanal ou a cada 3 dias de desenvolvimento? Talvez isso implicaria ainda em termos um compromisso de “desenvolver alguma coisa legal pois tenho que ter algo pra mostrar amanhã para o usuário”. Não que isso dispensaria a especificação e as etapas formais de um desenvolvimento mas talvez dessa maneira possamos trazer o cliente do projeto como um aliado em todo processo.

A metáfora da catedral e o bazar é uma forma interessante de comparar software proprietário com software de código aberto mas nada impede que você que não é um desenvolvedor de software livre aproveite e adapte as lições deste livro.

Acredito que é possível melhorarmos a qualidade do software entregue e diminuir a distância entre o que é esperado com o que foi construído ao seguir alguns preceitos de Raymond. Leia hoje a Catedral e o Bazar, texto curto, pois irá te ajudar a se tornar um profissional e programador melhor.