I’ve been working with a bunch of independent Ruby projects lately and struggling with
bundle to get the Ruby sandbox for each just right. Then while working on some Android code I hit upon
gradlew which sandboxes the gradle environment.
I’ve begun to feel like my machine is just a series of sandboxes strung together as opposed to a coherent computer, and while that may seem awesome (bio-diversity rocks!), the diversity goes hand in hand with operational complexity. You end up producing a greater and greater variety of incompatible software, the slightest version skew brings the house down and if your sandboxing fails you, there’s rarely a safety net.
Add to that the fact that
homebrew is treating
/usr/local like a globally shared folder on my machine, requiring what should be read-only system software to be world writeable! Yup, you guessed it, things end up getting corrupted/removed accidentally in the normal course of use.
I’m really getting frustrated with the operational quality of a lot of the software I’m dealing with. As someone who manages people and machines as well as actively develops, I’m more sensitive to this. Sure it allows for rapid changes to complex software but if you can’t reliably deploy and maintain the stuff, you’re just backloading the cost from development to your QA and Dev-Ops folks.
Developers, please resist the urge to use shiny tools that let you quickly cobble together systems that you can only guarantee “runs clean on my machine for now”.
Here’s an interesting article that agrees with me on the problem, but not the solution DevOps Isn’t Killing Developers.