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 programador, es difícil o imposible 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 sabré cómo".
Del mismo modo, un analista de negocios está tratando de identificar los requisitos que el cliente realmente está solicitando. Esto requiere otra mentalidad de "la aplicación no funciona de esta manera, pero debería".
Para que un programador trabaje en cualquiera de esas otras capacidades, existe una posibilidad razonable de que las mentalidades entren en conflicto y el programador realice el sub-par:
- Coder / QA - "El código funciona perfectamente, y ya lo he codificado
manejar todas las formas posibles en las que pueda pensar que podrían romperlo ".
- Coder / BA - "El código debería funcionar de la manera que yo quiero y estos
sería bueno agregarle cosas que el cliente no haya pensado.
Esto no quiere decir que todos los codificadores sean susceptibles a estos problemas (he cumplido con algunos tipos de codificadores / QA muy dotados ... aunque no para el código que escribieron).
Esto se extiende hasta el equipo de desarrollo también. 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).