To illustrate 12 very important aspects of agile software engineering, I want to use the oversimplified metaphor of lumberjacking. A forester, who represents the product owner, leads a team of lumberjacks, which is the development team, to the most important trees to cut down. The trees represent features or stories. How is this metaphor valuable?
- Segregation of responsibility: One marks the trees to cut, the others define how and do cut them.
- The lumberjacks who have the strength, skills and tools to cut down trees, although not everyone is on the same level of experience, so they help each other out. Some trees can be cut alone, others need to be cut together.
- The forester pays the team of lumberjacks to cut down trees, so that he can futher explore the infinite forest of valuable trees.
- In order to collaborate, mutual respect for the counterpart’s discipline is required. Discussions and proposals are valuable and humility is a prerequisite, but the circles of competence are known and respected.
- The lumberjacks are able to state concerns: It could be dangerous to cut down a tree, because of uncertainty where the tree will fall. Risks, depending on what is on the line (another tree? A human?), need to be evaluated strategically and should be reduced on the long run.
- The forester can ask questions: Do you think, we can chop this tree safely already, or do we need to chop another tree first?
- CYA concerns are resolved easier: It is either the wrong tree, or it is the wrong way to cut it down.
- No one is perfect: Sometimes a tree is mouldy (=> wrong feature), sometimes the chopping takes longer than expected (=> unexpected technical complexity).
- Some trees are in the way and need to be cut down in order to get to the ‘good’ trees.
- The forester doesn’t tell the lumberjacks to sharpen their chainsaw or axes (=> write tests, update IDE’s etc.): They know and do it themselves, better than the forester could. They will do it within the working hours.
- It is dangerous to cut trees. It is important to have safety precautions and stick to them (=> QA).
- After a tree is chopped, the work is not done (=> definition of done): It needs to be cut into smaller pieces and carried away. Then the wood goes trough a number of procedures (=> build pipeline) in order to be made valuable. Sometimes the value is to give shelter, craft furniture or build a ship, sometimes it just gives comfy warmth in front of a fireplace. The foresters intention might materialize here (=> business value).
To be honest, I do not know so much about lumberjacking or foresting, so forgive my oversimplification and maybe misconceptions. The goal is to write about software engineering metaphorically, and I find some concepts easy to understand using these wooden examples. I have a more detailled and less metaphorical article about the segregation of responsibility here.