Bruce Eckel identifica habilmente a causa raiz de todos os problemas de desenvolvimento de software:
Estamos em uma empresa jovem. Primitivo, na verdade – não sabemos muito sobre o que funciona e continuamos pensando que encontramos a bala de prata que resolve todos os problemas. Como resultado, passamos por esses ciclos plurianuais de alta e baixa, à medida que novas ideias surgem, decolam, excedem seu alcance e depois perdem o fôlego. Mas algumas ideias parecem ter poder de permanência. Por exemplo, muitas das ideias das metodologias ágeis parecem estar causando impactos reais na produtividade e na qualidade. Isso ocorre porque elas se concentram mais nas questões de pessoas trabalhando juntas e menos nas tecnologias.
Gerald Weinberg, um homem com quem aprendi muito, escreveu seus primeiros livros sobre a tecnologia de programação. Em seguida, ele mudou e escreveu ou foi coautor de outros 50 sobre o processo de programação, e é mais famoso por dizer “não importa o que digam ao senhor, é sempre um problema de pessoas”.
Normalmente, o que faz ou desfaz um projeto são questões de processo e de pessoas. A maneira como o senhor trabalha no dia a dia. Quem são seus arquitetos, quem são seus gerentes e com quem o senhor trabalha na equipe de programação. Como o senhor se comunica e, mais importante, como resolve os problemas de processo e de pessoal quando eles surgem. A maneira mais rápida de ficar preso é pensar que tudo se resume à tecnologia e acreditar que o senhor pode abrir caminho através dos outros aspectos. Esses outros aspectos são os mais prováveis de fazer o senhor parar.
Bruce se lembra mal a citação realé “não importa qual seja o problema, ele é sempre um problema das pessoas”. Mas a reformulação de Bruce tem uma certa veracidade inefável que certamente está no espírito do do texto de Gerald Weinberg.
Digamos que eu tenha a tarefa de determinar se seu projeto de software falhará. Com as respostas a essas três perguntas em mãos, posso dizer ao senhor com quase absoluta certeza se o seu projeto fracassará:
- Quantos linhas de código sua equipe escreverá?
- O que tipo de software que o senhor está desenvolvendo?
- O senhor gosta de seus colegas de trabalho?
Essa última pergunta não é uma piada. Não estou brincando. O senhor gosta da companhia de seus colegas de equipe em nível pessoal? O senhor respeita seus colegas de equipe profissionalmente? Se estivesse começando em outra empresa, o senhor convidaria seus colegas de trabalho? O(a) senhor(a) tem discussões de equipe animadas ou discussões de equipe do tipo “derrubar, arrastar, último homem em pé”? Há alguma pessoa na sua equipe em quem o(a) senhor(a) “votaria para sair da ilha” se pudesse?
Pode parecer trivial focar nas pessoas com quem o senhor trabalha em vez de coisas mais tangíveis como, por exemplo, o trabalho real ou a tecnologia específica que o senhor está usando para fazer esse trabalho. Mas não é. As pessoas com quem o senhor escolhe trabalhar são o indicador mais preciso de satisfação no trabalho que já encontrei. E a satisfação no trabalho, com base em minha experiência profissional até o momento, está perfeitamente correlacionada com o sucesso. Eu tenho nunca vi uma equipe de desenvolvimento de software feliz, saudável, unida e socialmente funcional falhar. É uma pena que essas equipes sejam tão raras.
Como disse Weinberg, é sempre um problema de pessoas. Se o senhor não está trabalhando com pessoas de quem gosta, pessoas que respeita, pessoas que o desafiam e inspiram… então por que não? O que está impedindo o senhor?