Complexity

Managing, reducing, and hiding complexity in software and systems. The distinction between essential and accidental complexity, and the techniques that keep systems understandable as they grow.