Appendix 4. Recommended Reading

Chapters 1 and 2: Sustainable Software Development, Unsustainable Software Development

[Christensen 2003] Clayton M. Christensen, The Innovator’s Dilemma, HarperBusiness, 2003.

[Christensen and Raynor 2003] Clayton M. Christensen and Raynor, Michael E., The Innovator’s Solution, Harvard Business School Press, 2003.

These two books should be considered classic business books. The innovator’s dilemma is that there is a risk that if you listen exclusively to your customers, a new wave of technology will come along to put you out of business. These books point out the need for companies to find ways to disrupt themselves, no matter how painful.

[Collins 2001] Collins, Jim, Good to Great, HarperBusiness, 2001.

This book is a business classic that describes the difference between good companies and great companies. No software companies are featured in the book, and perhaps that says something? There is much to learn from in this book, even if you are interested in a more limited topic such as the difference between good teams and great teams.

[Collins and Porras 2002] Collins, Jim, and Porras, Jerry I., Built to Last: Successful Habits of Visionary Companies, HarperBusiness, 2002.

There are elements of this book that I like a great deal, and others that I find dated today. My feelings about this book are perhaps jaded by an experience at a former company where a great deal of effort was put into formulating the company vision and mission, but it didn’t do one bit of good because of numerous bad decisions…

[Economist 2004] Make it Simple: A Survey of Information Technology, The Economist, October 2004.

If you can find a copy of this article, it is well worth reading. The article discusses what the author feels to be the largest problem with technology today: the need for simplicity. It will be particularly interesting to read this article in a few years, since the article mentions some up-and-coming technologies, many of which are likely to fail or be unable to live up to the hype.

[Norman 1999] Norman, Donald A., The Invisible Computer, MIT Press, 1999.

This is one of my favorite books on usability because it makes you think about simplicity. It describes the classic Crossing the Chasm [Moore 2002] problem in terms of usability and places usability on an equal footing in terms of importance with technology and marketing.

[Repenning and Sterman 2001] Repenning, Nelson P. and Sterman, John D., “Nobody Ever Gets Credit for Fixing Problems That Never Happened: Creating and Sustaining Process Improvement”, California Management Review, Vol. 43 No. 4, Summer 2001.

I was thrilled when I first found this paper because even though it is a study of chemical manufacturing plants and has nothing to do with software development, it speaks to many of the issues faced by today’s software organizations.

Chapter 3: The Principles of Sustainable Development

[Boehm and Turner 2004] Boehm, Barry and Turner, Richard, Balancing Agility and Discipline, Addison Wesley, 2004.

In my opinion, this book should be titled Balancing Agility and Ceremony. This is because the mistaken impression that some people have drawn from the title is that agility is the opposite of discipline. And that is most emphatically incorrect. Once you get past that point, this is actually an excellent book that describes a model for understanding and contrasting various approaches to software development and the challenges faced by different software projects.

[Buckingham and Coffman 1999] Buckingham, Marcus and Coffman, Curt, First, Break all the Rules, Simon & Schuster, 1999.

This is an excellent book that focuses on the difference between talents and skills. Skills can be learned, and, while some talents can be improved, they are largely born not made. The book contains a number of interesting chapters on topics such as helping people identify their talents and how to put people in positions where they can best utilize their talents.

[Demarco and Lister 1999] Demarco, Tom and Lister, Timothy, Peopleware: Productive Projects and Teams, 2nd Edition, Dorset House Publishing Company, 1999.

This is a software development classic and is highly recommended.

[Lundin et al 2000] Lundin, Stephen C., Paul, Harry, and Christensen, John, Fish! A Remarkable Way to Improve Morale and Boost Results, Hyperion, 2000.

This book takes only a few minutes to read and it is time well spent. The main theme of the book is that you can’t always choose what you work on, but you can choose how you do it. The difference is critical, and the more people who understand this message, the better the chance that the modern workplace could be transformed from drudgery to fun and inspiring.

[Lynn and Reilly 2002] Lynn, Gary S., Reilly, Richard P., Blockbusters: The Five Keys to Developing GREAT New Products, HarperBusiness, 2002.

Although this book is not about sustainable development or even software development, it is a good book about innovative product development. There are quite a few parallels between the methods described in this book and agile development methods: particularly about the need for iterative development (which the authors call lickety-stick innovation), collaboration, and physical spaces that enhance collaboration and communication.

Chapter 4: Working Product

