O'Reilly logo

97 Things Every Software Architect Should Know by Richard Monson-Haefel

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 2. Simplify Essential Complexity; Diminish Accidental Complexity

Neal Ford is a software architect and meme wrangler at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery. He is the designer/developer of applications, instructional materials, magazine articles, courseware, and video/DVD presentations, and he is author and/or editor of five books. He also speaks at lots of conferences. You can assuage your ravenous curiosity about Neal at http://www.nealford.com.

Neal Ford
image with no caption

ESSENTIAL COMPLEXITY REPRESENTS the difficulty inherent in any problem. For example, coordinating a nation’s air traffic is an inherently complex problem. Every plane’s exact position (including altitude), speed, direction, and destination must be tracked in real time to prevent mid-air and runway collisions. The flight schedules of aircraft must be managed to avoid airport congestion in a continuously changing environment—a severe change in weather throws the entire schedule out of whack.

Conversely, accidental complexity grows from the things we feel we must build to mitigate essential complexity. The antiquated air traffic control system used today is an example of accidental complexity. It was designed to address the essential complexity of controlling the traffic of thousands of airplanes, but the solution itself introduces its own complexity.In ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required