Developer maturity model

The other day I was thinking about developers and their attitudes towards testers and came up with this maturity model:

Level 1: “We don’t need testers” The pre-tester attitude of developers who have never worked with a tester, and have never seen the need for one.

Level 2: “The testers are criticizing my work” A common attitude of developers who have only recently begun working with testers for the first time. These developers may react defensively to bugs raised, and will often be very aggressive or uncooperative with testers.

Level 3: “The testers are there to validate my work” Developers with this attitude have recognised testers as a useful resource, but have come to depend on them to pick up obvious bugs in their work. This may lead to careless work.

Level 4: “Testers help me turn good work into excellent work” These are developers with a high level of experience, who take care in their work. They recognise that if they deliver quality work to the testers, then the testers will have time to find more complex bugs. This will result in a high standard of work at a faster rate.

Level 5: “Testers help the team to produce excellent software” These developers understand the difference between writing code and making software. They have undergone a paradigm shift towards realising that quality is the whole team’s responsibility.

I ran this by some friends of mine (who are “level 5” software developers, of course). I initially thought levels 4 and 5 would be combined, but after discussing with Rob Sanders, I decided that they are probably separate mentalities. When asked what triggered the move from one level to the next, they replied simply “experience”.