I'm getting confused by most of you guys. Some of you said that there are Agile consultants that would blame a failure because "you don't follow it by the book".
First, follow what by the book?
Second, what book?
Third, don't confuse Process with Principles.
Organization failed implementing Agile because the people behind it are still stubborn and still clinging to the old ways of doing things. Yes... this is the reality in our field. We often say things like "IT, Computer, Internet change the way we do things", please allow me to finish that sentence: "... but just don't tell us to change how we build software".
Agile never talks about making software faster. They talk about delivering business value and high-quality software. Even then, quality is defined by the Client, not by the developers/engineers. Some clients were okay with small UI glitches.
Scrum is a Project Management technique that uses a set of Agile techniques behind it. In Scrum, after each Sprint, you should have a potential shippable product. How can you have such situation without a good test-automation? Manual test would work fine early on when the list of features are minimum, but it doesn't scale. Remember, a Sprint is usually either a week or two. How can you re-test the whole product every 2 weeks? Hire more QAs?
Developers these days pay lip-service when it comes to writing test-automation. They'll dodge any tasks related to test. This happens because of our university/education doesn't teach us that test is important. Testing is usually a footnote in "Software Development" courses.
The reason why TDD is important is simple: people lie all the time. People are lazy. That's a matter of fact. They would say "sure, my code is testable, we don't have to write unit-tests now". By the time someone tried to write a unit-test, you'll hear tons of excuses. Can't do.
Now, let's get to everybody's favorite part: Superstar Developer. Yes, they do exist. No, they're not perfect, they'll make mistakes, they'll get sloppy, their estimate went south, etc. Superstar developers write unit-tests. I don't care if they do TDD or not, but at the end of the day, their code should be testable from all angles.
Please understand that we are trying to get better in this industry. Developer testing their own stuff is something quite relatively new. There are _plenty_ developers out there that allergic to testing.