[Ambler and Jeffries 2002] Ambler, Scott W., Jeffries, Ron, Agile Modeling, Wiley, 2002.

This is the best book I’ve seen on the topic of lightweight documentation. It is packed with ideas on how to capture requirements, specifications, design, etc.

[Beck 2004] Beck, Kent, Extreme Programming Explained, 2nd Edition, Addison-Wesley, 2004.

Kent Beck does an excellent job of introducing the motivation behind continuous integration, nightly builds, and prototypes. The Extreme Programming literature is in general filled with many useful ideas and practices.

[Hunt and Thomas 2000] Hunt, Andrew and Thomas, David, The Pragmatic Programmer, Addison Wesley, 2000.

This is an excellent book for software developers, and I highly recommend it. Some of the practices described in this book are derived from the pragmatic programmer.

Chapter 5: Defect Prevention

[Beck 2004] Beck, Kent, Extreme Programming Explained, 2nd Edition, Addison-Wesley, 2004.

Extreme programming is the methodology that introduced test-driven development and pair programming. These practices are very well described in Kent Beck’s book that introduced Extreme Programming.

Test-Driven Development

[Astels 2003] Astels, David, Test Driven Development: A Practical Guide, Prentice Hall PTR, 2003.

I think this is one of the best books currently available on test-driven development. The author provides an excellent overview of different aspects of test-driven development. I especially like the chapters on the testing of user interfaces and mock objects.

[Beck 2002a] Beck, Kent, Test Driven Development: By Example, Addison-Wesley Professional, 2002.

[Husted and Massol 2003] Husted, Ted and Massol, Vincent, JUnit in Action, Manning Publications, 2003.

Automated Testing (General)

www.testing.com : I highly recommend this web site by Brian Marick. The page on Classic Testing Mistakes in particular is highly recommended.

[Marick 1995] Marick, Brian, The Craft of Software Testing, Prentice Hall, 1995.

Usability Testing

[Dumas and Redish 1999] Dumas, Joseph S. and Redish, Janice C., A Practical Guide to Usability Testing, Intellect, Ltd. (UK), 1999.

[Rubin 1994] Rubin, Jeffrey, Handbook of Usability Testing: How to Plan, Design, and Conduct Effective Tests, Wiley, 1994.

Other

[Ronsse et al 2003] Ronsse, Michiel, De Boschere, Koen, Christiaens, Mark, Chassin de Kergommeaux, Jacques, and Kranzmuller, Dieter, Record / Replay for Nondeterministic Program Executions, Communications of the ACM, September 2003 Volume 46, Number 9.

This is an excellent paper that describes the issues in implementing a record and playback. The authors describe how i/o devices, message passing programs, and shared memory can be included in a record/playback architecture.

[Thomas and Hunt 2002] Thomas, Dave and Hunt, Andy, Mock Objects, IEEE Software, May/June 2002.

This is a good introduction to mock objects. There are many good resources online too.

Chapter 6: Emphasis on Design

[Fowler: Is Design Dead?] Fowler, Martin, Is Design Dead?, http://www.martinfowler.com/articles/designDead.html.

This is a web article that Martin Fowler continually updates. It is a must read for anyone who is interested in software design, especially in the context of agile development.

Design Patterns

[Gamma et al 1995] Gamma, Erich, Helm, Richard, Johnson, Ralph, and Vlissides, John, Design Patterns, Addison Wesley Professional, 1995.

This is a software development classic and should be a standard reference for every software developer. There is also a great deal of knowledge available on the web about these and other patterns. I highly recommend a web search for the keywords design patterns.

[Fowler 2002] Fowler, Martin, Patterns of Enterprise Architecture, Addison-Wesley, 2002.

Another useful book of design patterns for use with the web, databases, servers, etc.

Design Patterns, Agile Development, and Simple Design

[Evans 2003] Evans, Eric, Domain-Driven Design, Addison-Wesley, 2003.

This is one of the best software design books in my opinion. It fits extremely well with agile development and an emphasis on simple design within a design vision as described in the Emphasis on Design chapter, though the terminology is different.

[Kerievsky 2004] Kerievsky, Joshua, Refactoring to Patterns, Addison-Wesley Professional, 2004.

An excellent book that deals with the hard-core coding problems of balancing the up-front use of design patterns versus having them emerge over time through refactoring.

[Martin 2002] Martin, Robert C., Agile Software Development, Principles, Patterns, and Practices, Prentice Hall, 2002.

