Document Your Assumptions and Your Decisions. Keep a journal for retrospectives.
The human memory isn't very good -- at least mine isn't -- so it makes sense to keep a journal of the design decisions you've made as you've implemented the system. The code will tell you what decision you made, but often times it won't tell you why you made that choice. As the system evolves, those whys can become important as new decisions need to be made. Did you assume that the system would be operating on a fast, reliable network? Did you assume that nobody would ever want to manipulate that particular sub-system so no RESTful API was put in place? Having a search capable repository of your decisions is useful in retrospectives as well as answering the age old question of "why did we do that again?" I use a wiki to keep my notes, mainly because it is easy to use and is easily searched.