There are lots of certified masters and trainers programmes available for various Agile methodologies but it is extremely hard to find one for Extreme Programming (XP). You can get certified in any methodology in 3 days and claim to be a practitioner but claiming to be a good XP developer is extremely hard.
It takes a few years of dedicated practice in XP to get some mastery in XP be recognised as one by peers. It does not come with just knowing how to write stories, estimate and sequence them. The most distinguished feature of XP is its emphasis on developers and technical aspects of software development.
Most of the people I encounter have modified waterfall into mini waterfalls following super rigid plans but tracking on a weekly basis in the name of agile development without giving much thought to the technical aspects. This will not help in realising many of the goals that we set out to achieve. Also to improve the speed, work is usually allotted in silos thereby increasing dependency on people and reducing collaboration.
Try answering Yes or No to the following questions
- Do you do pair programming (May not be followed for simple straight forward tasks)?
- Can any developer in the team call for a huddle when stuck or when there is a need for a design discussion?
- Do you follow Test drive development (TDD)?
- Is your team’s CI sacred, no one breaks the build or if broken it comes back green soon?
- Do you do frequent commits/merges (short lived branches) to the master or do Trunk based development?
- Can anyone in the team question the quality of code?
- Does the team get together often to do mob code reviews or do some learning sessions on best practices?
- Is it easy for you to roll off or onboard developers at least once a quarter?
- Is there automation at all levels that people do not spend any time on recurring tasks?
- Does your team seems to be productive enough if they work only for 5 days a week?
- Is the team able to interact and negotiate on the stories with the Product owner during development?
The list above is not exhaustive but if there are questions that you have answered ‘No’ then you are not on the path to mastering XP.
I am quite surprised how some technical terms easily lose their meaning over time. TDD (Test driven development) is one of them. I repeatedly meet people who do TDD at their work and when I say I also do TDD at work the next question most of the times I get asked is “Do you write tests first”? Stumped! TDD is always about write a test first and then write its code, test code is not a different citizen from production code while under development.
A few years ago if I had asked an interview candidate “Do you write your unit tests before writing your code if you are following TDD?” the chances are high that the candidate gets offended but now I am given a reply “I tried, but it is hard to do it; so we write tests after the coding is done to keep the coverage at 80”. So TDD has evolved to have a meaning of having 80%(or any other easy number) line coverage than a way of making sure to get a good low level design and have enough safety nets in place.
You are not following TDD if
- Not writing tests first
- Repeat point number 1
I often come across people at management positions who clearly want to manage by tracking only numbers but fail to understand why were those metrics in place. We were part of a six team project, we were asked to go through our requirements and give an estimate including any proof of concepts and study that we had to do. The estimates were in points in fibonacci but were tightly mapped to number of days. When we questioned about why points to days the answer was to keep the yardstick of measurement same across all the teams in the org. It was setup for failure, but our team had to move on with the development so we went ahead agreeing to the terms.
After the first sprint our team had missed meeting the estimate while all the other teams had achieved it, we were met by one of the senior managers who gave a stern warning to the team that points are non negotiable and wants us not to fail again. When the time for demo came by, we were the only team that did a demo of the working software and product owners were able to immediately grasp what was going on and gave feedback on it. All the other teams had met their estimated points but they did things like ‘Study ABC tool’, ‘Setup CI machine’, ‘Setup Dev machine’ and so on.
Our team did all those and also demoed a working software, the other teams have bloated the estimate and bought time. This went on for some iterations, all the other teams were able to meet the estimates but other than our team all the other teams were not able to showcase their working software. The management did not care much about working software, their success was measured by meeting the points; it was the product owners who suffered the most as it took an extremely long time for them to get something working.
When you choose to measure something people will optimise for the metrics. Velocity and points are a way to help plan and size the software so that people can be allocated and releases can be planned, when it turned out to be a yardstick then there is only movement but no progress. People will eventually game the system and it becomes a toxic cycle.
Please prioritise working software over points