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

Essential Skills for the Agile Developer: A Guide to Better Programming and Design by Alan Shalloway, Scott L. Bain, Ken Pugh, and Amir Kolsky.

This book provides over a dozen proven practices that help developers improve their coding practices and make their code more easily changeable and maintainable in Agile projects. Sample chapters are available.

It answers the question many developers have after taking some initial Agile/Scrum training, “OK, how do I write code now that we are building our software in iterations?” This book provides over a dozen proven practices that help developers improve their coding practices and make their code more easily changeable and maintainable in Agile projects. Please read the preface to better understand how to read this book.

Reviews

Here’s what Dean Leffingwell, creator of Scaled Agile Framework and author of Agile Software Requirements had to say about Essential Skills:

This book clearly meets the promise of the title, as it truly does describe the “essential skills that every agile developer should possess”. With all the focus on agile software project management techniques like Scrum and Kanban these days, it’s refreshing to see that the folks at Net Objectives understand that no matter how we manage, or how we scale, it’s all for nought unless the developers and testers create better quality code at the origin. That’s what this book is about. It’s a short, understandable and essential read for every practitioner interested in improving the quality, agility, and maintainability of the code that ultimately, we all depend on.

You can post comments about these chapters at the Net Objectives Support Group (LinkedIn).

Sample chapters

Errata by chapter

  • Preface
  • The Core Trim Tabs
  • General Attitudes
    • 8 Avoid Over and Under Design
    • 9 Continuous Integration
  • Design Issues
    • 10 Commonality Variability Analysis
    • 11 Refactor To The Open Closed
    • 12 Needs Vs Capabilities in Interfaces
    • 13 When and How to Use Inheritance
  • Appendix. Basics
      • A-1 Introduction to the UML
      • A-2 Code Qualities
      • A-3 Encapsulating Primitives
      • 4 Shalloway’s Law

    Errata
    Page 50, middle of page:

    should be:
    // NullEncrypter derives from Encrypter but does no encryption
    if (<<don’t need an encrypter>>) return new NullEncrypter();

    6 Interface-Oriented Design

    Page 81, paragraph 2:

    Later on you may find that YourCustomerLookup and YourVendorLookup have much more in common than YourCustomerLookup and MyCustomerLookup.

    should be:

    Later on you may find that YourCustomerLookup and some new lookup, such as YourVendorLookup, have much more in common than YourCustomerLookup and MyCustomerLookup.