← Back to context

Comment by mywittyname

4 years ago

I feel like the Unix philosophy of very small programs that do one thing, and do it well, is an application of the concepts in this article.

> One of Naur’s main conclusions is that making changes to an existing program (to accommodate changing requirements) is often more costly than writing new code from scratch, at least if done by people from a different team. This is because there are intangible aspects of the model/theory in the programmer’s heads, which can’t be expressed in code and documentation:

Small, single purpose applications require less maintenance (which is expensive), but proper design allows them to be combined to create more complicated programs.

But to compose something large you begin to need hundreds of these small tools interacting.

Do you build slightly larger tools that integrate the small tools? Even these larger tools my need to be composed into another level of abstraction to build the final system.

This is essentially the same architecture that you would build with a layered set of abstractions and interfaces.

It's really just a matter of how the different bits communicate that is different.