Simple Is Not Small
summary
True software simplicity is defined by decoupling rather than the size of the code or the individual tools used. While small tools are often mistaken for simple, they can be highly coupled, making them rigid and difficult to modify. By separating distinct concerns—such as data representation from type checking—developers can create systems that are easier to maintain and more flexible, even if the resulting codebase is larger.
key points
- Unix pipelines are often perceived as simple because they are small, but they are actually coupled because certain tools require specific input orders or dependencies, making simple changes complex to implement.
- Coupling occurs when different features are braided together, such as when a programming language couples type-checking to a fixed data representation, which limits runtime flexibility and iteration.
- Designing decoupled systems often requires more effort and upfront investment in the core engine, similar to how SQL or CSS provide a declarative interface that hides immense underlying complexity to keep the user's experience simple.
who should read it
Software engineers and architects who want to improve their system design by distinguishing between minimal code volume and architectural decoupling.
discussion skeptical
consensus
Commenters generally find the article's arguments flimsy and contrived, particularly the comparison between Unix pipelines and Clojure. Many argue that the author equivocates between 'smallness' (simplicity for the developer) and 'simplicity' (simplicity of the mental model for the user). There is a strong consensus that the Unix philosophy of extensibility via tools like awk makes the author's critique of shell utilities invalid.
top insight
The tension between different definitions of simplicity is framed as a conflict between the 'MIT/Stanford style' (simplicity of interface for the user) and the 'New Jersey approach' (simplicity of implementation for the developer). This distinction clarifies that developers are also users, and the reason some tools are preferred by 'nerds' while others are used by the general public often depends on which side of that simplicity divide the tool prioritizes.
Generated by an LLM from the article and thread. Check the sources before relying on it.