Software Design - Complexity (Small steps)

Card Puncher Data Processing


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.

Dr. Pamela Zave

Discover More
Card Puncher Data Processing

has: garbage collection, a package system, first-class functions, lexical scope, a system call interface, and immutable strings in which text is generally encoded in UTF-8. But it has...
Card Puncher Data Processing
Software Design - Abstraction Layer

Abstraction is a technique for hiding complexity that is irrelevant to the targeted user (ie targeted business domain). A designer should not know which electrons flow in the wire to defined its color....
Card Puncher Data Processing
The Art of Programming - Information System and Software Design

The Art of Programming - Information System and Software Design This section is about how to use the basic block of a language in order to create high order component. Abstract:_The_Art_of_DesignThe...

Share this page:
Follow us:
Task Runner