Software Design - Complexity (Small steps)


vs Art of - Simplicity - Keep it Simple ( KISS )

Complexity emerges when high-level concept are expressed with lower-level language.


“Complexity is multiplicative”: fixing a problem by making one part of the system more complex slowly but surely adds complexity to other parts.

Doing some work twice later is often far less work that trying to mix 2 big things in a single change. Complexity is far from free. The associative complexity involved in reviewing, deploying, and debugging 2 big changes is often far greater than 1+1. Small steps instead. We're upgrading our SQL hardware and then changing OSes later. Is it more work? Maybe. But it's far simpler, easier to plan, and less risk.

Learn not to add too many features right away, and get the core idea built and tested.

Leah Culver

Controlling complexity is the essence of computer programming.

Brian W. Kernighan

The purpose of software engineering is to control complexity, not to create it.

Powered by ComboStrap