I’m a big proponent of Agile methodology for Software development.  A lot of the big technology companies that are doing well these days are because they follow key elements of the Agile philiosphy.
 
Apple, Google, Facebook, and of course, Microsoft, embrace Agile and it’s key tenants.  Most of the time they don’t say ‘Agile’, they just use the same vocabulary and concepts.
 
Most of the time, Agile and Iterative are not clearly seperated.  One absolute key difference in my mind is this:
 
Agile MUST get real PRODUCTION quality feedback every 3-6 months. 
 
Not UAT, NOT LAB, but BETA, ALPHA live feedback with live data and real users.  Projects at those companies are setup with that expectation from their very inception.
 
For example, Microsoft gave away thousands of Windows 7 Phones to all of their employees for their daily use.   Now they have a large in-house BETA group for feedback.
 
In Agile, creating new ‘paths’ for feedback loops is KEY.  Setting up software to help listen to your user base, Test Driven Development, Automated Builds, and Automated QA create metrics that helps get quicker, better, fine-grained feedback.
 
Google goes to great lengths to get feedback on the smallest of changes.  They will post small color scheme and layout changes on their home page to a small subset of users and then gather metrics and statistics on the users behavior and compare it versus other layouts.
 
The difficult part is figuring out how you can ship SOMETHING to BETA every 3-6 months.  How do you take that large application and convince management to deploy some small useful part of it.  That’s the toughest part!