|
|
|
|
|
by jameshart
1025 days ago
|
|
Okay, so... in the coin flipping case, because entropy is already low, I follow the argument that generally attempts to add complexity are likely to make things worse. There's not much room to make things better to begin with. Not sure that it follow that the same conclusion applies in the cases of other engineering processes you listed, like "configuring a Linux base image for a specific server role" or "setting up a complex cloud environment from scratch" or... "approaching a stranger in a bar"? Those are already higher entropy processes, with more desirable and more undesirable outcomes, where telling the difference between desirable and undesirable outcomes is much harder to begin with, and so the general advice of 'expend energy to reduce the likelihood of undesirable outcomes' doesn't so immediately suggest that adding what you call 'complexity' is necessarily bad. There are MANY paths to reducing entropy in these sort of situations. Complexity that adds more outcomes can improve the situation in these cases if the new outcomes are both desirable and probable - or at least more probable than the undesirable outcomes they also add. I just think that if the conclusions from your toy example don't translate obviously to actionable insight into how to improve the toy example, it's unlikely they translate into actionable insight for how to improve real scenarios. |
|
^^^^^^^
I don't know if you have experience working this kind of thing but these processes have a single desired outcome and multiple undesired outcomes. They can break in many different ways and they do break more often than desired.
One simple case related to setting up a Linux instance is when you want to have the "latest and greatest" python libraries without even checking if the stable versions of an LTS distribution would actually suit you. You end up with a huge list of things from pip, a list that sometimes breaks (even with fixed versions) and where security updates do not guarantee retro-compatibility. One day it works, next day it doesn't.
Your process has more entropy than necessary and is less reproducible than desired.
If instead of a server instance you have a docker image that is rebuilt in a CICD pipeline, you have the same problem but blocking an entire team that is expecting CICD to work all the time.
This is just a single point of failure of many others that can coexist: a "corporate" transparent proxy with cache, an unreliable DNS server, a security appliance that interferes with downloads, etc.
As for rebuilding cloud environments you really have to go through it to see how entropy scales with complexity. I could write a couple of pages about it.. and about how people are actually building cloud snowflakes. Here is a short take:
https://logical.li/blog/devops/