Nonprofessionals don’t have to take responsibility for the job they do, In other words professionalism is all about taking responsibility.
In order to be professional, we must not create bugs. I know the software is too complex to create without bugs.
When you release your software you should expect QA to find no problems, It is unprofessional in the extreme to purposely send code that you know to be faulty to QA.
Some folks use QA as the bug catchers. They send them code that they haven’t thoroughly checked. They depend on QA to find the bugs and report them back to the developers and this is a desperately expensive behavior that damages company and the software.
What about QA find bugs? well from now, get ready to apologize and then figure out, why those bugs managed to escape your notice and do something to prevent it from happening again.
How can you know your code works? Test it, test it again. Test it up, Test down, Test it seven ways to Sunday!
100% test coverage is a suggestion? No, is not a suggestion. Is a demand. Every single lines of code that you write should be tested. Period.
But isn’t some code hard to test? The solution for that is to design your code to be easy to test. And the best way to do that is to write your tests first, before you write the code that passes them. This is a discipline known as Test Driven Development (TDD).
Source: The Clean Code by Robert C. Martin