Os dois tipos de programadores

Ao contrário do que diz o mito, não existem quatorze tipos de programadores. Existem realmente apenas dois, como Ben Collins-Sussman nos lembra.

Há duas “classes” de programadores no mundo do desenvolvimento de software: Vou chamá-las de 20% e 80%.

O pessoal dos 20% é o que muitos chamariam de programadores “alfa” – os líderes, pioneiros, criadores de tendências, o tipo de gente que lugares como o Google e a Fog Creek Software estão obcecados em contratar. Essas pessoas foram as primeiras a instalar o Linux em casa nos anos 90; são as pessoas que escrevem compiladores lisp e aprendem Haskell nos fins de semana “só por diversão”; participam ativamente de projetos de código aberto; estão sempre atentas às novas tendências mais recentes e interessantes em programação e ferramentas.

Os 80% de pessoas constituem a maior parte do setor de desenvolvimento de software. Eles não são estúpidos; são apenas vocacionais. Foram para a escola, aprenderam apenas o suficiente de Java/C#/C++ e, em seguida, conseguiram um emprego escrevendo aplicativos internos para bancos, governos, empresas de viagens, escritórios de advocacia, etc. Em geral, o mundo nunca vê seu software. Eles usam as ferramentas que a Microsoft lhes fornece, geralmente o VS.NET se estiverem desenvolvendo C++, ou talvez um IDE GUI como o Eclipse ou o IntelliJ para desenvolvimento em Java. Eles nunca usaram o Linux e, de qualquer forma, não estão muito interessados nele. Muitos nunca usaram nem mesmo o controle de versão. Se usaram, foi apenas a ferramenta que veio na caixa da Microsoft (como o SourceSafe) ou alguma coisa antiga que lhes foi passada. Eles sabem exatamente o suficiente para fazer seu trabalho, depois vão para casa no fim de semana e se esquecem dos computadores.

Ao trabalhar com equipes de programadores em campo, sempre fico impressionado com o abismo enorme entre esses 20% e o resto do mundo. Isso faz com que a divisão entre os campos de código aberto e da Microsoft parece uma vala rasa.

Declaração chocante nº 1: A maior parte do setor de software é composta por 80% de programadores. Sim, a maior parte do mundo é composta por pequenas lojas de desenvolvimento do Windows ou pequenas empresas que contratam programadores internos. A maioria das empresas tem alguns 20% de pessoas, e geralmente são elas que fazem lobby contra os chefes de cabelos pontiagudos para mudar as políticas, atualizar as ferramentas ou usar um sistema de controle de versão sensato.

Declaração chocante nº 2: A maioria dos alfa-geeks se esquece da afirmação chocante nº 1. As pessoas que trabalham com software de código aberto, participam de discussões apaixonadas sobre criptografia no Slashdot e baixam as versões mais recentes do GIT têm grande probabilidade de perder de vista o fato de que “os 80%” existem. Elas ficam empolgadas com a mais recente distribuição Linux ou kit de ferramentas AJAX ou sistema SCM distribuído, passam o fim de semana inteiro trabalhando nisso, escrevem em blogs sobre o assunto… e depois ficam confusas com o fato de não conseguirem fazer com que seu escritório comece a usá-lo.

Talvez não seja chocante para mim, mas, mesmo assim, é um lembrete excelente e importante para todos.

Muitas vezes penso que estamos perdendo nosso tempo escrevendo blogs que são lidos em grande parte pelos mesmos 20%. Na minha experiência, há pouquíssimo efeito de gotejamento dos programadores alfa para todos os outros. E se houver, leva décadas. Se o senhor realmente quiser mudar o status quo do desenvolvimento de software, se o senhor quiser fazer a diferença este anoo senhor precisa nos ajudar a sair do nosso pequeno grupo isolado de programadores alfa e fazer mudanças nos outros 80% do mundo. E isso está longe, longe mais difícil do que pregar para os 20% convertidos. É por isso que admiro tanto pessoas como Scott Mitchell, porque ele entende a importância de alcançar os outros 80%:

Gosto de programar e realmente gosto de ASP.NET. Acho bacana, divertido, interessante e legal como o senhor pode ir literalmente do nada a um aplicativo da Web orientado por dados que pode ser usado por pessoas do mundo todo em um período de tempo incrivelmente rápido. Além disso, quero espalhar esse entusiasmo para as pessoas. Quero dizer àqueles que talvez nunca tenham programado, ou àqueles que estão usando tecnologias concorrentes, ou àqueles que estão apenas começando: “Venha até aqui e experimente esse ASP.NET. Deixe-me mostrar ao senhor o que ele pode fazer!” É por isso que dou aulas (que pagam um centavo em comparação com a consultoria). É por isso que escrevo (que paga melhor do que ensinar, mas ainda não é nem de longe tão lucrativo quanto a consultoria). É por isso que dou palestras gratuitas em grupos de usuários locais e conferências patrocinadas pela comunidade aqui no sul da Califórnia. Para espalhar a palavra!

Para mim, dizer que títulos como Teach Yourself X in 24 Hours barateiam o ofício é o mesmo que dizer: “Nosso clube está cheio. Vá embora”. Não se trata de dizer: “Vamos dar as boas-vindas aos novatos e deixá-los entusiasmados com essa tecnologia”. Em vez disso, está dizendo: “Os novatos estão bem, mas primeiro eles devem perceber o quanto isso é difícil, o quanto trabalhamos duro e o quanto sabemos mais do que eles”. Preocupa-me que esse sentimento da comunidade seja visto como pomposo pelas pessoas que deveríamos receber.

Gostaria que isso fosse mais fácil para mim, pois concordo com o Scott. Sou péssimo nas coisas que ele está descrevendo. Acho que a verdadeira medida do sucesso não é o número de geeks alfa que o senhor consegue fazer com que prestem atenção em você. É quantos programadores típicos e medianos o senhor alcançounem que seja de uma forma pequena. Se o senhor realmente se importa com a arte do desenvolvimento de software, também nos ajudará a construir essa ponte entre os 20% e os 80%.

Atualizar: Esta foi uma postagem polêmica. Veja minha continuação desse post para obter mais explicações.