terça-feira, 22 de maio de 2012

Nós NÃO precisamos de mais programadores


Não, nós não precisamos de mais programadores.

Parece contraditório, no mínimo. Afinal, é bastante comum ouvirmos autoridades apregoando em discursos e reportagens que o déficit de programadores, no Brasil, é de 70 mil programadores/ano. Nos EUA, em torno de 200 mil programadores/ano. Mas nunca recebi uma explicação de como este número foi calculado.

O "déficit" de programadores no Brasil e no mundo é utilizado como motivação para se investir mais na formação de mais programadores. O investimento é correto. O foco é que está errado.

Novamente, nós não precisamos de mais programadores. Precisamos de programadores melhores. Precisamos de profissionais competentes.

Citarei um trecho de uma entrevista com David Lorge Parns, ACM Fellow:
What is the most often-overlooked risk in software engineering?
Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.
Traduzindo literalmente:
 Qual é o mais desapercebido dos riscos em engenharia de software?
Programadores incompetentes. Existem estimativas de que o número de programadores necessários nos EUA ultrapassa os 200.000. Estas estimativas são enganosas. Não é um problema de quantidade; nós temos um problema de qualidade. Um mau programador pode facilmente criar dois novos empregos por ano. Contratar mais maus programadores só vai aumentar a percepção de necessidade deles. Se tivéssemos mais bons programadores, e pudéssemos facilmente identificá-los, precisaríamos de menos, não de mais.
Infelizmente encontrar programadores que sejam profissionais competentes é algo raro. Programar não é somente "fazer funcionar". É fazer bem feito. É produzir código testado. É utilizar técnicas e ferramentas adequadas para resolver o problema.

É fácil perceber porque um mau programador cria dois novos empregos por ano. Um mau programador (que é a regra generalizada) produz código mal feito. Um código mal feito precisa de outros dois maus programadores para ser mantido. E assim continuamos numa progressão geométrica.

Vamos atacar o problema correto. Nossa meta deve ser transformar as pessoas com potencial em profissionais competentes e retirar o restante do mercado. E você? De que lado está? De que lado quer ficar?