ebook img

Essential Skills for the Agile Developer: A Guide to Better Programming and Design PDF

262 Pages·2011·2.7 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Essential Skills for the Agile Developer: A Guide to Better Programming and Design

ptg6843614 Praise for Essential Skills for the Agile Developer “I tell teams that the lean and agile practices should be treated like a buffet: Don’t try and take everything, or it will make you ill—try 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 effec- tive 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 mas- tering 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 learn- ing but truly understanding the methods and motivations behind agile development.” ptg6843614 —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 ptg6843614 This page intentionally left blank ptg6843614 Essential Skills for the Agile Developer A Guide to Better Programming and Design ptg6843614 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 [email protected] For sales outside the United States please contact: International Sales [email protected] ptg6843614 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.1—dc23 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. ptg6843614 —Amir Kolsky To my brother Don, who gave me a reason to become an engineer. —Ken Pugh This page intentionally left blank ptg6843614 Contents Series Foreword ___________________________________________________________xvii Preface ______________________________________________________________________xxi Acknowledgments ________________________________________________________xxiii About the Authors ________________________________________________________ xxv Part I ptg6843614 The Core Trim Tabs __________________________________________1 Chapter 1 Programming by Intention _________________________________3 Programming by Intention: A Demonstration _____________________3 Advantages _______________________________________________________6 Method Cohesion _____________________________________________6 Readability and Expressiveness _________________________________7 Debugging _________________________________________________ 10 Refactoring and Enhancing ___________________________________ 11 Unit Testing ________________________________________________ 13 Easier to Modify/Extend _____________________________________ 15 Seeing Patterns in Your Code _________________________________ 16 Movable Methods ___________________________________________ 17 Summary _______________________________________________________ 18 ix x Contents Chapter 2 Separate Use from Construction ________________________21 An Important Question to Ask ____________________________________ 21 Perspectives _____________________________________________________ 22 Perspective of Creation ______________________________________ 23 Perspective of Use ___________________________________________ 24 What You Hide You Can Change ______________________________ 25 Realistic Approach __________________________________________ 27 Other Practical Considerations ________________________________ 30 Timing Your Decisions ____________________________________________ 30 Overloading and C++ ____________________________________________ 31 Validating This for Yourself ________________________________________ 32 Summary _______________________________________________________ 33 Chapter 3 Define Tests Up Front ____________________________________ 35 A Trim Tab: Testing and Testability _________________________________ 35 ptg6843614 What Is Testing? _________________________________________________ 35 Testability and Code Quality ______________________________________ 36 Case Study: Testability ____________________________________________ 37 Setting Ourselves Up for Change ______________________________ 38 Programmer as Frog _________________________________________ 39 A Reflection on Up-Front Testing __________________________________ 39 Better Design _______________________________________________ 42 Improving Clarity of Scope: Avoiding Excess Work ______________ 42 Reducing Complexity ________________________________________ 42 Other Advantages ___________________________________________ 43 No Excuses _________________________________________________ 43 Summary _______________________________________________________ 44 Chapter 4 Shalloway’s Law and Shalloway’s Principle ___________ 45 Types of Redundancy _____________________________________________ 46 Copy and Paste _____________________________________________ 46

Description:
Agile has become today’s dominant software development paradigm, but agile methods remain difficult to measure and improve. Essential Skills for the Agile Developer fills this gap from the bottom up, teaching proven techniques for assessing and optimizing both individual and team agile practices.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.