Bagian mendasar dari hal ini adalah bahwa tanggung jawab pembuat kode adalah menciptakan kode yang berfungsi dan memenuhi persyaratan. Ini membutuhkan pola pikir tertentu - "Kode yang saya tulis melakukan apa yang seharusnya dilakukan."
Mencampur tanggung jawab pembuat kode berarti bahwa pembuat kode sekarang diminta untuk memasuki pola pikir lain untuk kegiatan lain, namun, sebagai seorang pembuat kode, sulit bagi seseorang untuk sepenuhnya menceraikan diri sendiri dari pola pikir itu.
Tanggung jawab penguji adalah untuk menemukan bug dan tempat-tempat di mana fungsi mengalihkan dari fungsi yang diperlukan. Ini membutuhkan pola pikir "Kode rusak dan saya akan mencari tahu caranya."
Demikian juga, seorang analis bisnis sedang mencoba mengidentifikasi persyaratan yang sebenarnya diminta pelanggan. Ini membutuhkan pola pikir lain dari "aplikasi tidak bekerja seperti ini, tetapi seharusnya."
Bagi seorang pembuat kode untuk bekerja dalam kapasitas-kapasitas lain mana pun, ada kemungkinan yang masuk akal bahwa pola pikir akan bertentangan dan pembuat kode akan melakukan sub-par:
- Coder / QA - "Kode ini bekerja dengan sempurna, dan saya sudah mengkodekan untuk menangani setiap cara yang mungkin saya pikirkan yang mungkin merusaknya."
- Coder / BA - "Kode harus bekerja dengan cara yang saya inginkan dan ini akan menjadi hal-hal yang rapi untuk ditambahkan yang tidak dipikirkan oleh pelanggan.
Ini bukan untuk mengatakan bahwa setiap pembuat kode rentan terhadap masalah ini (saya telah memenuhi beberapa jenis pembuat kode / QA yang sangat berbakat ... meskipun tidak untuk kode yang mereka tulis).
Ini meluas hingga ke tim pengembangan juga. Mencampur tanggung jawab dan pola pikir yang terkait dari tanggung jawab tersebut untuk tim pengembangan kompromi produk akhir (kode).