5 ms·
I think about this from the perpective of change management. Every defect I hope to fix entails a change, which has a certain probability of creating another i
by d4rkn0d3z 1y ago
I think about this from the perpective of change management. Every defect I hope to fix entails a change, which has a certain probability of creating another irksome deficiency or incompatibility. When building complex systems I try to design them with the end state, that you describe very well, in mind.
Each time you set about to make a single change ask what is the probability (p) that this change results in another change, or track this probability empirically, then compute 1/(1-p) this will tell you how much change you should "expect" to make to realize your desired improvement. If you have n interacting modules compute 1/(1-np). This will quantify whether or not to embark on the refactor. (The values computed are the sum of the geometric series in the probability which represents the expectation value)
So this is about how we manage change in a complex system in order to align its functionality with a changing environment. I suggest that we can do so by considering the smallest, seemingly innocuous change that you could make and how that change propagates through to the end product.
In the end, a solution may be to make systems that are easy and painless to change, then you can change them often for the better without the long tail effects that drag you down.
- rocqua 1y agoThe N systems case equation has to be wrong. I think you need either 1/(1-p)^n or 1/(1-p^n)
- d4rkn0d3z 1y agoI think it says 1/(1-np).
- d4rkn0d3z 1y agoIt is easy to see this by forming the geometric series and rearranging terms, the standard Euler trick.
- rocqua 1y agoThat's what it says in the original post. It is also non-sensical. If the probability is 10% (p=0.1), and the number of systems is 11 (n=11), then you get 1/(1 - 11*0.1) which is -10.
- rocqua 1y agoI tried working this out, but I think the original was correct. The cases where the answer is negative correspond to a 'runaway scenario' where every change is expected to cause more than 1 extra change. So the answer is 'nonsensical' (because that is indeed where the formula for geometric series no longer works) but the true answer is infinity.
- d4rkn0d3z 1y agoCorrect!
- d4rkn0d3z 1y agoValid for n*p < 1, geometric series convergence, I should have mentioned.
- TeMPOraL 1y agoDoes this help explain why any simple household activity has a frustrating ~50% chance of turning into a string of dependencies and dependents that make you spend 10x the time you expected on it all? E.g. you figure it'll take a minute to take the trash out and wash your hands. But on the way you discover you run out of trash bags, and while washing your hands you run out of soap, then as you pick the refill bottle from storage some light items fall out, and you need to put them back into a stable configuration, then you spilled a bit of soap during refilling so you need to clean up, but you just run out of paper towels, and...
- deleted 1y ago[deleted]
- kmanraj 1y agoWhat you've described is called "yak shaving", which is a series of neverending tasks that must be completed in order to complete the original task. It's apty named since shaving a hairy yak is a neverending task.
- TeMPOraL 1y agoRight. I know the name (though it took me longer than I want to admit to connect the term with situations outside programming!) - what I now seek to know is, how to minimize it in personal life. Letting go is probably most people's answer - nothing bad will happen if I do all the dependent tasks (cleanup, restocking things that just run out) later in the day - but I have difficulty getting them out of my head, they keep distracting me until they're completed.