Photo by Ferran Feixas on Unsplash
Clean Agile - Notes from the book Clean Agile by Robert C. Martin -
Here are my knowledge nuggets from the book Clean Agile by Robert C. Martin.
Iron Cross of Project Management
The idea is that you can only choose 3/4 characteristics and you cannot have the 4th one. For example, a project can be good+fast+done, but it won't be cheap. Or the project can be cheap+fast+done, but it won't be good.
Agile is all about data
You need to continuously gather data to make accurate predictions about the project end date and how best to set the coefficients of the Iron Cross.
Data to gather includes:
average velocity = how many story points the team achieves in 1 iteration.
burn-down chart = the remaining story points in a sprint.
Average Velocity -> Calculated Completion Date
Use the first 4-5 iterations' average velocity to make the first prediction on when the project is done.
Continuously use this data to verify the project's completion date.
Due to business reasons, there is an urgency to finish the project before the calculated completion date. In this case, the project manager might look at the Iron Cross coefficients and tweak them to gain speed.
be faster: add more people to the project (! first drop in speed until the developers get accustomed to the project, then increased speed)
reduce quality (! it should be avoided – the only way to go fast is to go well)
reducing scope: some features are taken out.
business value order: reset the priority of the feature that need to be implemented.
Sprint vs. Iteration
The 1-2 week(s) units during which the team works on stories should be called iteration and not sprint. The meaning of the word iteration reflects more the idea that after 1-2 weeks we need to have another working version of the application.
The meaning of the word sprint gives the working unit an underlying feeling of urgency – that stories and tasks must be finished as fast as possible.
Working on the project is a marathon, not a sprint.
Iteration 0
lay out the initial plan
estimate stories
set up the development environment (dependencies, package manager etc.)
set up CI/CD from beginning
XP - The Circle of Life
Outer Ring = Business-facing practices of XP
Planning Game = break down a project into features, stories, and tasks; it provides guidance for the estimation, prioritization, and scheduling of those features, stories, and tasks.
Small Release = guides the team to work in bite-sized chunks.
Acceptance Tests = provide the definition of "done" for features, stories, and tasks.
Whole Team = a development team is composed of many different functions, including programmers, testers, and managers, who all work together towards the same goal.
Middle Ring = Team-facing practices of XP
Sustainable Pace
Marathon Pace; a practice that keeps the development team from burning their resources too quickly and running out of steam before the finish line; developer should not work more than 40h/week.
well-tested, continuously integrated, continuously deployed code
Collective Ownership = ensure that knowledge silos do not occur
Continuous Integration = continuously integrate your feature to the main code to close the feedback loop
Metaphor = practice that creates and promulgates the vocabulary of the business, adopted by the team to communicate.
Inner Ring = Programmer-facing practices of XP
Pairing = it ensures that knowledge is shared and there is collaboration that drives innovation and accuracy
Simple Design = writing simple code should be the goal; the developer continuously evaluate whether there is an easier/simpler way to introduce the same functionality.