This book is unfortunately misnamed. The value of this book is in understanding the drawbacks of various design patterns and in general how to employ design patterns in an agile development context. Highly recommended.

Refactoring

[Fowler 1999] Fowler, Martin, Refactoring: Improving the Design of Existing Code, Addison-Wesley, 1999.

The bible of refactoring. Enough said!

Other

[Ambler and Jeffries 2002] Ambler, Scott W., Jeffries, Ron, Agile Modeling, Wiley, 2002.

This book contains a rich description of some lightweight ideas for documenting designs.

[Armitage 2004] Armitage, John, Are Agile Methods Good for Design?, IEEE Transactions, Jan/Feb 2004.

This is an excellent paper on user interface design for projects that employ agile development.

Chapter 7: Continual Refinement

[Cockburn 2004] Cockburn, Alistair, Crystal Clear: A Human-Powered Methodology for Small Teams, Addison-Wesley Professional, 2004.

Alistair Cockburn provides useful and unique insights into the requirements of software development done by small teams.

[Cohn 2004] Cohn, Mike, User Stories Applied: For Agile Software Development, Addison-Wesley Professional, 2004.

I highly recommend this book. It is packed with practical insights into how to gather requirements and write effective user stories for agile development.

[Cohn 2005] Cohn, Mike, A Regular Heartbeat: The Benefits of Fixed Iteration Lengths, 27 January 2005, Cutter Consortium Agile Project Management e-Mail Advisor, e-mail: .

A short but useful article that describes the benefit of a regular heartbeat for projects.

[Crane 2002] Crane, Thomas G., The Heart of Coaching, FTA Press, 2002.

This is one of my favorite books on coaching.

[Highsmith 2004a] Highsmith, Jim, Agile Project Management, 2004.

This is the definitive work on agile project management and an excellent source book of ideas and insight into agile methods.

[Kerth 2001] Kerth, Norm, Project Retrospectives: A Handbook for Team Reviews, Dorset House, 2001.

Although this book describes multi-day retrospectives that are usually held at the end of a project, there are many excellent ideas in the book that can be easily adapted for shorter, more agile-appropriate retrospectives. This is the reference you must have if you are interested in effective retrospectives.

[Larman 2003] Larman, Craig, Agile and Iterative Development: A Manager’s Guide, Addison-Wesley Professional, 2003.

The value of this book is that it is written for managers and executives to help them understand, support, and apply agile development. This is the only book that I’m aware of that directly discusses the business value of agile development, since business value is an important consideration for the target audience.

[Poppendieck and Poppendieck 2003] Poppendieck, Mary and Poppendieck, Tom, Lean Software Development, Addison-Wesley Professional, 2003.

Lean development takes a unique approach to agile development: identifying the simplest set of practices possible that lead to effective software development. If you have heard of lean manufacturing, then this book will be of great interest because the thinking and rationale are similar.

[Schwaber and Beedle 2001] Schwaber, Ken and Beedle, Mike, Agile Software Development with SCRUM, Prentice Hall, 2001.

SCRUM gets a lot of attention because it is a simple agile project management technique.

Chapter 8: Making Culture Change Happen

[Beck 2002b] Beck, Kent, XP and Culture Change, Cutter IT Journal, Cutter Consortium, Oct 2002.

Kent Beck discusses culture change required for Extreme Programming from the standpoint of the various stakeholders, especially developers and managers. You should be able to get a copy of this publication from www.cutter.com.

[Cockburn 2001] Cockburn, Alistair, Agile Software Development, Addison-Wesley, 2001.

Many factors with the physical work environment and the impact it can have on agile development are described in this book.

[Crane 2002] Crane, Thomas G., The Heart of Coaching, FTA Press, 2002.

This is one of my favorite books on coaching. There is a very useful chapter on culture change and the role that individual and team coaching plays in achieving culture change.

[Kotter 1996] Kotter, John P., Leading Change, Harvard Business School Press, 1996.

This book describes the problems that are commonly faced when attempting culture change in an organization. The value of the book is in the strategy that is outlined for achieving change.

[Lindval et al 2004] Mikael Lindval, Dirk Muthig, Aldo Dagnino, Christina Wallin, Michael Stupperich, David Kiefer, John May, and Tuomo Kahkonen, Agile Software Development in Large Organizations, IEEE Computer, December 2004.

The authors of this paper outline a number of good points related to attempting to introduce agile development into large organizations such as Motorola, Nokia, and DaimlerChrysler.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.191.195.111