:) если у разработчика нет такого понимания - это недостаточно квалифицированный разработчик, который "намеренно" делегировал проверку некоему другому человеку - тестировщику. Это плохо. Хороший разработчик должен научиться этому и стремится избегать подобных ситуаций
Это нереализуемо. Точнее, реализуемо, но это крайне затратно как с точки зрения времени, так и с точки зрения денег. Поэтому, всегда эффективнее и дешевле иметь QA отдел.