terça-feira, 27 de maio de 2008

Tabajara TI

Trabalho na área de informática há muitos anos. No entanto, nunca trabalhei de verdade com desenvolvimento comercial. A minha desilusão nasceu com o tipo de trabalho que um programador, aqui no Brasil, mais faz: software de gestão empresarial. A capacidade criativa que o brasileiro desenvolveu nesse tipo de desenvolvimento causa inveja em diversos países do mundo. Isso é bacana.


Esse tipo de desenvolvimento nunca foi meu preferido mas eu devo admitir que sempre foi o que fizemos de melhor.

Mas de um tempo para cá eu venho notado que as empresas de desenvolvimento de software estão procurando buscar modelos de desenvolvimento de software vindos de fora. Opa! Se esse é o tipo de coisa que sempre fizemos bem aqui não deveríamos estar exportando?

O modelo de empresa de desenvolvimento que me deixa mais horrorizado é o triunvirato formado por engenharia-de-software, fábrica-de-software, STLs (sigla-de-três-letras como CMM, RUP e PMI).

Quando eu estudava Processamento de Dados na escola tecnica federal de goiás, há vários anos, eu tinha vários amigos que estudavam ‘Edificações’ que forma profissionais preparados para auxiliar os Engenheiros Civis. Alguns alunos amigos meus eram tão bons em seus trabalhos que os engenheiros somente ‘assinavam’ os projetos feitos por eles.

Se nessa época a minha visão-além-do-alcance me mostrasse o que está acontecendo hoje eu iria estudar Edificações e não mais Processamento de Dados. Estou esperando o dia que vão surgir os decoradores de sistemas, afinal, os engenheiros de software e arquitetos de software já existem.

Esse triunvirato parte da premissa de que software é algo criado em cima de padrões, normas e requisitos e esquecem de que essas três coisas produzem software mas nunca irão produzir software fantástico. O que diferencia um software de um software fantástico é o ‘toque de genialidade’ dos desenvolvedores. É aquela modificação elegante no código que o torna mais eficiente. É aquela idéia simples que torna o sistema mais robusto. É aquele momento de inspiração que faz surgir um excelente software. É aquela fuga do padrão, da norma, e até mesmo do requisito que fazem um software virar um software fantástico.

Os softwares de gestão brasileiros são (eram?) fantásticos por essa razão. Antes as normas eram menos rígidas, os padrões menos abrangentes e os requisitos quase sempre eram desconhecidos. Sei que muito software ruim foi produzido naquela época mas tolher a criatividade não deve ser a solução para esse problema. Que solução então? Seleção natural. É isso. Software ruim ‘morre’ com o passar do tempo. Software que nasce ruim mas melhora com o passar do tempo sobrevive.

Para resumir, o desenvolvimento de software é, em minha opinião, muito mais uma atividade criativa do que simplesmente aplicar técnicas, regras, normas em cima de um teclado de computador.

Minha forma de pensar leva à uma outra questão importante a ser ponderada: Programador sem criatividade deve mudar de profissão? Sim e não.

Se ele está nessa área porque disseram para ele que “programador é a profissão do futuro” sim. Todas as pessoas devem fazer o que gostam e não o que disseram para ela fazer. Trabalhar com algo que não te inspira cria pessoas tristes. E não vale falar que vai continuar programando porque ‘não agrada nem desagrada’, tem que gostar mesmo de trabalhar.

Mas se esse programador ‘não-criativo’ realmente tiver paixão pela profissão que vai exercer o problema de criatividade dele pode ser solucionado.

“Moço! Me vê 2kg de criatividade?”

As pessoas acham que um ‘insight criativo’ é o resultado de um sopro de pó de pirlim-pim-pim que a Fada Sininho jogou na gente. Isso não é totalmente verdade (exceto talvez pela fada).

Os ‘insights criativos’ são criados pelo nosso cérebro o tempo todo (em momentos randômicos). O nosso cérebro então coleta uma série de informações dos nossos ‘bancos de memórias’ de acesso rápido (informações), acesso lento (conhecimento) e do disco (lembranças), bate tudo por uns minutos no liquidificador e joga no ‘pipeline’ de coisas em processamento. O resultado dessa mistura, se for bom, será aproveitado, caso contrário será descartado imediatamente.

Com essa explicação podemos perceber que uma série de fatores aleatórios que determinam se você terá um ‘insight criativo’.

Quando você vai apostar na mega-sena (ou outro jogo desse tipo) você sabe que quanto mais números você marcar no canhoto de apostas maiores serão as suas chances de ganhar o prêmio. O mesmo acontece com nosso cérebro. Quanto mais informação, conhecimento e lembranças a gente tiver para que o nosso cérebro trabalhe maiores são as nossas chances de ter uma idéia legal.

E é aí que entra o fator ‘paixão’ pela profissão. Se você for apaixonado pelo que faz será mais fácil para você ler um livro sobre o assunto, fazer um treinamento, prestar atenção às informações relacionadas ao teu trabalho e assim por diante.

É claro que existem alguns programadores que são absurdamente geniais e criativos, mas eles são uma exceção (boa) e não são reproduzíveis em laboratório.

Tem que ter técnica!

Dizer que o importante é ser criativo não pode levar ninguém a concluir que a técnica é dispensável. Não é mesmo. A técnica é tão importante quanto a criatividade. Ambas devem ser desenvolvidas por igual e nutridas da mesma maneira. A técnica fornece elementos para que a loteria criativa do cérebro crie coisas legais que, através da técnica irão virar realidade; um ciclo fechado.

Não pense que Da Vinci usou só de criatividade para pintar a Monalisa. Se ele não tivesse conhecimento de sombras, luzes, cores, anatomia, etc. certamente ele não teria criado essa obra de arte.