You need to build a system three times
- the first time you don't know what you actually need, it's an exploration, plan to throw it away
- the second time you think you know what you need so you over-architect, it'll be too restrictive, plan to throw it away
- the third time you build what actually works
I like to think I came up with it at LucasArts twenty years ago, but at this point I don't know if it was generally in the zeitgeist.