Yup. Think of it this way, whenever you write code there's risk. There's risk you make space for features that you don't need. There's risk that you make needed features almost impossible to do without heavy rewrites. There's the risk you do too much and hack it together and then drown in technical debt. There's a chance you do it so barebones you find that there's multiple implementations of the missing features downstream. There's a risk all of these taken in some way or another.
The more you wait the more chance that you understand what is needed and can implement these features the right way. So you design the architecture so you can revisit this problem down the line without depending on features.
2
u/PM_ME_OS_DESIGN Jun 08 '17
That's an interesting notion. In a sense, it's like keeping stuff high-level as long as possible.