Application testing is not rocket science. Neither is automated application testing. It's just another learnable skill. From a developer's perspective, however, you need a change of mindset to write code with a totally different purpose than you're used to do. It's common knowledge that developers should never test their own code, as they, consciously or unconsciously, know how to use the software and how to evade issues. They write code to make something work.
Testing, however, is not about how to make it; rather, it's about how to break it. But this knowledge applies to manual, exploratory testing, where tests are executed based on knowledge and experience, not to scripts. And automatic tests are scripts.
To code these scripts into automated tests, we'll need developers. And more often than not...