> IMHO, the best way to do it is to be sitting with the expert, and observe exactly what they do.
Or you give them a prototype of the program, and see what they complain about?
My experience is that invariably results in "development by veto". Each prototype they say that's not what I want, give me something else (that I'll fail to describe just like the last time) and I'll tell you that is wrong too after you've worked on it for a few weeks.
Occasionally, you'll randomly get something they accept - but only for a few weeks until they come across some missing capability for some other thing they never told you about.
Oh, you're onto something. May I slap a sticker on it and call it "agile"?