Some systems manage to stay coherent as they grow, while others seem to lose their shape almost immediately.

I’ve been thinking about this through a metaphor from physics: surface tension — the quiet force that helps structures keep themselves together.

Here’s a short reflection on how that idea maps to software systems and why certain architectures resist chaos better than others.

https://iamstelios.com/blog/surface-tension-of-software/

  • Love the fresh take. Thanks for sharing.

    Glad you liked it!

  • So… we want interfaces rigid enough to guarantee all sorts of invariants, and enough freedom to change things around. That second part should easily be achieved by making sure the interface/implementation ratio is high. In other words, classes should be deep.

    Funny how much advice can be reduced to just this.

  • [removed]

    You’re right — once a system grows, especially when a new microservice or team enters the picture, the idea of one coherent “surface” gets disrupted. Real architectures aren’t peaceful bowls of water; they’re constantly hit by new forces — shifting ownership, changing priorities, and the occasional duct-tape fix.

    But that’s actually what the post was pointing toward:

    But tension has its limits. Too much and water hardens into ice — flawless, unmoving, lifeless. Software can freeze the same way, becoming so rigid it forgets to flow. Balance lives somewhere between order and change, between holding on and letting go.

    When new forces appear, the tension doesn’t disappear — it redistributes. You stop expecting the entire system to hold together as one smooth surface. Instead, tension settles into smaller pockets: within domains, within components, around the transitions that still need coherence. Each part gets its own threshold, shaped by the pressure it’s under.

    So yes, reality is messy, and the metaphor isn’t pretending otherwise. It simply shifts granularity. Some areas stay taut because the meaning must hold; others stay looser so the system can move with the world around it. Even in the chaos of services and teams, that balance between rigidity and elasticity is still what keeps the whole thing from collapsing.