Praise for Essential Skills for the Agile Developer
I tell teams that the lean and agile practices should be treated like a buffet: Dont try and take everything, or it will make you illtry the things that make sense for your project. In this book the authors have succinctly described the why and the how of some of the most effective practices, enabling all software engineers to write quality code for short iterations in an efficient manner.
Kay Johnson
Software Development Effectiveness Consultant, IBM
Successful agile development requires much more than simply mastering a computer language. It requires a deeper understanding of agile development methodologies and best practices. Essential Skills for the Agile Developer provides the perfect foundation for not only learning but truly understanding the methods and motivations behind agile development.
R.L. Bogetti
www.RLBogetti.com,
Lead System Designer, Baxter Healthcare
Essential Skills for the Agile Developer is an excellent resource filled with practical coding examples that demonstrate key agile practices.
Dave Hendricksen
Software Architect, Thomson Reuters
Essential Skills for the Agile Developer
A Guide to Better Programming and Design
Alan Shalloway
Scott Bain
Ken Pugh
Amir Kolsky
Upper Saddle River, NJ Boston Indianapolis San Francisco
New York Toronto Montreal London Munich Paris Madrid
Capetown Sydney Tokyo Singapore Mexico City
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 publisher was aware of a trademark claim, the designations have been printed with initial capital letters or in all capitals.
The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein.
The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers and content particular to your business, training goals, marketing focus, and branding interests. For more information, please contact:
U.S. Corporate and Government Sales
(800) 382-3419
For sales outside the United States please contact:
International Sales
Visit us on the Web: informit.com/aw
Library of Congress Cataloging-in-Publication Data
Essential skills for the agile developer : a guide to better programming and design / Alan
Shalloway... [et al.].
p. cm.
Includes index.
ISBN 978-0-321-54373-8 (pbk. : alk. paper)
1. Agile software development. I. Shalloway, Alan.
QA76.76.D47E74 2011
005.1dc23
2011023686
Copyright 2012 Pearson Education, Inc.
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. To obtain permission to use material from this work, please submit a written request to Pearson Education, Inc., Permissions Department, One Lake Street, Upper Saddle River, New Jersey 07458, or you may fax your request to (201) 236-3290.
ISBN-13: 978-0-321-54373-8
ISBN-10: 0-321-54373-4
Text printed in the United States on recycled paper at RR Donnelley in Crawfordsville, Indiana.
First printing, August 2011
To my loving and lifetime partner, Leigh, my muse, who keeps me more humble than I would otherwise be. And while giving me a reason not to be writing books, keeps the pressure up to get the job done.
Alan Shalloway
To June Carol Bain. I wish she had lived to see her son become the teacher she always told him he should be. Hey, mom, you nailed it.
Scott Bain
To Ron, Shelly, and Maria: those who matter.
Amir Kolsky
To my brother Don, who gave me a reason to become an engineer.
Ken Pugh
Series Foreword: The Net Objectives Lean-Agile Series
Alan Shalloway, CEO, Net Objectives
If you are like me, you will just skim this foreword for the series and move on, figuring there is nothing of substance here. You will miss something of value if you do.
I want you to consider with me a tale that most people know but dont often think about. That tale illustrates what is ailing this industry. And it sets the context for why we wrote the Net Objectives Product Development Series and this particular book.
I have been doing software development since 1970. To me, it is just as fresh today as it was four decades ago. It is a never-ending source of fascination to me to contemplate how to do something better, and it is a never-ending source of humility to confront how limited my abilities truly are. I love it.
Throughout my career, I have also been interested in other industries, especially engineering and construction. Now, engineering and construction have suffered some spectacular failures: the Leaning Tower of Pisa, the Tacoma Narrows Bridge, the Hubble telescope. In its infancy, engineers knew little about the forces at work around them. Mostly, engineers tried to improve practices and to learn what they could from failures. It took a long timecenturiesbefore they acquired a solid understanding about how to do things.
No one would build a bridge today without taking into account long-established bridge-building practices (factoring in stress, compression, and the like), but software developers get away with writing code based on what they like every day, with little or no complaint from their peers. And developers are not alone: Managers often require people to work in ways that they know are counterproductive. Why do we work this way?
But this is only part of the story. Ironically, much of the rest is related to why we call this the Net Objectives Product Development Series. The Net Objectives part is pretty obvious. All of the books in this series were written either by Net Objectives staff or by those whose views are consistent with ours. Why product development? Because when building software, it is always important to remember that software development is really product development.
By itself, software has little inherent value. Its value comes when it enables delivery of products and services. Therefore, it is more useful to think of software development as part of product developmentthe set of activities we use to discover and create products that meet the needs of customers while advancing the strategic goals of the company.
Mary and Tom Poppendieck, in their excellent book Implementing Lean Software Development: From Concept to Cash (Addison-Wesley, 2006), note the following:
It is the product, the activity, the process in which software is embedded that is the real product under development. The software development is just a subset of the overall product development process. So in a very real sense, we can call software development a subset of product development. And thus, if we want to understand lean software development, we would do well to discover what constitutes excellent product development.