Monday, March 20, 2017

Core Agile Practices

WHAT are Core Agile Practices and WHY do we need them ?

There is a lot of noise in the Agile Development universe. There is a lot of talk about things that are not so important or that have too few coverage. There are some core practices fundamental for getting capability/skills for being/doing Agile. Many of them are in Extreme Programming (XP), but not all. Let's try to put them together.

Criteria to select practices in Core Agile - we need practices that:
  • Backup Agile Manifesto values and principles 
  • Backup Manifesto for Software Craftsmanship values
  • Backup Agile core capability to respond to changes: quickly, often, even to late changes and continuously
  • Have Lean effect on Lean: same practices has multiple effects on optimizing work, no waste and efficiency
  • Are usually mentioned by the main Agile contributors and by the engineers/teams/organizations with great experience and results
  • Are part of the "Sweet Spots" (Alistair Cockburn term) of effective/efficient/adaptive software development
A Core Agile Practice has multiple effects. That is definitely Lean !

Common core practices to most Agile Methods
  • Working Software
  • Iteration Modeling, Iteration Planning
  • Retrospectives
  • Small Teams
  • Daily meeting  

XP - Extreme Programming core practices, adopted also by DA - Disciplined Agile
  • Small releases
  • System Metaphor
  • Simple design
  • Testing First Development (TDD)
  • Refactoring
  • Pair programming
  • Collective ownership
  • Continuous integration
  • On Site Customer
  • 40-hour week
  • Coding standards
  • Exploration, solution spikes

  Disciplined Agile/Agile Modeling extension to XP 
  • Proven Architecture Milestone
  • Requirements Envisioning, Architecture Envisioning
  • Active Stakeholders Participation
  • Look Ahead Modeling
  • Model Storming
  • Executable Specifications (TDD as ...)
  • Consumable Solutions
  • Rolling Wave Planning

Method-free core Agile Practices
  • Clean Code 
  • Clean Architecture
Why we need Core Agile Practices?

Core Agile Practices are not "Best Practices", but a set that will provide us the Adaptive-Lean capability that will address core software development problems/traits: incertitude & changes, complexity and knowledge work.
If we do not master a set of skills that offer such capability, our work will be ineffective and not efficient on domain basic, so also endeavors as tailoring and scaling will not give the desired results. Disregarding Core Agile Practices is a major pitfall using Agile.

 Disregarding Core Agile Practices is a major pitfall using Agile.

Why are not best practices? Mastering these practices should be a fundamental capability, but is not the only one needed. We will not always use the Core Agile Practices, but also others, depending on the context. So, best practices are context related, and Core Practices are domain related. 

Best Practices are CONTEXT related, and Core Practices are DOMAIN related.

Examples - getting Adaptive-Lean (... read Agile) capability using Core Agile Practices
  • Implementing Adaptive capability  here
  • Implementing Lean capability here

Bibliography and references
  • Agile Manifesto -   
  • Manifesto for Software Craftsmanship -
  • Extreme programming explained: embrace change, Kent Beck, Addison-Wesley Professional; US ed edition (October 5, 1999). Note: I strongly recommend this first edition for understanding Core Agile, over 2004, 2nd edition.    
  • Agile
  • Disciplined Agile -   
  • Disciplined Agile: Prove Architecture Early -
  • Clean Coders series, by  Robert C. Martin
  • Disciplined Agile Delivery:  A Practioner’s Guide to Agile Software Delivery in the Enterprise, 2012,  by Scott Ambler and Mark Lines -
  • Clean Code, Prentice Hall , 2008 , by Robert C. Martin
  • Clean Architecture,, Prentice Hall , 2017 (coming soon), by Robert C. Martin
  • Agile Software Development: The Cooperative Game, Second Edition, by Alistair Cockburn, Addison Wesley Professional, 2006;·        Chapter 5. Agile and Self-Adapting / Agile 


  1. An initiative well worth to appreciate. A few comments...

    In addition to core practices in most Agile methods, DSDM has "Modeling" and "Facilitated Workshops" in its core. Goes well along with practices within Agile Modeling of course.

    Most of them already covered, but Leffingwell's "seven Agile team practices that scale" might be worth considering from a scaling perspective.

    What about practices regarding business agility?

  2. Modeling - yes, it is ok to mention that Envisioning(requirements, architecture),Look Ahead Modeling and Model Storming could contain also models as diagrams. Anyway, envisioning/look-ahead and JIT clarifications about requirements and solution are rather composite collaborative activities, were we can opportunistically discuss, write text, model, write code for getting this clarifications. Of course, we need to model at least essentials ~ Model Essentials.
    Workshop is a great practice, but imo it is rather a variant to realize Envisioning, Look ahead or JIT with Active Stakeholder Participation. We can imagine also others.

    About "seven Agile team practices that scale"
    Component teams - this is just an option and, if is not done carefully we can have problems with the Conway Law effects

    Two-level planning and tracking - seems to be a variant of multi-level planning, and remind me of Rolling Wave technique that must be included/added to core.

    Small release, continuous integration and retrospectives are already included

    Concurrent testing - is a standard engineering practices that must be applied whenever is needed. Same for regression test, stress test etc.

    Business agility - that is a great subject for further reflection.

    Thank you for the comments, it was a great help.