If you code out a solution to the problem in order to discover the problem space, I think the idea here is that you then can go back and write a better solution that accounts for all of the stuff you discovered via refactoring and whatnot. But you're not going to do that refactoring. You're going to ship it. Because it works and you don't know of any problems with it. Are there scaling problems? Probably, you haven't run into any yet. Does your solution fit whatever requirements other interested parties might have? Who knows! We didn't do any designing or thinking about the problem yet.
Am I going to ship it and not address scaling, refactoring, etc? What about discovery outside a code environment forces our hand on this?
Feels a bit to me like the real issue is not where discovery takes place but that crucial discovery steps are skipped for whatever reason.
I'm stuck somewhere in or around 1 & 2 below.
1) those other systems for discovery suck at capturing behaviors of complex systems compared to working code in motion. Happy to discuss, but I'd love if this were an obvious conclusion somewhere in the neighborhood of The Map is Not The Kingdom trope
2) skipping important steps in discovery sucks no matter where it occur. I've seen this institutionalized/practiced at both ends of the philosophical spectrum. I wasn't being sarcastic or facetious (much) about the questions above.
I'd love it if someone could help me move somewhere past the above. I think I might sleep better at night.
Someone tell me I'm not alone.