Kill it with Fire is by Marianne Bellotti is a truly awesome book about
dealing with legacy systems. If you're in software you need to read it and this high-level summary is my attempt to persuade you to do that, right now.
What is legacy software? an existing system, onboarding is probably hard because of its age, design patterns are probably consistent but out of date, it will probably still scale if the infra scales.
(Note that tech debt generally isn't legacy by this definition, although that doesn't matter. Much of the book is relevant to both.)
How do we end up with legacy software? Choices made over time, decisions that seemed pragmatic, unexpected or undesirable constraints, re-orgs, accidents, compromises, ...
Why do we seem so keen to throw legacy software away? Because writing is easier than rewriting, because we bias to see only the positive possible outcomes, because we can try our favourite/new/cutting edge approach/tool/pattern, because we've lost the original context and it takes effort to uncover it, ...
Why do total rewrites actually fail so often? Because there will be loads you don't know and only find out later, because people tend to design the final system at the start, because treating a legacy system like the MVP for the first iteration of a rewrite is misguided: it's definitely not M and the fact that you're rewriting says it's also not V.
How can you help legacy projects to succeed? By aligning stakeholders, by framing things in terms of value and opportunity cost, by being humble about how much you know, by working in ways that keep options open, by setting clear goals, by knowing when to stop, ...
What can you do to delay the speed with which today's project becomes tomorrow's legacy? Make defining choices when you need to rather than because you want to, make the system understandable, remember that everything is a trade-off and be intentional about the way you trade the things off, think about your work in terms of the value it provides and who to.
What else is in the book?
- project management structures and when to use them
- legacy scenarios and possible approaches to each
- information gathering and meeting facilitation
- company politics and navigating it
- interpersonal relationships and team motivation
- designing teams and why not to re-org if at all possible
- migration strategies and how to check your work as you go
- saying when done is done and making success criteria
It's amazingly easy to read. Marianne clearly knows her tech but she knows
how to influence and deal with the business and people side of things too
and she gives numerous real-world scenarios with practical hands-on advice
for dealing with them. I genuinely can't recommend this book enough. It is 🔥
Image: https://imgflip.com/
Comments
Post a Comment