Mastering XP

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.

Advertisements

Do you write tests first in TDD?

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

  1. Not writing tests first
  2. Repeat point number 1

 

Working software vs points

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

How to kill ideas

During our college days (2001) when Bluetooth was in its early stages the Bluetooth SIG (Special interest group) tied up with IEEE and announced a Bluetooth based theme for CSIDC (Computer science international design competition) with good perks like Bluetooth adapters, Windows XP and Visual studio licenses for participants and good prizes. One of our friends read about this and three of us put up a proposal with our ideas and we got through the initial round. We had a lot of ideas with us to implement a prototype, it is at this point a software company which was run by one of the alumni came over to help us in planning.

Our initial plan was to implement quickly and try it out on the users for feedback. hurry-up-2785528_640
This was for a generic identification device that can be configured to use for payments, tolls for cars, parking etc. The idea was that Bluetooth devices can hold a lot of data and gives the users the flexibility to create as many profiles as they want.

checklist-1643784_640One of the seniors in the company invited us to their place, in our first meeting itself we were stumped when we saw the mountain from which the waterfall process flowed. We were slapped with a software requirements specification document template which would have taken a few weeks to fill for the amount of ideas we had. It also had various parameters to rate the requirements like return on investment etc. I could never forget the feeling that we had on that day, we dropped our idea altogether and went on to find something which had requirements perfectly documented.

By the time we finished the first cut of the project and submitted we were only half emotiguy-1654859_640happy that we did finish something. We ended up converting EEG wirelessly and transmit through Bluetooth which was not a novel idea at all. The Waterfall process killed the idea, the fire and above all nothing useful came out of a defined process. Someone else who had submitted a similar generic id device entered the top 10 and ended up winning something. Some events leave a lasting impression on your life, this one was so strong that I had never accepted to work in waterfall development ever even though that was the only one very active around the time I graduated.

Any process followed for the sake of following it will surely kill a lot of things

Everyone wants to buy, but …

Selling something is very hard, I see this very often at my workplace. A successful sale has stories of so many disappointments, setbacks and strong will to persist through tough times. Even after seeing through all this, I get annoyed when I encounter salespeople who run their runbook on me. I want to buy something for my needs, but I don’t want something to be sold to me through ill will and tactics.

Here are some tactics that I find extremely annoying

Bait and switch

This is so common and effective when you are on the move. We do not prefer cold water so we asked the waiter at a restaurant to get bottled water at room temperature for us. He let us know that he can’t get the water unless we bill it and pay for it. Once we got it billed he gave us cold water saying they have run out of stock of room temperature ones. He pointed to the bill saying goods once sold cannot be taken back when I wanted to return it, we got our money back after creating a scene at the restaurant.

Useless add ons or replacements

This starts with small places like coffee shops to big places like car dealers. This tactic is used to trick the customer into buying add ons that bring great margins with little use to the customer. This is taught as cross selling and up selling to sales people to target ignorance. Have you ever wondered why service bills for cars usually go 2-3 times higher than a regular listed price service, I have been advised to replace my clutch plate which I declined and was able to run it for 30,000 kms more; same with batteries, vipers, brake pads etc. On top of it the cleaning services which adds up to a huge amount if you opt for, which by default the service advisor (salesperson’s fancy title) will add and wait for you to strike that out. I waited once for them to write down all of that and make them do it and refused to pay citing legal reasons that they had written it down in the complaints section instead of opt-in requests section, they immediately cut down the charges fearing legal issues.

Terrorize

This is the favourite one for hospitals and insurance agents who play using the fear in people’s mind. It is very evident if you have rented a car, the salesperson will never let you drive the car out without a hefty insurance package. We were told stories by the salesperson how someone had rented a car last week which was broken into by thieves and how the renter suffered loss of property and on top of it was liable to pay huge fines for car damages. We sternly refused additional insurance as we had got it covered through our company, the salesperson brought a manager outside and who explained that we cannot rent it out as it is at their discretion to prevent damages. We asked for a written statement for the refusal so that we can sue, we were given a car in 10 minutes.

Fake demand

This is common where there is no way to verify demand-supply. You will be presented with a nice product with an offer price that is slightly lower than the advertised price and will be asked to decide then and there to agree or there is someone else to buy. The salesperson will also revise to a higher price to introduce a fake demand.

Ego play

This is a double edged tactic used to make people upgrade. The common way it is executed is you will be asked for a budget and given very sub standard options in that budget. When someone asks for an eye catching option, the salesperson will dismiss it saying that it is not in their budget and hurt their ego. This will make people go for the higher priced product instead of sticking to their budget. Another ego play tactic used on couples is placing one of the spouses as the deciding authority by saying statements like ‘it seems someone else has the control on the budget’, ‘it seems you have no purchasing power’. It instigates a fight within the couple but one of them ends up buying.

Acting insanely good

This is very tough to negotiate out if you can’t say no. The salesperson will spend a great amount of time explaining things to you, help you go through lots and lots of information (often to confuse) and then pounce on you to make a purchase on one of the options. If you step in to look only for options, you may end up buying something because of the pressure exerted on you. I have encountered a person who refused me to go out through the door mentioning ‘I have spent so much time explaining to you, you have to buy something, I deserve it’.

There are many more tactics, with the web it is rapidly replaced by computers upselling and cross selling. As a buyer it is getting increasingly difficult to buy only what we need, instead we buy what is being sold.