De acordo com Scott Hanselman e uma discussão no Slashdot muitas organizações tem adotado o FDD - Fear Driven Development em português Desenvolvimento Orientado ao Medo. Mas o que é o FDD? É uma nova abordagem de desenvolvimento que surgiu recentemente? É um novo nome para uma prática que já existia? O termo foi definido por Jason Nocks em 2008:
- Caracteriza um processo de desenvolvimento de software onde a codificação ocorre de forma extremamente lenta para tentar antever erros, produzindo, checando, rechecando e checando novamente documentos em papel, antes de produzir código funcionando de fato. Essencialmente, você fica com tanto medo de errar que acaba não produzindo nada.
- Caracteriza um processo de desenvolvimento de software que tenta arrancar produtividade dos participantes provocando neles medo de perder seus empregos.
FDD é tipicamente um produto da Cultura do Medo:
A Cultura do Medo é aquela onde todos os funcionários têm medo de mostrar o resultado do seu trabalho pois se sentem ameaçados por uma demissão. Uma resposta comum à erros ou enganos é encontrar a pessoa (ir)responsável e demití-la. Isso é para que outros funcionários saibam que eles não tem permissão para errar. O resultado é que funcionários ficam com tanto medo de errar que acabam escondendo qualquer coisa que produzam. O que quer que façam não pode ser do conhecimento de outras pessoas, pois qualquer falha percebida será considerada um motivo para demissão.
De acordo com Keith Sader, a cultura do medo é o derradeiro "anti pattern":
Na Cultura do Medo, processos servem para blindar a empresa contra as pessoas.
Scott Hanselman discute vários aspectos do FDD:
- Medo organizacional
O medo organizacional pode gerar desenvolvedores tão preocupados em errar, quebrar a build, ou causar bugs que a organização … cria processos excessivos e, efetivamente, se coloca à frente do trabalho de escrever código.
- Medo de perder seu emprego
Outro tipo de Desenvolvimento Orientado ao Medo é quando uma organização tenta fazer com que os desenvolvedores fiquem até tarde, trabalhem além do razoável, deixando implícito que eles serão demitidos ao menor de sinal de problemas no projeto. Ameaçar empregos nunca criará um time mais produtivo. Apenas perpetua sentimentos negativos e sempre levará as pessoas a deixarem a empresa.
- Medo de alterar código
Outro tipo de Desenvolvimento Orientado ao Medo é quando o time de desenvolvimento da sua organização (ou sua organização toda ) tem medo do código. Pode ser que o código seja mais antigo (legado) mas é mais provável que apenas não seja bem compreendido. O sistema legado normalmente funciona, e o time de desenvolvimento tem receio de que uma pequena mudança no código possa gerar efeitos colaterais imprevisíveis.
O post de Hanselman e a discussão no Slashdot criaram uma expressiva atividade de resposta de pessoas descrevendo outros fatores de medo, por exemplo:
- Kijana Woodard:
Medo do desconhecido [que] leva à super-engenharia. É uma combinação curiosa combinar planejamento mal feito e super-engenharia. Parece impossível, mas é o resultado de focar nas coisas erradas.
- Taki Stewart:
Medo de não atingir as estimativas: às vezes a gerência sênior vai reprimir ou punir de tal forma se o trabalho for maior que o estimado que o time de desenvolvimento vai inchar suas estimativas à proporções ridículas.
- O desenvolvedor desconhecido:
Medo de que se você não fizer as tarefas importantes, o maior idiota do time vai fazê-las e criar um dano imenso.
Parece que até mesmo nos locais com uma relativamente boa cultura de desenvolvimento o "desenvolvimento orientado ao medo" e seu primo "desenvolvimento orientado à preocupação" tendem a aparecer sempre que os níveis de estresse aumentam. Pressão leva as pessoas tomarem decisões questionáveis que pensam ser "seguras". E você, já esteve em um ambiente que possuía algum dos sintomas do FDD?