A challenge in software development has long been the division between test and development.
You could do as Microsoft recently did (more or less abolished "test").. the jury is still out on whether that is what has caused the recent Windows 10 quality issues.
Or you could keep a tester/developer separation. Good luck trying to recruit top (e.g. your testers should on average be as smart as your developers) people for the tester positions unless you are Google/Facebook.
Either way, I think this is a really interesting issue.
It should be noted: some pieces of software are a lot easier to test by its developer (say, a compiler) than others (say a GUI).