Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software (英語) ペーパーバック – 2015/8/3
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
We're losing tens of billions of dollars a year on broken software, and great new ideas such as agile development and Scrum don't always pay off. But there's hope. The nine software development practices in Beyond Legacy Code are designed to solve the problems facing our industry. Discover why these practices work, not just how they work, and dramatically increase the quality and maintainability of any software project.
These nine practices could save the software industry. Beyond Legacy Code is filled with practical, hands-on advice and a common-sense exploration of why technical practices such as refactoring and test-first development are critical to building maintainable software. Discover how to avoid the pitfalls teams encounter when adopting these practices, and how to dramatically reduce the risk associated with building software--realizing significant savings in both the short and long term. With a deeper understanding of the principles behind the practices, you'll build software that's easier and less costly to maintain and extend.
By adopting these nine key technical practices, you'll learn to say what, why, and for whom before how; build in small batches; integrate continuously; collaborate; create CLEAN code; write the test first; specify behaviors with tests; implement the design last; and refactor legacy code.
Software developers will find hands-on, pragmatic advice for writing higher quality, more maintainable, and bug-free code. Managers, customers, and product owners will gain deeper insight into vital processes. By moving beyond the old-fashioned procedural thinking of the Industrial Revolution, and working together to embrace standards and practices that will advance software development, we can turn the legacy code crisis into a true Information Revolution.
David Scott Bernstein has shared his passion for building software with thousands of developers at hundreds of companies around the world including IBM, Microsoft, and Yahoo. His firm, To Be Agile, helps teams adopt Extreme Programming practices such as test-first development, pair programming, and refactoring.
Among many other important topics, the author strongly emphasizes the need for quality, maintainable code. Something which many of us are the biggest victims of. Especially those bosses/mangers who think they got a good deal as they've pressed their dev team and got them to agree to a shorter time-frame. Well, that's gonna come back to bite them (us) later. As smart developers we must have standards for ourselves and not (always) succumb to these kinds of pressures. True, our bosses/managers might find someone who'll agree to do it quicker and they'll have their opinions of us for the short time, but ultimately we will prevail as it'll become clear and evident that our code is robust, understandable and easily maintainable. Of course we have to use our best judgement and decide on a case-by-case basis how much it's worth investing in the quality of the project.
I have come to realize the great benefits of Agile in terms of team cohesiveness, managing expectations, good communication, rapid development and quality code that is maintainable . As discussed in this book, many teams say they are agile while they truly miss the main points of agile and the only resemblance is that they stand while they have their daily meetings :). Agile has become the buzz word that all software teams and companies describe themselves as practicing as they know it's good marketing but 90% of them are totally not Agile. Even for those teams that are really invested in being Agile are still not truly on point, some of the founders of agile say that the agile practiced today is far away from the Agile they have created and therefore don't reap a fraction of the benefits they theoretically can.
Reading through Beyond Legacy Code, it reads like the numerous tutoring sessions David has delivered to me. Simple and practical coding advice for those with deep technical skills, and even those with light technical skills such as project managers. David has a deep understanding of the Agile value proposition and speaks to the specifics in a way that any team member can comprehend.
In all, a superb book I recommend to ever company and team I coach. You can gain some level of value from Agile with minimal focus on code, but if you want to be "great" you need to follow David's advice to extend the life and value of your software.
It's important to understand the use of the phrase "Legacy Code" in the title. As soon as you finish a piece of code and move on to the next task, it's legacy code - and everything from that point forward is maintenance. And as the author points out, maintenance costs far outweigh code creation. The nine practices the author spells out are designed to increase code quality in the first place and accordingly, reduce subsequent maintenance expense of the code you've written before.
But more than a list of software development best practices, the reason for the 5 stars is the way in which they're explained and substantiated. David's conversational style and the context he presents along side the advice given make the information easily digested by programmers and managers alike. As an individual that serves both roles, I find the book can be taken as a whole, painting a complete picture and as reference material.