Essential Skills for the Agile Developer

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

by Alan Shalloway, Scott L. Bain, Ken Pugh, and Amir Kolsky.

This book 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.

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 Yahoo Lean Programming group

Sample Chapters from "Essential Skills for the Agile Developer"

Some Related Courses at Net Objectives

Related Resources

Related Webinars

We have webinars that relate to Essential Skills from time to time. Please register so you will be notified of such events.

Errata By Chapter (chapters with Errata will have links):

  • 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

Page50, middle of page:

if ( << don't need an encrypter>> )

Return null;

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.


All the Details

Tuesday, September 2, 2008

Upcoming Events