sexta-feira, 15 de junho de 2007

Tênis ou Futebol?

Você é, ou já foi, um bom desenvolvedor de software? Então essa velha questão já deve ter passado pela sua cabeça: afinal, eu trabalho melhor sozinho ou em time? Me identifico com um jogador de tênis ou com mais um daqueles operários em um time de futebol? Volta e meia essa questão volta à tona.

Muita gente acredita que um desenvolvedor top de linha produz melhor sozinho, enquanto um time serviria para quando não temos craques, já que as deficiências individuais podem ser compensadas com muita colaboração. E claro, se fizermos uma analogia com esportes como o tênis e o futebol, fica claro que no primeiro o cara só dá certo se for muito bom. Já no futebol, cansamos de ver excelentes times nos quais não conseguimos identificar um só craque. Vejo muitos bons desenvolvedores se apoiarem nessa idéia. "Ora, eu sou bom pra caramba. O meu código raramente tem bugs. Quando outros desenvolvedores metem a mão, estragam tudo, inserindo bugs e implementações fora de padrão. Então me deixem fazer tudo sozinho, garanto que a qualidade será melhor."

Quem está certo?

Apelo para a analogia do esporte novamente para pensarmos em outros pontos. O que acontece quando um tenista de ponta fica doente ou entra em uma má fase? Alguém aí ainda lembra do Guga? Triste, não? Por outro lado, um monte de craques não necessariamente faz um time de futebol. Ou alguém duvida que Ronaldinho Gaúcho, Kaká e cia. são excelentes jogadores, mesmo tendo desaparecido no meio de um monte de gente que alguns ousavam chamar de "time" na Copa do Mundo de 2006?

Meu ponto é que obviamente podemos obter excelentes resultados em ambos os cenários. Já vi desenvolvedores que somente conseguiam trabalhar sozinhos e eram excelentes, verdadeiros matadores de leões. Já vi equipes com desenvolvedores excelentes não dar certo. E já vi equipes mescladas com pessoas experientes e desenvolvedores juniores (ou fracos mesmo) funcionando como um relógio.

O fato é que em um ambiente de desenvolvimento, precisamos ter escalabilidade. Ou seja, é quase mandatório trabalhar em equipe. Mas estamos pecando muito quando formamos times. Raramente vemos verdadeiros times trabalhando em um projeto. E nesse caso eu apelo para a analogia com os esportes novamente e concordo com um comentarista de futebol que disse uma vez: "quando um time não funciona como time, não se conhece, não engrena corretamente, mire no comandante, pois é dele a culpa." Jack Welch sempre diz que uma das coisas mais importantes para se ter sucesso em uma companhia é ser capaz de formar bons times.

Esses dias meu amigo Jack comentou que precisamos de mais Scolaris para mudar a questão de expectativa em TI. Eu iria mais longe e diria que precisamos de mais pessoas como ele para formar times vencedores.

Reggie, the Engineer.
--