Better to ask first.
Problem is that systems analysis is a lost art. People don’t know HOW to ask.
People know what they want. They just don’t know that they know.
Here are just a few to the things you have to do (that almost no one does anymore) in order to elicit requirements:
- Spend time with users doing what they do, asking questions until you understand how things work. If this means sitting at their desk, following them around their office/factory/route, or wading hip deep in , then DO IT.
- Ask questions to groups of people at the same time, so they can argue with each other and learn together what’s really needed.
- Ask lots of “Yes/No” questions.
- Ask lots of “On a scale of 1 to 10…” questions.
- Ask lots of “What is the probability that …” questions.
- Cover the wall with paper and draw pictures of EVERYTHING. Leave the paper there for all to see for weeks. Let them understand and learn together.
- Put every piece of paper they use in their jobs (or personal life) on the wall, so they (and others) can really see what they have to deal with on a daily basis. Not blank sheets, but paper with real data on it.
- Identify every data element. How do you know when you’re done? Keep asking until there are no more answers.
- Feed people while you ask them. (Amazing how smart people get while eating pizza.)
- Then (and only then) give them a prototype to play with. (I suppose here is where your “measure” comes in to play.)
- Exactly right? No? Keep going until it is.
Aside from the prototype, we haven’t written a single line of code. Is this hard? Absolutely. Maybe that’s why most of us don’t do it anymore. Does it work? It you know what you’re doing: every time.
(Aside: Notice I never mentioned using crap like Rational Rose or UML. That stuff was never meant to help this process. It was meant to make people who don’t know what they’re doing appear as if they did. Built an industry by paying junior people $50k and billing them out at $250/hour.)