Agile Project Management with Scrum
by Ken Schwaber
Code Complete, Second Edition
by Steve McConnell
Agile Testing: A Practical Guide for Testers and Agile Teams
by Lisa Crispin; Janet Gregory
Agile Project Management with Scrum
by Ken Schwaber
Growing Object-Oriented Software, Guided by Tests
by Steve Freeman; Nat Pryce
Agile Estimating and Planning
by Mike Cohn
"Over the years I have seen the software development pendulum swing from one extreme to the other, as deficiencies in 'best practices' at one end of the spectrum spawned a new set of 'best practices' at the opposite end. Kevin Tate's book has finally brought the pendulum to a screeching halt, right about dead center. This book provides a balanced and practical guide to what's important if your goal is to develop software that lasts."
—Mary Poppendieck, Poppendieck.LLC. Author of "Lean Software Development"
"1) In this very practical and accessible book interspersed with real-world examples and personal opinions, Kevin has distilled his years of developing quality software into a set of principles and practices that have been proven to work. If you are thinking of introducing an agile development environment (ADE) into your organization or of improving the one you already have, this book will help you clearly understand the benefits of a sustainable ADE, establish the practices to make it happen and coach you through the follow-up required to change the culture of your organization to make sure the changes take hold.
I am currently faced with exactly this challenge and this book has already given me several ideas I am looking forward to trying out.
2) In an industry plagued with missed deadlines despite long overtime hours, this book offers a refreshing alternative: a set of guiding principles and simple practices to follow that allow you to get the job done by working smarter, not harder. Drawing on the author's extensive experience developing quality software, the book clearly explains the principles behind a sustainable agile development environment, why it works, the practices to make it happen and the follow through required to turn these practices into habits."
—Peter Schoeler, Technical Director, Artificial Mind & Movement
"It's a familiar scene—the schedule's tight, people are putting in heroic efforts to get everything done, then at the last minute a change request comes in that wipes out the gains you had finally managed to make in meeting your ship date. Looks like it's pizza at your desk for the weekend again! An unfortunate situation to be in but a pattern that repeats itself all too often. "Sustainable Software Development" offers hope to break this cycle. It shows how a change in mindset can free you from the tyranny of unrealistic expectations and brings development realities out onto the table for everyone to see. By following these techniques you will be able to define and manage a software development environment that will work for the long haul."
—Kevin Picott
Software development for immediate success and long-term sustainability
Sustainable Software Development brings together principles and practices for building software that is technically superior, delivers exceptional business value, and can evolve rapidly to reflect any change to your business or technical environment.
Kevin Tate shows how to eliminate practices that make development unsustainable and replaces these practices with a sustainable approach that draws on the best ideas from both agile and conventional development. Tate demonstrates how to balance rapid releases and long-term sustainability, achieving both rich functionality and superior quality. You'll learn how to build a development organization that is more productive and can continually improve its capability to handle complexity and change.
Writing for developers, architects, project leaders, and other software team members, Tate shows how to:
Take control of your development environment, so you can outship your competitors, leveraging new technologies and responding to new business opportunities
Maintain a consistent pace that optimally balances short- versus long-term requirements
Keep your code base in a "near-shippable" state between releases
Prevent defects, rather than just recognizing and fixing them
Invest continually and cost-effectively in software design improvements
Leverage the fundamentals of the craft of software development
Integrate sustainable processes with Agile and traditional methodologies
© Copyright Pearson Education. All rights reserved.
Average Amazon.com® Rating: ![]()
![]()
![]()
![]()
Based on 7 Ratings
don't use architecture as a metaphor for software design - 2006-07-03
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Perhaps the single best point made in this book is in the Introduction. As a programmer, you are probably aware (actually you SHOULD be aware) of what design patterns are, even if you don't know too many of them. Famously, these grew out of observations made in architecture, that there are a few very common design patterns in modern buildings and city planning. It has been found in programming that design patterns are indeed a key observation. But an unfortunate consequence was that architectural design is also taken to be a good metaphor for software design. Many programmers believe this. Tate certainly believes that metaphors are vital for understanding software. But the metaphor of architecture is a dreadful choice. A building is fixed, after it is completed. Very difficult to make significant structural changes. Often, if pushed, one has to demolish the building and start over. Yet software is commonly asked to be continually changed. Certainly, this is true of successful, widely used code. The peril of the architecture metaphor is that believing in it elides one into a monolithic waterfall approach to software design. The waterfall is now widely recognised as badly flawed.
Even if you take nothing else from this book, the above is well worth your time in understanding the limits of metaphor. While it sounds like an abstract literary finesse, using the wrong metaphor can lead to a bad design process.
The bulk of the text has many suggestions about designing and programming, in the expectation that the code will have to be continually modified. Without getting too close to Extreme Programming, which has many detractors of its own.
One suggestion is that the long hours put in by a team is not necessarily a sign of strength. A team might occasionally do this, to meet a deadline. But too often can be a symptom of misdesign and mismanagement. As well as lowering the productivity of the group.
Another suggestion is simply to fix all bugs as soon as they are known. Before going on to add new functionality. This helps you maintain a stable base, and prevents the number of bugs from exploding.
There are more suggestions. Most, like those above, have been known for decades. The book is a useful collection of these.
A good read for any developer - 2009-05-24
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
"Sustainable Software Development" provides an excellent presentation of the principles and practices required to achieve a consistently high level of productivity in an agile environment.
The material presented in this book supports two important concepts of agile development according to the author; building adaptable teams and building adaptable products.
The author makes a very good argument early that all software development activity should be in support of producing a quality product. From design, to implementation, to testing, and deployment all activities should focus on developing a working product at all stages with the goal of preventing defects. All developers would like to believe their practices are focus on producing a quality, defect-free, product. Yet, all to often, regardless of intent or belief, the reality is that development activities may not be contributing to producing a quality product.
Kevin starts with explaining the advantages of sustainable software development using several analogies. The fundamental concept is by adopting good development principles and practices, a synergistic effect will be produced and enable even greater development capacity with the additional effect of reducing defects.
The second chapter is devoted to defining unsustainable software development and its causes. First understanding the causes of unsustainable development sets the stage for the discussion of sustainable development. The author argues that to achieve sustainability and organization must understand the stresses that promote unsustainable development and make appropriate adjustments to their practices.
In chapter 3 the notion that principles are more important than practices with respect to achieving sustainable development. The author suggests that having a set of principles that guide the activities of development naturally leads to a set of best practices. The author concludes this chapter claiming that mindset and culture are more important than practices.
The fourth chapter presents a simple concept that the product should always be in a working state. It should never be broken and always be ready for delivery. Maintaining a working product throughout a release cycle is key to maintaining sustained development. This also leads to a reduction in defects because many defects are detected during development before the product is delivered to the customer. The author presents 12 practices that will contribute to maintaining a working product. Continuous integration, nightly builds, coding standards and guidelines, and standards adoption are just four of the principles. Each of the 12 principles alone can improve product quality for any development team, but together they provide a multiplying effect that can catapult a development team from mediocrity to excellence.
Defect prevention is the topic of chapter 5. In a traditional development environment the focus is on defect detection, essentially finding and fixing the bugs, a code then fix approach. The author stresses that the focus should be on defect prevention, preventing defects by ruthless testing during the development process, the use of tools during development, pair programming and code reviews.
Chapter 6 is devoted to design and practices that support sustained development. In this chapter eight practices are presented. While some of the practices might be viewed as having an implementation focus, all have a direct affect of system design and the adaptability of the design. The practices cover design vision, guiding principals, and simplicity in design, refactoring, design patterns, frequent rapid design meetings, rearchitecture, and designing for reuse.
Chapter 7, "Continual Refinement", is about change with respect to the development team. The author sums up the purpose of this chapter in the first paragraph, "In order to achieve sustainable development, teams need a way to balance short-term requirements and long-term needs: to ship their product as soon as they can while accepting, anticipating, and even welcoming change."
The last chapter covers what is probably the most difficult aspect of creating sustainable development, "Culture Change and Sustained Development." This chapter is about introducing lasting change in a team or organization. While this chapter is not an extensive treatise of organization behavior, it does provide some insight into what needs to be considered to introduce change in a team or organization that will result in an organizational culture that promotes sustainable development.
This book should not be viewed as an instruction manual for establishing rules and procedures that will result in an team or organization that will achieve sustainable development. Rather than an instruction manual it should be seen as a signpost or guidebook that points you in the right direction, but it is up to you to make your way along the path.
A useful book on a much needed topic - 2008-07-24
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Sustainable Software Development by Kevin Tate is a useful and much needed book. It doesn't provide any groundbreaking new ideas or practices, but it summarizes a series of good practices which lead to long term sustainable development. Sustainable development is a topic that needs a lot more coverage since, in the world of fast projects and tight deadlines, lots of teams fall in the trap of unsustainable development and piles of legacy.
The book basically consists of three parts (not marked in the book). The first three chapters are an introduction to the four main chapters of the book. Each chapter describing a principle. The last chapter is "the change chapter" that somehow everybody feels needs to be in a book.
The first part consist of describing sustainable development and makes an analogy between a proactive maintenance in a chemical plant, suggesting that similar things are needed in software development. It also has some on the much unnecessary quotes to Good to Great (which really annoyed me). The second chapter looks at causes of unsustainable development and it seemed to miss the dynamics of unrealistic customer promises, instead it just considers the results of this dynamics. But still, one of the best cause analysis on unsustainable development I've seen. The third chapter introduces the four principles: Working Product, Defect Prevention, Emphasis on Design and Continual Refinement.
The second part has a chapter based on each of the above principles. Every chapter introduces related practices. Like the Working Product chapter talks about not leaving defects in the product, continuous integration and topics like that. Most practices can be found in different modern software development literature, but Kevin provides quite a good summary. Every now and then he felt he should not be "too agile" and tried mixing ideas with traditional development. I do think the book failed in this. Anyways, still one of the best summary of agile practices.
The third part is "the change chapter" which every book on new practices needs to have. It didn't contain much new ideas, though, one slight difference is that Kevin doesn't say, like much of these lame change chapters, "Change needs to be planned and tracked carefully and managed... blah blah". Indeed he recognizes that you cannot really control a change like this. Great insight.
In general, I liked the book and it was well written. I disliked the up-front design wording from the author, though, I think we would agree on the real content. It seemed like he felt he had to stay between the agile movement and his earlier experiences.
In rating, I was doubting between three and four stars. Three because the book doesn't bring very much new ideas, though, four stars, its a much needed summary of agile practices. I decided on four stars because I really enjoyed the authors stories about his experiences. For me that made the book and for that purpose, I'd recommend reading it.
Extremely useful!!! - 2008-07-19
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
This is one of the best books I've bought on this subject. It provides no nonsense advice and gives clear guidance from an extremely experienced engineer. I regularly refer to the book during my work week. Good stuff!
How to head off software problems at the pass - 2006-04-13
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
A powerful pick indeed. Kevin Tate's SUSTAINABLE SOFTWARE DEVELOPMENT: AN AGILE PERSPECTIVE blends basic software-building ideas and practices as they relate to the business environment, showing how to maintain a consistent pace, keep code base in readiness between releases, and prevent defects rather than doing damage control after. Chapters advocate flexibility, using ready tools for analysis, and understanding routines and approaches which encourage backlogs and poor releases.
Top Level Categories:
Software Engineering
Sub-Categories:
Software Engineering > Agile Computing
Some information on this page was provided using data from Amazon.com®. View at Amazon >