I'm a software developer. I've been thinking a lot about the efficiency of the Software Testers I've worked with so far in my career. In fact, I've been thinking a lot about the Software Testers role in general and have reached a potentially contentious conclusion:
Non-developer Software Testers staff are less efficient at software testing than developers.
Now, before everyone gets upset, hear me out. This isn't mere opinion:
Software Testing and Software Development both require a lot of skills in common:
Problem solving
Thinking about corner cases
Analytical skills
The ability to define clear and concise step-by-step scenarios
What developers have in addition to this is the ability to automate their tests. Yes, I know non-dev testers can automate their tests too, but that often then becomes a test maintenance issue. Because automating UI tests is essentially programming, non-dev members encounter all the same difficulties software developers encounter: Copy-pasta, lack of code reusibility/maintainability, etc.
So, I was wondering. Why not replace all non-dev roles with developer roles?
Developers have the skills required to perform Software Testing tasks, and they have the skills to automate tests and keep them maintainable.
Would the following work:
Hire a bunch of developers and split them into 2 roles:
Software developers
Software developers doing testing (some manual, mostly automated by writing integration tests, unit tests, etc)
Software developers doing application support. (I've removed this as it is probably a separate question altogether)
And, in our case since we're doing Agile development, rotate the roles every sprint or two. Also, if at all possible, try to have people spend their Developer stints and Testing stints on different projects.
Ideally you would want to reduce the turnover rate per rotation. So maybe you could have 2 groups and make sure the rotation cycles of the groups are elided. So, for example, if each rotation was two sprints long, the two groups would have their rotations 1 sprint apart. That way there's only a 50% turn-over rate per sprint.
Am I crazy, or could this work?
(Obviously a key component to this working is that all devs want to be in the 3 roles. Let's assume I'm starting a new company and I can hire these ideal people)
Edit I've removed the phrase "QA", as apparently we are using it incorrectly where I work.