14 The Pragmatic Programmer (Part 2)

Tip 17: Eliminate Effects Between Unrelated Things

Design components that are self-contained, independent, and have a single, well-defined purpose.

Tip 18: There Are No Final Decisions

No decision is cast in stone. Instead, consider each being written in sand at the beach, and plan for change.