Explaining Software Design
Subscribe
RSS
Archive
structures as paths
October 9, 2024
In the fractal-metaphor, our software is an open space. Each reader traverses that space, noting new details as they come into view. When our software is...
decoupling in depth
October 2, 2024
In his influential paper On the Criteria To Be Used in Decomposing Systems into Modules, David L. Parnas offers some simple, timeless advice: if two things...
similar, but different
September 25, 2024
In the software design literature, cohesion is often referred to by a different name: single responsibility. As Sandi Metz explains it: When everything in a...
transparent like frosted glass
September 18, 2024
Sherry Turkle wrote her study of the culture of computing, The Second Self, "on an Apple II computer that had, quite literally, been torn bare."1 Its...
the simplicity of a fractal
September 10, 2024
Previously, we've looked at code generation in both Rails and Thrift. But unlike Thrift, the code generated by Rails is meant to be changed. Any change is...
the simplicity of a limb
September 3, 2024
In their paper on Evolvability, Marc Kirschner and John Gerhart discuss the separation of concerns within our genetic code. They pay special attention to...
better explanations through coupling
August 27, 2024
Previously, we explored how coupling and cohesion are not separable concepts. When our software is cohesive, everything fits. Each part is shaped by its...
glossary
August 23, 2024
complexity The sum of every explanation. Weighted heavily towards future explanations. Measured in bits, but only relative to your audience's expectations....
coupling as co-explanation
August 20, 2024
Previously, I provided a brief introduction to this newsletter, and then analyzed the structure of explanations in software development. For many in the...
the anatomy of an explanation
August 12, 2024
Previously, I provided a brief introduction to the ideas that will be covered in this newsletter. Software development can be reduced to a single, iterative...
a brief introduction
August 6, 2024
As software designers, our goal is to reduce complexity. We want our software to be easier to understand, and easier to change. These are not distinct...