You rarely see someone who writes production code preach TDD.
Something fishy there...
You rarely see someone who writes production code preach TDD.
Something fishy there...
So you don’t get a say in the test or the code? It just messes itself up?
Said teams absorb a lot of the pain of Soft Devs who don't bother even running their own code.
Several years ago I was part of a team of developers in an org that did not have a formal QA process. Code was "just OK" but we shipped working products. At some point we (the management) decided to add a QA step with formal QA Engineers (doing part QA automation and manual QA). As a result Engineers became sloppy and realized they could get "extra time" if they delivered half-assed code that had bugs that were caught by QA. That was painful.
I believe strongly that developers make horrible tests because it's a completely different mindset that is not easy to switch between and near impossible if you wrote the code yourself that you are testing. We tend to lean into the "happy path" and don't even consider "outlandish" things a user might do. I have immense respect for a good QA person and I've had the privilege of working with a number of them, some I'd hire in a heartbeat if it were up to me.
I'm not 100% anti-testing but the only testing I've seen produce real results was automated browser testing, and that was only after 2 very large attempts by the development team to do it. Finally we brought in someone whose sole job was the automated browser testing suite. In a very short amount of time he had something working that was producing useful results, something our 2 previous attempts never did. I believe it was in part since he didn't work with or write any of the code, he had no preconceptions, he didn't "think" the way we did since we knew the inner workings. From this and other experiences I think QA and Dev should be 2 seperate groups/teams without overlap (don't have devs do QA, they don't like doing it and they just aren't good at it).
Caveat - because you bake the QA in. The code itself is already quality assured. Then QA resources can do exploratory testing which does carry a separate value.