Kill It with Fire: Manage Aging Computer Systems (and Future Proof Modern Ones)
Rate it:
Open Preview
Kindle Notes & Highlights
85%
Flag icon
But the point of this type of model is not to plan a road map or budget head count. It’s to help people consider the engineering team as a system of interconnected parts. Bad software is unmaintained software. Future-proofing means constantly rethinking and iterating on the existing system.
85%
Flag icon
People fail to maintain services because they are not given the time or resources to maintain them.
85%
Flag icon
Organizations choose to keep the bus moving as fast as possible because they can’t see all the feedback loops. Shipping new code gets attention, while technical debt accrues silently and without fanfare. It’s not the age of a system that causes it to fail, but the pressure of what the organization has forgotten about it slowly building toward an explosion.
86%
Flag icon
The hard part about legacy modernization is the system around the system. The organization, its communication structures, its politics, and its incentives are all intertwined with the technical product in such a way that to move the product, you must do it by turning the gears of this other, complex, undocumented system.
86%
Flag icon
high-functioning organization cannot have all feedback loops open all the time. It must decide which loops have the biggest impact on operational excellence.
86%
Flag icon
Throughout this book, I have emphasized thinking about modernization projects not in terms of technical correctness but in terms of value add because it re-establishes the most important feedback loop: Is the technology serving the needs of its users?
87%
Flag icon
Dealing with this reality gets easier when you accept failure. Failure is inevitable when attempting to change complex systems in production. There are too many moving parts, too many unknowns, and too much that needs to be fixed. Getting every single decision right is impossible.
87%
Flag icon
Don’t forget: a perfect record can always be broken, but resilience is an accomplishment that lasts. Embracing failure as an organization diminishes the risk of empowering the operator and gets better performance from engineers.
87%
Flag icon
To most software engineers, legacy systems may seem like torturous dead-end work, but the reality is systems that are not used get turned off. Working on legacy systems means working on some of the most critical systems that exist—computers that govern millions of people’s lives in enumerable ways. This is not the work of technical janitors, but battlefield surgeons. It has been the greatest honor to serve among them.
1 3 Next »