One example where "engineering" versus "agile" paid off:
In 04/05, I single-handedly wrote a large Windows Mobile (.Net CF) and SOA platform for managing proof of delivery across 5000 devices which used server-push messaging over semi-persistent GPRS links. This required about 6 months of work after 3 months of R&D. It was delivered on time, with zero defects, worked perfectly on low bandwidth connections and required no training for the user (less than 5% of the userbase had problems using it with no training).
It was fast, even over low bandwidth connections. Virtually real time when a link was up.
It was beautiful because it was easy to use and abstracted the messaging system and connection availability entirely.
It was possible because it worked first time with no regressions or defects in the field reported in over 6 years. It had to work first time as there was no upgrade channel for the users.
Where's the payoff? All I see is a system that had to work first time, so "agile" wasn't even an option. If there were an auto-update mechanism to get everyone on the latest version, it seems to me that you might have delivered months earlier and polished it over time.
It didn't have to work first time. People expected it to work first time and the expectation was fulfilled. Would you deliver a stinking turd first time and spend 6 months fixing it? That appears to be the way people want to work these days but believe me the customers are fucked off with it. The entire industry is getting a bad rep due to this laziness.
You're making bad assumptions. You can either deliver a "stinking turd" in a month and spend 5 months fixing it, or spend 6 months developing and deliver the whole thing in one go.