Listening to a class where they teach you basic stuff about computers (Linux, C, Big O notation, the electronics underneath), you think: There's an ocean of free software around, why do they keep bothering me with this outdated stuff?

When you go to a large company, it will likely require you to reconsider every larger decision to use somebody's (aka. "third-party") library ("security reasons").

It's often easier to write what you need from scratch, and TDD helps a lot at that.

Writing from scratch, you don't need to worry about overloading your program with features nobody needs at the moment, and likely never will.

Having automated tests makes it easy to check all the important behaviors of your code quickly - often in a matter of seconds.

This in turn lets you clean the program fearlessly, also by removing code that turns out unnecessary.

Assuming you check every step of your work into version control, removing code in this way can be almost entirely risk-free.

Remember: Agile is about cutting off the stuff that doesn't work, and focusing on what brings real value.

If at some point you find TDD is slowing you down dramatically, ship the working code first, and then consider returning to TDD as soon as you have a chance.

Don't let "lack of time" become an excuse from writing tests, and from writing them first.

Don't let "TDD" be an excuse for not shipping working code on time.