1 de maio de 2010

Você ama seu código?

Algum tempo atrás, numa das comunidades de programação que participo, alguém pediu "ajuda" para resolver um problema com matrizes. Era, provavelmente, um iniciante querendo uma solução fácil para um trabalho de faculdade. Não era algo complexo, mas se tratava de um desafio interessante. Naquele mesmo dia, à noite, implementei uma solução para o problema. Fiquei feliz por ajudar o aspirante a programador, mas confesso que o amor ao próximo não foi o único motivador da minha ajuda.

Acredito que algo semelhante aconteça com muitos dos talentosos programadores que apóiam produtos open source. Não creio que seja apenas o interesse em contribuir com a liberdade de usar, estudar, modificar e distribuir software[1] o que os motiva a trabalhar em prol de algo que não lhes dará retorno financeiro direto. Concordo com Mårten Mickos, ex-CEO da empresa que criou o MySQL, que cita[2] o desejo de "construir uma reputação" como um dos maiores motivadores. Como essa reputação é construída? Escrevendo código útil e de qualidade. Eles amam programar, amam o código que escrevem e amam a reputação que isso lhes dá.

Acho que a maioria dos programadores não ama seu código. Se amassem não escreveriam código de tão má qualidade. Ou será que amam seu código, mas simplesmente não se dão conta de que escrevem código ruim?

Quando preciso fazer manutenção em algum código escrito por outro programador, é inevitável fazer algumas suposições sobre esse programador. Dois exemplos comuns são:

  • Não é prático: criou uma solução extremamente complexa sem necessidade;
  • É desleixado: a organização do código é terrível e nada recebeu um nome adequado (variáveis, classes, funções etc).

Por causa dessas suposições alheias que faço, ao codificar a solução de algum problema em software, sempre penso no que meu código dirá a meu respeito. Isso me motiva a fazer um bom trabalho. Por acreditar que bons programadores terão uma impressão positiva a meu respeito ao olhar o código que escrevo, eu amo meu código.

É claro que escrever código de qualidade é um desafio quando o prazo é curto e a pressão é grande, mas isso é papo para outra thread.

A propósito, aqui está o problema e a solução (em Pascal) que citei no início.

E você, ama seu código?

[1] ^ Open Source Initiative. "The Open Source Definition"

[2] ^ MIT Sloan Management Review. "The Oh-So-Practical Magic of Open-Source Innovation"

12 comentários:

Pierre Abreu disse...

creio que mais do que reputação, as pessoas que escrevem bom código, escrevem pela satisfação de terem feito um bom trabalho, ficam contente ao verem que aquilo que foi feito, foi feito por elas. Creio que satisfação pessoal+reputação é o que realmente faz diferença

Dirlei Dionísio disse...

Certamente @xsinistro, a satisfação pessoal também é um importante motivador nos programadores que fazem software de qualidade.

Valmir disse...

Quando fazemos um bom trabalho, além de ficarmos bem conosco, temos uma maior chance de sermos elogiados. Isso realmente é uma ótima massagem no ego. E que é que não gosta de massagens?

Dirlei Dionísio disse...

É verdade, Valmir. E o elogiado ganha uma reputação pela qual se esforçará para zelar. Acaba se criando um círculo vicioso: um bom trabalho resulta em elogios que resultam num bom trabalho.

Blogildo disse...

Depois que alguém pega o seu código - limpo, claro, estruturado - e o 'detona' digamos que o amor fica um tanto relativizado.

Dirlei Dionísio disse...

Ainda bem que hoje existem os Sistemas de Controle de Versão. Assim dá pra identificar o dono do código "trigo" e o do código "joio".

Às vezes preciso voltar a trabalhar num projeto antigo implementado por mim. Quando vejo um código ruim, fico pensando onde estava com a cabeça para escrever aquilo. É um alívio quando olho o histórico do arquivo e vejo que o código ruim foi feito por outra pessoa.

Unknown disse...

Pq parou? parou pq? continua postando artigos pois vc começou muito bem, quero ver mais.

Dirlei Dionísio disse...

Muito obrigado pelo incentivo, Gilmar! Não parei de escrever não, no próximo sábado publicarei um novo artigo. Grande abraço!

Daniel Bruno disse...

Programar, na minha opinião, é um prazer indescritível.
Aos 12 anos, quando vi meu primeiro "Hello world!" aparecer na tela do xterm, foi paixão instantânea.
Assim como, ainda na mesma idade, quando fiz um conjunto de LEDs ligados à porta paralela piscarem a partir de um código em C.

A empolgação ao ver rodar meu primeiro "Space Invaders" em C++...

Não sei explicar. A programação me guia por todos os sentimentos possíveis. Desde o prazer e orgulho de ver aquele código compilar e rodar sem erros na primeira tentativa, ao desespero de passar horas a fio debuggando e procurando erros.

Creio que fascínio seja a melhor forma de descrever meu sentimento pela programação.

Eu posso afirmar, com 110% de certeza, que amo meu código. hehehe.

[completamente off topic:]
Saudade da época em que internet era só discada e aos fins de semana (Sábado depois da meia noite e domingo o dia todo, quando só se cobrava o primeiro pulso. Hahaha.). Acho que passávamos muito mais tempo perplexos tentando compreender como aquela máquina alienígena cheia de ícones coloridos funcionava do que nos últimos anos, onde tentamos compreender quando a "gostosa peituda" adicionou aquela nova foto no orkut.

Dirlei Dionísio disse...

Foi um belo começo de carreira, Daniel! Legal mesmo! E deu pra perceber, pelas suas palavras, o quanto você gosta de programar. É desse "brilho nos olhos" ao falar sobre as próprias façanhas, que sinto falta quando entrevisto candidatos a programador. É raro encontrar alguém apaixonado por fazer software. Por isso, acho muito legal quando leio comentários "apaixonados" como o seu...

Grande abraço!

Anônimo disse...

Olá, achei a versão pascal bem implementada, como não a conheço muito, e para aumentar meus conhecimentos em python eu fiz uma versão python
https://gist.github.com/709126

Dirlei Dionísio disse...

Bacana a sua iniciativa de fazer uma versão em Python. Ficou claro que em Python é preciso escrever bem menos código do que em Pascal; sua versão ficou com cerca de metade do número de linhas da minha! :o)

Obrigado pela visita e volte sempre!