Beyond Legacy Code
Nine Practices to Extend the Life (and Value) of Your Software
by David Scott Bernstein
Version: P1.0 (August 2015)
Copyright 2015 The Pragmatic Programmers, LLC. This book is licensed to the individual who purchased it. We don't copy-protect it because that would limit your ability to use it for your own purposes. Please don't break this trustyou can use this across all of your devices but please do not share this copy with other members of your team, with friends, or via file sharing services. Thanks.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC.
Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein.
About the Pragmatic Bookshelf
The Pragmatic Bookshelf is an agile publishing company. Were here because we want to improve the lives of developers. We do this by creating timely, practical titles, written by programmers for programmers.
Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://pragprog.com.
Our ebooks do not contain any Digital Restrictions Management, and have always been DRM-free. We pioneered the beta book concept, where you can purchase and read a book while its still being written, and provide feedback to the author to help make a better book for everyone. Free resources for all purchasers include source code downloads (if applicable), errata and discussion forums, all available on the book's home page at pragprog.com. Were here to make your life easier.
New Book Announcements
Want to keep up on our latest titles and announcements, and occasional special offers? Just create an account on pragprog.com (an email address and a password is all it takes) and select the checkbox to receive newsletters. You can also follow us on twitter as @pragprog.
About Ebook Formats
If you buy directly from pragprog.com, you get ebooks in all available formats for one price. You can synch your ebooks amongst all your devices (including iPhone/iPad, Android, laptops, etc.) via Dropbox. You get free updates for the life of the edition. And, of course, you can always come back and re-download your books when needed. Ebooks bought from the Amazon Kindle store are subject to Amazon's polices. Limitations in Amazon's file format may cause ebooks to display differently on different devices. For more information, please see our FAQ at pragprog.com/frequently-asked-questions/ebooks. To learn more about this book and access the free resources, go to https://pragprog.com/book/dblegacy, the book's homepage.
Thanks for your continued support,
Dave Thomas and Andy Hunt
The Pragmatic Programmers
The team that produced this book includes: Jacquelyn Carter (editor) Potomac Indexing, LLC (indexer) Liz Welch (copyeditor) Dave Thomas (layout) Janet Furlow (producer) Ellie Callahan (support)
For customer support, please contact .
For international rights, please contact .
Table of Contents
Early praise for Beyond Legacy Code
Beyond Legacy Code presents a fresh perspective on the modern software development process. Engineers will find solutions to their day-to-day challenges. Non-engineers will gain an appreciation for the challenges and difficulties of making software.
Stas Zvinyatskovsky |
Senior Principal Software Architect, Yahoo |
David helps us see how we got where we are. He gives us things to do that will help us. He gives us deep matters to think about. This book is a gift to people who care about software. Take advantage of it.
Ron Jeffries |
RonJeffries.com |
If you feel stuck and powerless to improve your software delivery process, this book will offer years of experience distilled in just a few core ideas. This is a great book for anyone starting on a journey toward frequent iterative delivery, and for those people who tried adopting an agile process and failed to get the big benefits.
Gojko Adzic |
Partner, Neuri Consulting LLP |
This book provides great discussion on what things I can do to make customers happy and also to keep them happy as their needs change.
David Weiser |
Software Engineer, Moz |
Its a good read for any developer or manager, working on any type of code in any company.
Troy Magennis |
Author of Forecasting and Simulating Software Development Projects , CEO Focused Objective |
Davids explanations are so clear I am hopeful even managers of development teams and leaders running companies who build custom software will pick up this book and understand these practices that allow us to build software that is economical to own, maintain, and enhance.
Jim Fiolek |
Software Architect, Black Knight Financial Services |
Throughout the book there were points that gave me a sense of reliefwhere I would think if only we could get people to follow these few principles our life, and software, would be so much easier and less stressful.
Nick Capito |
Director of Software Engineering, Unboxed Technology |
We fight to make every line of code we write part of a real live product. Find out how that fight sometimes leads us astray. Find out how to make you and your team much more productive in building real live products that customers want now AND tomorrow.
Michael Hunter |
Geek, Hacker, Principal Engineer, Architect |
Foreword
Legacy
A legacy is the part of the dead that remains influential.
A life that leaves a legacy has been a good one. Not so for software. We use the polite term legacy for code that has lost all sense of vitality even though it might run every day and exert the unchanging influence of past decisions on all who for whatever reason are unable to walk away.
We distinguish software from hardware. We call hardware hard because we think of it as fixed, unlikely to change without screwdriver in hand. We call software soft because it is made up of ideas, expressed as code, loaded into hardware to make something useful.
The irony of our industry is that code turns out to be harder than hardware when it is thought to be finished and the developers dismissed.
Software comes to life when developers express wants and needs as decisions in the logic of programming. Its like making something out of nothing until we recognize all of the careful reasoning that goes into making the new life the one we want.
Agility
We say an organization is agile when it responds to threat and opportunity in ways uniquely of the moment. An agile organization is informed by history but not shackled to practice encoded in software not likely to be revised soon.