Maintaining a legacy application can make you feel like mice in a maze. In this article Ping Chen shares her experiences on how to pragmatically maintain a large legacy application. "Pragmatic” is the operative word; since a legacy application can have lots of technical debt, one has to be strategic in choosing the right battles.
Given the fact that the bulk of a developer's work is maintaining and enhancing existing code, Fabian Kiss makes the case for a lightweight approach to documenting the rationale and decision process behind design decisions to help later developers tie the source code syntax to its meaning in the application domain. Using simple tags and clearly thought out rationale to provide just-enough value.