Software construction == fighting bugs
This summer during obligatory in Russia military training I've read the famous Code Complete book by Steve McConnel.
Most of the information was either already known to me or somewhat outdated. But after I turned over the last 900th page and closed the book I felt the "Aha!" moment.
Most of the practices you do during software construction are aimed at the eliminating bugs and mistakes: code reviews, pre requirements, planning, refactoring, pair programming, testing and in a way even comments.
Let's be honest: building stuff from the blank page is easy, not willing to throw away the project after half a year behind you and a ton of bugs atop of you IS hard.
That is why TDD is very practical. At first having to write that extra code feels like a pain in the butt, but the amount of time you save later on debugging is golden.
Software project just like many other things isn't a sprint, it's a... camping, so take time to put goodies in your backpack, you have a long journey ahead of you.