La parte fondamentale di questo è che la responsabilità del programmatore è quella di creare codice che funzioni e soddisfi i requisiti. Ciò richiede una particolare mentalità: "Il codice che sto scrivendo fa quello che dovrebbe fare".
Mescolare le responsabilità del codificatore significa che ora al codificatore è richiesto di entrare in altre menti per altre attività, tuttavia, come programmatore, è difficile non riuscire a separare completamente se stessi da quella mentalità.
La responsabilità del tester è quella di trovare bug e luoghi in cui la funzionalità si discosti dalla funzionalità richiesta. Ciò ha richiesto la mentalità di "Il codice è rotto e scoprirò come."
Allo stesso modo, un analista aziendale sta cercando di identificare i requisiti che il cliente sta effettivamente chiedendo. Ciò richiede un'altra mentalità di "l'applicazione non funziona in questo modo, ma dovrebbe."
Affinché un programmatore funzioni in una di queste altre capacità, è ragionevole che la mentalità sia in conflitto e il codificatore preformerà il sotto-par:
- Coder / QA - "Il codice funziona perfettamente, e ho già programmato
Gestire ogni possibile modo in cui posso pensare che potrebbe romperlo. "
- Coder / BA - "Il codice dovrebbe funzionare nel modo in cui lo voglio e questi
sarebbero cose belle da aggiungere che il cliente non ha pensato.
Questo non vuol dire che ogni coder sia suscettibile a questi problemi (ho incontrato alcuni coder / QA molto dotati ... anche se non per codice che hanno scritto).
Questo si estende anche al team di sviluppo. Mescolare le responsabilità e le mentalità associate di tali responsabilità per un team di sviluppo compromette il prodotto finale (il codice).