3 ms·
I love how everything has a fancy name now. We've been doing StartInTheMiddle / MinimumViableProduct / Prototyping / GetSomethingOut / StepwiseRefinement for y
by edw519 16y ago
I love how everything has a fancy name now. We've been doing StartInTheMiddle / MinimumViableProduct / Prototyping / GetSomethingOut / StepwiseRefinement for years:
Customer: I must have anything I want from the database without asking you.
Me, 1 hour later: No problem, here's your screen.
Customer: This only does does Customers. I want to pick any table.
Me, 1 hour later: No problem, now you can pick your table.
Customer: This dumps every column. I want to pick my own.
Me, 1 hour later: No problem. Now you can pick your columns.
Customer: This doesn't sort. I want it to sort.
Me, 1 hour later: No problem. Now you can sort.
Customer: But I want multiple sorts, some ascending, some descending.
Me, 1 hour later: No problem. Sort any way you want.
Customer: It dumps the whole table. I want to filter.
Me, 1 hour later: No problem. Now you can filter.
Customer: It only give me local columns. I want columns from other tables, too.
Me, 5 mins later: Give me an example.
Customer: Here. Give me these linked columns and accumulators, too.
Me, 2 days later: OK. I figured out how to give you all this data too.
Customer: OK. This will work. Why didn't you do all this in the first place?
Stepwise Refinement Method: Time to beta: 1 hour. Time to production: 3 days.
Waterfall Method: Time to beta: not applicable. Time to production: who knows?
- ihodes 16y agoNot only that, but I'd imagine your customer felt more involved in the process and felt she had more ownership of the project because of it. I have this problem: I like to start at the edges. One of the biggest hurdles for me when I code is to make myself do the MVP first, then iterate.
- alec 16y ago"I'd imagine your customer felt more involved in the process and felt she had more ownership of the project because of it." Either that or he wondered why he needed to tell you what to do every hour.
- randallsquared 16y agoIndeed. When I ran a small-business software shop, the customers hardly ever were willing to spend enough time explaining what they wanted, because they couldn't imagine anything but what they wanted, and viewed having to specify it as some sort of attempt on our part to get out of doing something. Customers want to give a short summary of what they want, and then be pleasantly surprised by the great customized product they get in return. Once in a while, that even happens.
- barrkel 16y agoThe problem with the approach you just described is that it's missing analysis. You got a list of features, not use cases. Maybe the customer wanted to solve a particular problem, but the only way they got to elucidate it was in terms of incremental functionality. Better than the wrong thing, but not the way to delight your customer either, I bet.
- edw519 16y agoThe problem with the approach you just described is that it's missing analysis. It's not missing analysis, it's missing the analysis phase. Instead of working against human nature by tediously building use cases, data flow diagrams, logic flows, process breakdowns, etc., etc., etc. before doing any development, analysis, design, development, testing, and deployment are tightly coupled in many small iterations. That's the whole point.
- barrkel 16y agoNo, I'm not talking about an analysis phase in a waterfall development. I'm talking about the blindness you can get when you're incrementally developing at the level of features, when you can no longer see the bigger goals.
- dagheti 16y agoThe key question is "Why" that needs to be asked. A customer may think they want to sort, select, and aggregate the data, but fundamentally "get the data" is very rarely the real reason for doing something. That data is used to make a decision, and it's important that developers seek to understand exactly what that decision needs. Your users will often walk their way into a bad solution to their real problem because they will use their (incomplete) understanding of what is available.