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
- 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)
- 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?
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.
Bibliography and references
- Agile Manifesto - www.agilemanifesto.org
- Manifesto for Software Craftsmanship - http://manifesto.softwarecraftsmanship.org/
- 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 Modeling – www.agilemodeling.com
- Disciplined Agile - www.disciplinedagiledelivery.com
- Disciplined Agile: Prove Architecture Early - http://www.disciplinedagiledelivery.com/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 - http://www.disciplinedagiledelivery.com/dad-book/
- 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