Well, in the real world I find that you don’t understand the problem you want to solve until you’ve applied a working solution to it. Practically speaking I tend to deliver quickly to accelerate the process, then refactor once all the requirements have been exposed. As mentioned here, this probably doesn’t project well in an interview. It’s a case where the most efficient practice is not the most presentable one. I’ve failed interviews for this reason too. Lessons learned!