3 ms·
Software fragility is actually very similar to physical fragility. Think of Jenga tower: the more blocks you have, the more fragile it is. And that is despite
by hbrn 4y ago
Software fragility is actually very similar to physical fragility.
Think of Jenga tower: the more blocks you have, the more fragile it is. And that is despite Jenga being nicely layered (each block has limited number of direct dependencies).
There are two main ways to decrease fragility:
1) lay out your blocks more carefully.
2) decrease the total number of blocks.
What's interesting, is that most software development practices focus on 1. How to make complex system less fragile? Use a big framework, do unit tests, use static typing, have protected branches, write documentation.
While the biggest payoffs are always in the reduction of blocks. KISS.
- issa 4y agoI could not agree more. I feel like there is constant push back against attempts at decreasing the total number of blocks.
- tosihakkeri 4y agoWhat if some problems simply are complex? How do you reduce the number of blocks then?
- hbrn 4y agoTypically you can't reduce the number of essential blocks. But what you can do is make them easier to comprehend through divide and conquer. Build two smaller Jenga towers instead of one big. You will have to sacrifice something (e.g. performance) for stability and clarity. Gotta be careful though. There's a religion that claims every 10-block Jenga tower should be built as 10 single-block towers.
- bitwize 4y agoYou have to accept some level of complexity in order to have the features users want. Suckless software is KISS AF, but a common complaint is that it is feature-poor and thus unpleasant to use.
- vendiddy 4y agoYears ago I was working on an architecture where multiple threads were processing data in parallel. But there were dependencies. I spent several weeks trying to figure out how to coordinate these processes. That is until someone suggested I design it so no coordination is needed at all. It was a good lesson learned. I was trying to solve a problem that shouldn't have been solved in the first place. It taught me to ask the question often: do I need this at all?
- fedeb95 4y agoYes, I am aware of this. Your points are valid, but I am trying to gather some proper research on actual projects about this and not just anecdotal evidence (which is fine, I have many too, but should be supported by something else ideally)