
For me two things stood out:
- You need a solid and clean design + automated testing if you want to be able to change your software later. While this should be obvious it is still not the case in our industry that all developers use and care about techniques like encapsulation, tell don't ask, dependency injection, unit testing,...
- It is important that you do not make any premature decisions regarding your design. Always wait until the last possible moment for making a decision especially if this descision is hard to reverse. This rule can be applied not only to software but to every important descision which has to be made. For example Giuliani writes about this topic in his book Leadership.