I pretty much concur with Rafe on the use of comments and documentation. Ideally you have:
- an architecture outline/overview – this helps you understand how decisions are approached
- a few code comments – these help bring clarity to any code that isn’t obvious
- developer journals – where notes, ideas, casual decisions, code experiments and other odds and ends get captured
I think developer journals are underrated and I’m working to fix that.