Preferences

d4rkn0d3z parent
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.


TeMPOraL
Does 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...

kmanraj
What 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
Right. 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.

> how to minimize it in personal life.

Structure, order, habits.

d4rkn0d3z OP
Arrange things so they are easy to change.
d4rkn0d3z OP
It is remarkable how small p has to be for change to be cost effective.
When reality doesn't match your expectations, why do you blame reality instead of your expectations? Especially for thing like running out of soap, trash bags or towels that should be at least 90% in your own control.
Philpax
A visual depiction: https://youtu.be/AbSehcT19u0
rocqua
The N systems case equation has to be wrong. I think you need either 1/(1-p)^n or 1/(1-p^n)
d4rkn0d3z OP
I think it says 1/(1-np).
rocqua
That'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
I 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 OP
Correct!
d4rkn0d3z OP
Valid for n*p < 1, geometric series convergence, I should have mentioned.
d4rkn0d3z OP
It is easy to see this by forming the geometric series and rearranging terms, the standard Euler trick.

This item has no comments currently.