Grow it, don't build it
John Graham-Cumming wrote up a fantastic list of things he's learned about programming. There all great. Yet, I really resonated with #6. So. True.
It's easier to grow software than build it […] When you create a massive architecture from the start you (a) get it wrong and (b) have created a Byzantine maze that you'll find hard to change. If, on the other hand, you work from small pieces that communicate with each other, refactoring will be easier when you realize you got it wrong from the start.
Hat-tip to Jonathan Christopher for the article link.