What is Agile?
Agile is not a process, it is a philosophy. It’s a philosophy that describes a comparative value system and a set of 12 principles designed to discover better ways of developing products. See “Manifesto for Agile Software Development“.
What is Agile process?
There are many agile embracing processes or process frameworks, e.g. the popular ones are XP, Scrum, Kanban etc.
Henrik Kniberg did an analysis and compared some process tools on the prescriptive vs adaptive scale:
This chart provides a high-level view of Agile frameworks on a scale of prescriptiveness to adaptiveness. Henrik bases his measurement on the number of ‘rules’ stated in the process descriptions. For example: RUP 120 rules; XP 13 rules; Scrum 9 rules; Kanban 3 rules. It means, the less rules the process depict, the more adaptive it is.
However as one moves to the right on this spectrum there is an increasing need for self-discipline. Just because you are at the right end, “Do Whatever” doesn’t mean your group has the ability to effectively achieve your goals. Perhaps, you can improve the effectiveness you desire by moving toward the left.
In my experience, it requires a very mature organization to move toward the right on this spectrum. Moving toward the left creates a rigid structure and can have severe consequences on team dynamics and motivation.
Read more about from Henrik about these processes:
is pretty prescriptive – it has over 30 roles, over 20 activities, and over 70 artifacts. An overwhelming amount of stuff to learn. You aren’t really supposed to use all of that though, you are supposed to select a suitable subset for your project. Unfortunately this seems to be hard in practice. “Hmmmm… will we need Configuration audit findings artifacts? Will we need a Change control manager role? Not sure, so we better keep them just for in case.” This may be one of the reasons why RUP implementations often end up quite heavy-weight compared to Agile methods such as Scrum and XP.
XP (eXtreme programming)
is pretty prescriptive compared to Scrum. It includes most of Scrum + a bunch of fairly specific engineering practices such as test-driven development and pair programming.
is less prescriptive than XP, since it doesn’t prescribe any specific engineering practices. Scrum is more prescriptive than Kanban though, since it prescribes things such as iterations and cross-functional teams. One of the main differences between Scrum and RUP is that in RUP you get too much, and you are supposed to remove the stuff you don’t need. In Scrum you get too little, and you are supposed to add the stuff that is missing.
leaves almost everything open. The only contraints are Visualize Your Workflow and Limit Your WIP. Just inches from Do Whatever, but still surprisingly powerful.