Dois Olhos, Dez Dedos

Há uma máxima que diz: Não é à toa que temos dois ouvidos e uma boca: devemos ouvir mais e falar menos. Essa proporção talvez explique a compulsão que programadores têm por escrever códigos ao invés de procurarem códigos prontos que atendam às suas necessidades.

Precisamos de um programa para gerenciamento de conteúdo. O que muitos de nós fazem? Começam a escrever um. Em grande parte por isso, repositórios e diretórios de projetos de Software Livre estão inundados de infindos programas que se propõem a fazer as mesmas coisas.

Claro, cada um coloca um pouco do seu próprio jeito de fazer as coisas. E isso é interessante, mas na maioria das vezes fica claro que as necessidades do projeto poderiam ser atendidas apoiando outro projeto. E digo isso por experiência pessoal também.

Quer um exemplo claro do que digo? Pesquise no freshmeat por blog e veja quantos "simple blog system" aparecem feitos em PHP. E quantas bibliotecas existem para PHP? Quantos frameworks? E quantas dessas bibliotecas servem para se fazer o que poderia ser feito com similar desempenho com o PHP Pear?

Não quero dizer com isso que não devamos iniciar a criação de um software quando já existirem alternativas. Mas não devemos ter preguiça de pesquisar e entender os softwares existentes antes de iniciarmos um novo projeto. Devemos encarar isso como um trabalho acadêmico: o software como resultado de uma pesquisa. Assim poderemos colocar em prática a segunda lição de Raymond:

Os programadores bons sabem o que escrever. Os grandes sabem o que rescrever (e reusar).

Talvez a explosão de código para mesmo fim, no caso do PHP, tenha influência na chegada de muitos profissionais de outras áreas à programação pelo PHP. Não que isso deva ser considerado algo negativo. Tal chegada foi uma das grandes responsáveis pelo sucesso do PHP e, por consegüinte, do Software Livre na web (o time LAMP). Mas se reusabilidade de código já é algo difícil na área imagine para quem vem de fora...

Quando então faremos softwares novos? Quando quisermos alguma característica que os pré-existentes não tenham. Hmmm... Dependendo da forma como os pré-existentes são feitos também, claro. Para muitos CMSs e alguns blogs, por exemplo, é possível criar um módulo que adiciona uma característica desejada. Por que reinventar a roda se podemos, com menos esforço de codificação (e mais de leitura e análise), melhorar um software já existente? Ao invés de termos dois softwares nota 6, teríamos um só com nota 6,4 ou 6,7. Não vale mais?

E mesmo com todo Zope, com todo Plone, com todo Rails, com todo Ruby, o PHP vai levando...

Avalie: 
No votes yet

Comentar


Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library '/opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll' - /opt/php56/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_odbc.dll: cannot open shared object file: No such file or directory in Unknown on line 0