Тут как посмотреть. Непосредственных причин, которые приводят к говнокоду, может быть очень много:
1. Отсутствие внятной аналитики и архитектуры
2. Низкая квалификация исполнителей (он может и хотел бы сделать хорошо, но не знает и не умеет)
3. Говнокодеры по складу характера (есть такие люди, которым даже если создать все условия, все равно сделают на от****сь, потому что и так сойдет)
4. Недопонимание и сложные отношения в команде
5. Сроки (бывают заведомо нереалистичные, а бывают просранные в процессе)
6. Меняющиеся требования
7. Плохо выстроенные процессы (документация, тесты и пр)
8. Текучка кадров
9. Политика руководства
И тд и тп... Можно придумать ещё много пунктов.
Но в конечном итоге все эти причины можно свести к одной первопричине - плохой менеджмент. Хороший менеджмент это такой непонятный зверь... Трудно сформулировать, понять, организовать. Косяки не сразу видны и ощутимы, но потом выливаются в проблемы. Если у вас есть хороший менеджер проекта - он на вес золота.