Na semana passada me encontrei com alguns amigos desenvolvedores, alguns das antigas, outros não, que sempre soltam as mesmas “chorumelas” em conversas sobre trabalho e coisas do dia dia. No assunto aparece o “absurdo” que o colega programador do trampo fez no projeto e todo mundo se diverte falando da feiura do código alheio (eu também, claro).
Existem de fato soluções feias, e não é errado falar que o trabalho de alguém ficou feio. As vezes fica. Essa coisa de código feio existe mesmo. Não acho que seja só um jeito de falar ou uma força de expressão.
É por esse motivo que nós programadores, devíamos entender mais sobre a beleza da tecnologia. Especificamente, do software.
A relativização da beleza
O conceito de beleza é entendido por muita gente como algo relativo. Algo que depende da formação social do observador para ser notada.
Vejamos a definição de beleza:
Algo agradável que caracteriza formosura ou uma coisa bela. Característica ou um conjunto de características que são agradáveis à vista e que são capazes de cativar o observador.
Então não se pode provar que algo é belo ou não, certo? Mais ou menos. O que se pode fazer na verdade, é apontar alguns indícios reveladores de simplicidade e eficiência.
David Gelernter em seu livro A Beleza das Máquinas (leitura sensacional diga-se de passagem), diz que “a beleza da ciência, como a beleza de todas outras coisas, pertence a qualquer pessoa que a observe o suficiente para notá-la)”.
Software é algo intangível e extremamente complexo. Muito da complexidade encontrada nos softwares que construímos, se deve ao fato de que estamos sempre preocupados em desenvolver pequenas partes reutilizáveis, e não estruturas inteiras que possam ser reaproveitadas e facilmente evoluídas.
Produtos tecnológicos de sucesso são simples, diretos e por isso são belos. Vide Macintosh de 1984 com a versão 3.6 do Mac OS. Essa beleza, não relativa mas absoluta, é o melhor remédio contra a complexidade.
Bons programadores tem bom gosto estético
Por mais estranho que possa parecer à primeira vista, a questão da complexidade em software é algo que diz respeito à estética. A maior parte dos problemas relacionados a complexidade no mundo do software são resolvidos por bons programadores. O que os torna capazes de resolver tais problemas, não tem muito a ver com sua formação técnica, seu conhecimento de matemática ou engenharia, mas tem tudo a ver com bom gosto, talento estético e ousadia intelectual.
Lembro ter ouvido um amigo dizer que um bom programador pode ser facilmente, cem vezes melhor e mais produtivo que um programador apenas mediano, e concordo cem por cento com isso.
A sensibilidade ao que deve ser simples afim cumprir um objetivo de forma agradável, é um ótimo exemplo de característica de pessoas com esse tipo de talento. Saber criar software fazendo com que algo seja facilmente compreendido requer talento estético mais do que qualquer outra coisa.
Porquê será que bons programadores são tão raros? Em geral porque somos formados, na base da matemática: cálculo, estatística, álgebra, matemática computacional, etc. É óbvio que isso tudo é muito importante. Sem estudos na área da matemática não teríamos muita coisa. Graças ao vector space model e à similaridade de cossenos é possível que um motor de busca tão poderoso quanto o Google exista por exemplo. E por aí vai…
O ponto é que “a matemática é séria, a estética não”. Métodos matemáticos com avanços aqui e ali não transformam profissionais médios em programadores fantásticos. Não se adquire sensibilidade á beleza anotando equações fundamentais e tentando resolvê-las matematicamente, mesmo que isso tenha certa importância.
Não tem a ver com matemática
O Físico Richard Feynman, pioneiro da física quântica diz que qualquer pessoa que deseje analisar e resolver problemas reais, preferirá começar anotando equações e tentará resolvê-las matematicamente. Embora haja quem tente utilizar essa abordagem, essas pessoas causam os fracassos nos seus respectivos campos de atuação.
Os verdadeiros sucessos pertencem aos que começam de um ponto de vista físico, estético, pessoas que tem uma ideia do lugar para onde onde estão indo e começam a fazer os tipos adequados de aproximação. Isso tem pouco a ver com formalismo, e muito menos com aquela cara séria que atribuímos à ciência, e se aproxima muito mais, da Arte.