If you're a programmer working alone, or with a couple other programmers, and you don't have dedicated testers, the programmers have to make up the difference.
Obviously, even when you have testers, everyone is responsible for quality. I know how to write unit tests. I know how to "eat my own dogfood". I know the value of a second pair of eyes, applied via pair programming, code reviews, and having programmers test each others' features. But in the past I have always counted on dedicated testers. Now I am working without any testers.
Some examples of what I know we lose by not having testers:
A programmer writing code to do X will tend to test X with the same thinking that she put in to her code. So, she is likely to overlook the same mistakes both when coding and when testing.
Programmers love their programs, and have an emotional need to see their programs in the best light possible. This makes it difficult to find flaws.
A programmer has to split time between programming (which he is eager to do) and testing (which is less attractive). It is easy for a programmer to call testing "done" so he can move on to the next joyous programming task. This conflict doesn't exist in a dedicated tester.
Testers have testing skills that they hone over their careers. I lack many of those skills.
How can we fill in these gaps? How can we still produce high-quality software with the people we have?