I love how everything has a fancy name now. We've been doing StartInTheMiddle / MinimumViableProduct / Prototyping / GetSomethingOut / StepwiseRefinement for years:<p>Customer: I must have anything I want from the database without asking you.<p>Me, 1 hour later: No problem, here's your screen.<p>Customer: This only does does Customers. I want to pick <i>any</i> table.<p>Me, 1 hour later: No problem, now you can pick your table.<p>Customer: This dumps every column. I want to pick my own.<p>Me, 1 hour later: No problem. Now you can pick your columns.<p>Customer: This doesn't sort. I want it to sort.<p>Me, 1 hour later: No problem. Now you can sort.<p>Customer: But I want multiple sorts, some ascending, some descending.<p>Me, 1 hour later: No problem. Sort any way you want.<p>Customer: It dumps the whole table. I want to filter.<p>Me, 1 hour later: No problem. Now you can filter.<p>Customer: It only give me local columns. I want columns from other tables, too.<p>Me, 5 mins later: Give me an example.<p>Customer: Here. Give me these linked columns and accumulators, too.<p>Me, 2 days later: OK. I figured out how to give you all this data too.<p>Customer: OK. This will work. Why didn't you do all this in the first place?<p>Stepwise Refinement Method: Time to beta: 1 hour. Time to production: 3 days.<p>Waterfall Method: Time to beta: not applicable. Time to production: who knows?