KISS principle

KISS – "keep it simple, stupid" – is a design principle that holds simplicity should be a primary goal of design, and that unnecessary complexity should be avoided. Most systems work best when they are kept simple rather than made complicated, and the principle is a reminder to reach for the simplest solution that genuinely meets the requirement.

The acronym was reportedly coined by Kelly Johnson, lead engineer at the Lockheed Skunk Works, the team behind the U-2 and SR-71 spy planes. The U.S. Navy is recorded using it from 1960, and it was in general circulation by 1970. Johnson framed it as "keep it simple stupid", with no comma. The "stupid" refers to the designer, not the user, and the instruction is to resist the urge to over-engineer. The illustrative story has Johnson handing a design team a handful of tools and challenging them to make a jet aircraft an average mechanic could repair in the field, under combat conditions, with only those tools. Simplicity here is a constraint born of the operating environment, not a matter of taste.

KISS is not specific to software. It originated in aerospace engineering and has been adopted across design, communication, and management. In software it functions as a standing counterweight to accidental complexity: the difficulty a system presents that comes from the choices its designers made, rather than from the problem itself. Every abstraction, indirection, and speculative feature added "just in case" is a cost the next reader, tester, or maintainer has to pay, and KISS argues that cost should be incurred only when it earns its keep.

Simplicity in this sense is not the same as being simplistic. A simple solution can still be sophisticated. The goal is the minimal abstraction that meets the need, not the shallowest one. The principle constrains the design space, not the quality bar. A solution that is simple but wrong, or simple but unreadable, is not what KISS is asking for. Once a simple solution is proven, refactoring can deepen it as understanding grows.

KISS is one of a family of pragmatic design principles that point the same way. YAGNI warns against building for hypothetical needs. DRY warns against duplicating knowledge. The do the simplest thing heuristic asks for the minimal solution that could possibly work. Worse is better makes a related but distinct claim, that simplicity of implementation matters more than simplicity of interface, and that incomplete-but-simple systems tend to outlive complete-but-complex ones. The rule of least power extends the same instinct to the choice of language, preferring the least expressive language that still solves the problem. The Unix philosophy applies the same instinct to small composable tools, and the grug-brained developer persona is its popular caricature.

Like any principle, KISS misleads when applied dogmatically. "Simple" is a judgment about a specific audience and context, and what is simple to one reader is opaque to another. The principle is most useful as a question – "is there a simpler thing that would work here?" – rather than a license to cut corners.

See also

References