quinta-feira, 27 de fevereiro de 2014

Elegância: uma qualidade em falta no código e nas pessoas


Há algum tempo li uma discussão sobre "código elegante" em algum canto da Internet. A querela contrapunha código "que funciona" contra código "bonito". Como se fazer código "bonito" fosse modinha: o importante mesmo é fazer rodar.

Primeiramente gostaria de deixar claro que todo software é criado com um propósito de valor. Se não cumpre o seu propósito - seja porque é mal feito e não gera o valor esperado ou porque não funciona - nem deveria ser chamado de software. Deveria ser crapware ou qualquer outra coisa parecida.

Definição de elegância segundo a Wikipedia:
"Elegance is a synonym for beautiful that has come to acquire the additional connotations of unusual effectiveness and simplicity." (http://en.wikipedia.org/wiki/Elegance)
 Traduzindo literalmente:
"Elegância é um sinônimo para beleza que adquiriu as conotações adicionais de incomum eficácia e simplicidade."
Código elegante então seria algo belo (bonito - agradável ao programador, legível e fácil de entender, coeso etc), eficaz (faz o que se espera dele) e simples (com um mínimo gera um máximo de resultado). Se o nosso objetivo de vida como profissionais de software - como artesãos de software - não for produzir código elegante, então não sei mais o que é.

Além de código elegante, falta-nos a elegância de agir como profissionais:
  • Não é elegante entregar algo que não funciona.
  • Não é elegante atrasar um compromisso.
  • Não é elegante prometer algo que não vai ser cumprido.
  • Não é elegante criar expectativas de prazo falsas.
  • Não é elegante entregar menos do que foi combinado.
  • Não é elegante fazer menos do que o seu melhor possível. 

Entregar código elegante e ser um profissional elegante então não são opções. Fazê-lo e sê-lo são simplesmente questões de ética.