Mudei tudo por que achei que estava muito feio
Inúmeras vezes ouvi esta frase para em seguida me questionar: o que é ser bonito? Em 2004 meu plano de vida era fazer mestrado na área de Estética (Filosofia, não Cosmética). Foi uma decisão que não se concretizou, mas o problema fundamental – a essência do belo – nunca me abandonou. Este é mais um daqueles posts nos quais penso o modo como usamos as palavras. :)
Código é arte ou apenas desejamos que seja?
Quando uso termos como “belo” ou “feio” falamos sobre o que agrada ou não. O que é o (des)agradável? Esta é a questão fundamental da Estética, e há uma área de imensa subjetividade neste território: como o assunto é software, uma armadilha se arma diante de nós.
O que é arte? Quando a questão estética emerge a primeira coisa que pensamos é em arte pois é a maneira mais direta em que a questão estética se manifesta. Pensamos em pinturas, esculturas, filmes, poemas, músicas… No livro “Arte é o que eu e você chamamos Arte” do Frederico Morais há 801 definições para o termo “Arte”. Com tantas definições, podemos pensar em alguns aspectos que sempre aparecem:
- Há a criação de um produto: pintura, escultura, música… código?
- Há uma atividade artesanal.
- Há criatividade de alguma forma (bastante polêmico este ponto)
- Há uma pessoa que gera o produto, o “artista”
E ao pensarmos no artista, nos vêm diversas imagens à cabeça: um pintor, escultor, músico, cantor, ator, escritor e tantas outras atividades que pensamos estar diretamente relacionadas à criação. São aquelas pessoas que acabam se tornando de uma forma ou outra nossos ídolos. Talvez por isto haja este esforço em tentar aproximar código de arte: queremos ser ídolos também.
Esta visão do artista, no entanto, é preponderantemente a que temos formada no século XX (e final do XIX). Dado que há um trabalho artesanal, há um outro tipo de artista que poucas vezes vejo ser mencionado: o relojoeiro (ou engenheiro, mas vou focar no relojoeiro). Este, para mim, é aquele que mais se aproxima do programador/desenvolvedor (ou o nome da moda que você quiser).
A imagem do relojoeiro não soa excitante o suficiente para muitos, talvez por isto não se fale tanto a seu respeito como um artista, mas gosto dela pois me trás aquilo que agrada tanto quem compra meu software como quem o manipula: o objeto complexo, artesanal, preciso, difícil de ser feito e que requer paciência infinita. A mesma coisa se aplica à pintura, mas com uma diferença: o relógio precisa atender à risca o requisito de mostrar o tempo com precisão. Há subjetividade, mas o aspecto objetivo grita mais.
(o aspecto pintor é também fundamental. Recomendo a leitura do texto Hackers and Painters de Paul Graham : http://www.paulgraham.com/hpt html)
Aqui está como tornar a coisa um pouco mais excitante para vocês: já ouviu falar em Jaquet Droz? No vídeo abaixo você pode ver um dos seus trabalhos. Mais de 6000 partes interagindo entre si, programaticamente, em 1774. Muito similar ao que você faz hoje com seu código.
Então, sim: há um aspecto artístico no código. É uma atividade criativa (com limitações que falarei a seguir), há um produto (o software), é artesanal (sempre é diferente) e uma pessoa, o “artista” está por trás daquela criação. Mas o que torna o código belo?
O que torna o código belo?
Após anos lendo sobre Estética fica claro para mim o que é belo (sou arrogante). Segue a definição Kiconiana Espartana de belo:
Belo é aquilo que atende a um ou mais requisitos de alguém e com isto o agrada.
Ok, então qual a definição Kiconiana de código bonito?
Código bonito é aquele que funciona e sua equipe consegue entender
O requisito a ser atendido é funcionar: quando faz exatamente aquilo que foi proposto. Neste ponto o código é quase bonito. Se funcionar consumindo o mínimo de recursos computacionais e executando da forma mais rápida possível sem incluir bugs, tá bonitinho (feio arrumadinho).
O alguém é sua equipe. A coisa vai ser bonita mesmo apenas quando sua equipe (não só você) conseguir entender claramente o funcionamento da sua criatura. Aqui entra o limite criativo do código: se for inteligível por apenas um, estamos lidando com um risco, e não um produto. Risco por que você não terá outra pessoa capaz de evoluir aquele objeto com a saída do seu criador.
Se houver uma discussão em sua equipe do tipo: “olha: eu faço de uma maneira e você de outra, gosto não se discute”, já sabe: a situação foi pro pior lado possível do problema estético que é o estritamente subjetivo. Seu objetivo que é criar um objeto com finalidade bem definida se perdeu, e seu código, por mais belo que cada tolo acredite ser, para o resto da equipe não passa de uma horrorosa aberração.
Sendo assim, você só pode dizer que “mudou a coisa toda por que tava achando muito feia” quando os requisitos acima tiverem sido satisfeitos. Na realidade, você sequer pode dizer “eu acho”, pois o bom profissional (de software) não “acha”, ele é pago para oferecer seu parecer técnico e soluções acerca dos problemas que enfrenta.
PS: dicas de leitura
Este assunto é um ramo extenso da Estética: a “beleza das máquinas”. Você vai encontrar muitos livros bacanas a respeito, mas neste post vou indicar apenas dois.
“A Beleza das Máquinas” de David Gelernter: é sobre de que maneira o conceito de belo se manifesta em produtos industrais. Você irá ver exemplos que vão do telefone ao desktop do Macintosh. Leitura excelente.
“Cultura da Interface”, de Steven Johnson: uma leitura excelente sobre o modo como elementos culturais e estéticos se manifestam na interface dos sistemas que usamos.
Deixe uma resposta