A parte fundamental disso é que a responsabilidade do codificador é criar um código que funcione e atenda ao requisito. Isso requer uma mentalidade específica - "O código que estou escrevendo faz o que é suposto".
Misturar as responsabilidades do codificador significa que agora é necessário que o codificador entre em outras mentalidades para outras atividades; no entanto, como codificador, é difícil para alguém se divorciar completamente dessa mentalidade.
A responsabilidade do testador é encontrar bugs e locais onde a funcionalidade diverge da funcionalidade necessária. Isso exigia a mentalidade de "O código está quebrado e vou descobrir como".
Da mesma forma, um analista de negócios está tentando identificar os requisitos que o cliente realmente está solicitando. Isso requer outra mentalidade de "o aplicativo não funciona dessa maneira, mas deveria".
Para um codificador trabalhar em qualquer uma dessas outras capacidades, existe uma probabilidade razoável de que as mentalidades entrem em conflito e que o codificador execute sub-par:
- Codificador / controle de qualidade - "O código funciona perfeitamente, e eu já codifiquei para lidar com todas as maneiras possíveis que eu possa imaginar que possam quebrá-lo".
- Coder / BA - "O código deve funcionar da maneira que eu quero e isso seria algo interessante a acrescentar, que o cliente não pensou.
Isso não quer dizer que todo codificador seja suscetível a esses problemas (eu encontrei alguns tipos muito talentosos de codificador / controle de qualidade ... embora não seja o código que eles escreveram).
Isso também se estende à equipe de desenvolvimento. A mistura de responsabilidades e mentalidades associadas dessas responsabilidades para uma equipe de desenvolvimento compromete o produto final (o código).