Sometimes the way forward is back, and that’s not a retreat – on the wrong abstraction by Sandi Metz

I’ve seen problems where folks were trying valiantly to move forward with the wrong abstraction, but having very little success. Adding new features was incredibly hard, and each success further complicated the code, which made adding the next feature even harder. When they altered their point of view from “I must preserve our investment in this code” to “This code made sense for a while, but perhaps we’ve learned all we can from it,” and gave themselves permission to re-think their abstractions in light of current requirements, everything got easier. Once they inlined the code, the path forward became obvious, and adding new features become faster and easier.The moral of this story? Don’t get trapped by the sunk cost fallacy. If you find yourself passing parameters and adding conditional paths through shared code, the abstraction is incorrect. It may have been right to begin with, but that day has passed

Source: The Wrong Abstraction — Sandi Metz

Reading “The Practice of Cloud System Administration”

In distributed systems, failure is normal. Hardware failures that are rare, when multiplied by thousands of machines, become common. Therefore failures are assumed, designs work around them, and software anticipates them. Failure is an expected part of the landscape.
— Thomas A. Limoncelli, Strata R. Chalup, Christina J. Hogan, “The Practice of Cloud System Administration”

Reading “The Practice of Cloud System Administration”

A typical response to a risky process is to do it as rarely as possible. Thus there is a temptation to do as few releases as possible. The result is “mega-releases” launched only a few times a year. However, by batching up so many changes at once, we actually create more risk. How can we be sure thousands of changes, released simultaneously, will all work on the first try? We can’t. Therefore we become even more recalcitrant toward and fearful of making changes. Soon change becomes nearly impossible and innovation comes to a halt.
— Thomas A. Limoncelli, Strata R. Chalup, Christina J. Hogan, “The Practice of Cloud System Administration”

Seven Habits Reread

In the last analysis, what we are communicates far more eloquently than anything we say or do. We all know it. There are people we trust absolutely because we know their character. Whether they’re eloquent or not, whether they have the human relations techniques or not, we trust them, and we work successfully with them.
— Steven Covey, “Seven Habits of Highly Effective People”