Construtores e Otimizadores

May 18th, 2007 § 5 comments

Em doze anos de profissão como programador e analista de sistemas, eu cheguei à conclusão que existem dois tipos de programadores: os construtores e os otimizadores. Em cima dessa constatação, eu também acredito que existam bem poucos que se encaixam nas duas categorias ao mesmo tempo.

De uma maneira geral, os construtores são revolucionários enquanto os otimizadores são evolucionários. Enquanto os primeiros abrem a arena para as soluções futuras, os outros é que as colocam em uma forma que realmente pode ser utilizada pela comunidade. Projetos em que só existem um dos dois tipos de programadores, por causa dessa divisão, estão fatalmente fadados ao insucesso.

O fato de que um programador se encaixa em uma categoria ou outra não é, obviamente, uma limitação. É claro que, mesmo que um programador específico seja melhor em termos de otimização, isso não significa que ele seja incapaz de desenhar soluções interessantes para seus problemas. É mais, eu penso, uma questão de afinidade e facilidade, do que de capacidade. A única diferença concreta, talvez, esteja na visibilidade: programadores responsáveis por tecnologias novas geralmente estão mais em evidência do que aqueles responsáveis por aperfeiçoá-las.

É difícil, por exemplo, em um projeto como o Rails ver imediatamente além do David Heinemeier Hansson, embora certamente muitas das decisões que fizeram do Rails o que ele é hoje não tenham partido dele, como os próprios changelogs de desenvolvimento atestam. O mesmo é válido, em maior ou menor medida, para Django, Linux, JBoss, e inúmeros outros projetos conhecidos.

O interessante é que tanto os construtores como otimizadores podem se tornar bons analistas: os primeiros geralmente tem uma visão mais clara do sistema como um todo, e são capazes de prover soluções generalizadas para os problemas iniciais enfrentados pelo sistema; em contrapartida, os segundos são melhores na elaboração dos detalhes mais finos dos processos, sendo capazes de identificar pontos de conflito e saturação e fornecer alternativas para problemas em longo prazo.

Entender a que categoria um programador pertence pode ajudá-lo a balancear as suas forças e suas fraquezas. Para gerentes, isso é especialmente interessante ao compor um equipe que encaixe os dois tipos de programadores para produtividade máxima. Para o programador, isso pode implicar, inclusive, em decisões sobre como investir em tecnologia.

De qualquer forma, seja qual for o projeto, as duas classes são necessárias para garantir qualidade de desenvolvimento e uso. Como já mencionado anteriormente, não é uma questão de limitação, mas de afinidade. E fica uma questão: seriam somente duas classes?

§ 5 Responses to Construtores e Otimizadores"

  • Witaro says:

    Além de computação curto algo de psicologia. Dá uma procurada em MBTI (google: geocities intpbr) e depois em “Tipos psicológicos Junguianos” (o filé), há até testes online para descobrir seu tipo. Eu sou INTP, alguém que se aproximaria do tipo “construtores” que vc definiu… Acho que pessoas com a função “intuição” desenvolvida gostam de criar principalmente por conta da facilidade em ver possibilidades…

  • Walter Cruz says:

    Lembra um pouco das minhas leituras sobre liderança onde se fala da diferença da liderança ou da administração.

    Sobre haver apenas duas classes, creio que não, mas estou com sono demais pra pensar em quais seriam. Outro dia, quando eu estiver acordado, eu volto.

    Boa noite!

  • Ronaldo says:

    Witaro, engraçado. Eu fiz esse teste (não em um psicólogo) há alguns anos atrás e o resultado foi INTJ. Fiz de novo esses dias, e deu INTP. Mas eu me considero mais um otimizador do que um construtor. Talvez seja uma questão das forças relativas de cada parte do tipo.

    Walter, vai fugir é? ;-) Não deixa para “outro dia” não. Na hora que passar o sono, manda sua opinião. :-)

  • Walter Cruz says:

    De fato, tem muito a ver com a literatura de liderança: nela se diz que o líder vê o quadro geral, mas tem dificuldades de ver os detalhes; ao passo que o administrador vê os detalhes sem uma noção do geral. A excelência (ergh, que jargonice do caramba) se atingiria juntando pessoas com os dois perfis.

    Poderíamos dizer que um projeto sobreviveria se houvesse apenas os do tipo construtor, mas se arrastando e com pouco brilho, enquanto se juntássemos os do tipo otimizador, poderíamos ter muitas idéias originais, mas pouco coordenação. (será?)

    Enfim, essa parte humana é fascinante (e o sucesso do XP é prova disso). Dois tipos talvez seja uma supersimplificação do tema, e pode nos levar a incorrer no erro de analisarmos as coisas de forma binária, como um tipo sendo melhor que o outro.

    Talvez o terceiro tipo seja o programador pragmático :)

  • Ronaldo says:

    Faz sentido essa comparação com liderança, embora o domínio seja diferente.

    Quanto a super-simplificação, provavelmente você está correto. Só pelos tipos Myers-Briggs já dá para ter uma idéia dessa dificuldade de categorizar.

    Mas eu ainda acredito que possam existir alguns super-tipos. Por exemplo, um programador pragmático é meramente um programador que reconhece suas limitações e as contorna. Usando uma analogia cristão, você pode não ter todos dons, mas pode muito bem exercê-los pela prática. :-)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

What's this?

You are currently reading Construtores e Otimizadores at Superfície Reflexiva.

meta