La parte fundamental de esto es que la responsabilidad del codificador es crear un código que funcione y cumpla con el requisito. Esto requiere una mentalidad particular: "El código que estoy escribiendo hace lo que se supone que debe hacer".
Mezclar las responsabilidades del codificador significa que ahora se requiere que el codificador ingrese a otras mentalidades para otras actividades, sin embargo, como codificador, es difícil que uno se divorcie completamente de esa mentalidad.
La responsabilidad del probador es encontrar errores y lugares donde la funcionalidad se desvía de la funcionalidad requerida. Esto requería la mentalidad de "El código está roto y descubriré cómo".
Del mismo modo, un analista de negocios está tratando de identificar los requisitos que el cliente realmente solicita. Esto requiere otra mentalidad de "la aplicación no funciona de esta manera, pero debería".
Para que un codificador trabaje en cualquiera de esas otras capacidades, existe una probabilidad razonable de que la mentalidad entre en conflicto y el codificador realice un rendimiento inferior al siguiente:
- Codificador / QA: "El código funciona perfectamente, y ya lo he codificado para manejar todas las formas posibles en las que pueda pensar que podrían romperlo".
- Codificador / BA - "El código debería funcionar de la manera que yo quiero y sería bueno agregarle cosas que el cliente no pensó.
Esto no quiere decir que cada codificador sea susceptible a estos problemas (he conocido algunos tipos muy codificados / de control de calidad ... aunque no por el código que escribieron).
Esto se extiende también al equipo de desarrollo. La combinación de las responsabilidades y la mentalidad asociada de esas responsabilidades para un equipo de desarrollo compromete el producto final (el código).