On Systems Thinking
Junior engineers think in features. Senior engineers think in systems.
The difference isn't intelligence or experience. It's the mental model. Feature-thinking asks "how do I implement X?" Systems-thinking asks "what happens to the rest of the system when X exists?"
Developing systems-thinking takes deliberate practice:
- Read postmortems — for the chain of causation
- Draw the diagram — before you write code
- Ask "what happens when this fails?" — for every component
- Think about time — data gets stale, caches expire, clocks drift