Test coach versus test specialist, impact on queues

I recently had a very interesting conversation with a group of skilled testers on whether or not there should always be a test specialist in a cross-functional team.

A lot of people say yes, my personal experience says not.

My personal experience tells me that the most effective and efficient approach uses a test coach that slowly makes himself scarce. My experience focuses on creating competencies for completing an activity (testing) in a collaborative context.

One aspect I am finding difficult to explain is the impact on queues of a test coach approach, I will use a series of Scenarios and pictures to facilitate my reasoning.

If you feel like substituting activity A = development and activity B = testing feel free, but this approach is activity agnostic in my experience as I have applied it to analysis, and development obtaining similar results.

Scenario 1 – Test specialist

In the presence of one specialist on Activity B and many specialists on activity A.
Problem: Long q
ueues form in Ready for Activity B (Case1) or worse specialist multitasks on many activities at the same time slowing down flow of work as per Little’s law (Case2)

Screen Shot 2017-05-29 at 10.40.47

Scenario 2 – Test coach

Stage 1: In the presence of one coach on Activity B and many specialists on activity A
Initially coach pairs on Activity B with people that do activity A. This way we obtain 2 benefits:

  1. Queue in “Waiting for Activity B” is reduced as one person normally performing activity A is busy pairing with coach on one activity B task
  2. By pairing on activity B feedback loops are shortened
  3. Person with activity A acquires new skills to perform activity B from pairing with coach
  4. Quality of activity B increases as it is a paired activity
  5. Flow improves because of 1 and 2

Screen Shot 2017-05-29 at 11.22.49

Stage 2: When cross-pollination of skills required for activity B starts to pay off, we have 2 benefits

  1. Normally some activity A person will show particular abilities with activity B, in this case this person can pair with another less skilled activity A person to perform activity B
  2. Queue in “Waiting for Activity B” is reduced as more people with activity A skills are performing activity B
  3. Flow of value improves lead time decreases
  4. More activity A people get skills on activity B

Screen Shot 2017-05-29 at 10.56.00

Stage 3: All activity A people are able to perform activity B
Activity B Coach can abandon the team to return only occasionally to check on progress. Benefits:

  1. Activity A and activity B can be performed by every member of the team
  2. the WIP limit can be changed to obtain maximum flow and eliminate the queue in Ready for Activity B.
  3. The flow of value is maximised
  4. The lead time is minimised

Screen Shot 2017-05-29 at 10.58.05

WARNING: I have applied this approach to help teams with testing for many years. It has worked in my context giving me massive improvements in throughput and reduction of lead time. This is not a recipe for every context, it might not work in your context, but before you say it won’t work, please run an experiment and see if it is possible.

This is not the only activity that a good test coach can help a team on, there are many shift left and shift right activities that will also reduce the dependency on activity B.

I have been told a million times “it will never work”, I never believed the people who told me and tried anyway, that’s why it worked.

Try for yourself, if it doesn’t work, you will have learned something anyway.

Advertisements

One very simple tip to help teammates connect

A couple of years ago, I started working with a new development team. As a coach, I spend the first few days observing behaviours and saying very little beyond a joke here and there.

Well, this team didn’t seem to have a process or technical problem, but I noticed a strange trend at their morning standups. People were being a bit “bitchy” to each other and focusing on people rather than on the work to be done.

You could hear things like

“well, my card is still there because I have been spending all day reviewing Frank’s pull request, not great…”

or

“I was writing the new stories but then Jack changed his mind… again…”

et cetera, I’m pretty sure you know the drill.

So on day 3 I went to the standup and I said, folks, let’s do an experiment. Before you say anything, you have got to say something nice about one of your teammates, shall we try?”

People looked at me like if I had seven heads, so I went “I’ll go first. Frank, you’re looking good today, I like your shirt, very smart”

People laughed. Then they tried.

I could see they were spending some time trying to find something nice to say, they were looking at something they liked about their teammates.

As humans, we are very good at finding flaws in people, on the other hand, we need to make an effort to find something we like about them, but if we try, we can discover something that we like, helping us connect.

Another consequence of this approach was that people realised their behaviour was not acceptable without being told and felt that they came up with the idea of reducing the bitching remarks.

All in all an easy win with very little effort.

WARNING: This approach won’t produce any positive effect if the hostility between team members derives from long-standing hatred, but it works very well with newly formed teams where people are trying to make themselves noticed sometimes using means that might be confrontational to their teammates.

 

3 Simple Steps to Help Overloaded Teams

dublin-rain-491-390x285It was a wet and dark morning in Dublin when I sat with team X for the first time.

I had been told: “Gus, these guys are struggling, they really need your help. They are always late, and everybody complains about the quality of their work, it’s bad, very bad”.

I expected a demotivated team of technically poor developers with its members playing video games or youtube videos instead of doing their job, but I was wrong.

No developer was slacking or pretending to work, on the other hand, I saw people with worried faces shuffling around, some listening to angry customers, some head down into code, some testing and quietly cursing.

To a newcomer, they looked super busy and doing their thing.

I perceived the first hint of trouble later in the day. I went to talk to some of them, just introducing myself and telling them that I was going to work with them to try to make their life easier. Each and every one of them was too busy to talk. All of them had something urgent, being a production issue, being a customer waiting behind their backs, or a release they had to finish by 5pm. Sorry, sorry Gus, I really can’t now, I have this blah blah…

I took it in and let them alone for the day. The day after, I kept on observing without saying a word. The amount of pressure that I saw applied on to these poor kids was frightening. In the same day I saw 8 different people go to the same developer and demand he finished something he was meant to have finished already. The requesters were different people and asked for 8 different things, all quite angrily.

The subsequent days, my observations stressed more and more this situation, the people were pushed over the limits and by trying to finish things quickly and relief some of the pressure were skipping steps and introducing new problems, new issues to work on, and so on.

I kept on observing and asking questions here and there, but the people saw me as somebody that couldn’t help them with the code, hence quite useless. I had to do something different.

On the 4th day, in the morning, after their standup, I told them to stop doing what they were doing and come and have a chat with me.

Believe it or not, It was almost impossible to get them off their seats.

no-thanks-were-too-busyThey felt they could not leave the sinking ship, they needed to continue trying to flush the water out with their hands. Did I have a powerful drain pump and could save the boat easily? They didn’t have time to learn how to use it, they needed to keep on shovelling with their bare hands.

I eventually got them into a room. We had a retrospective. I disguised the retro to be something else, because I had heard from one of the developers: “we don’t do retrospectives anymore, what’s the point if we don’t have the time to change anything?”

That’s a very valid question. Very.

The team was obviously overloaded and didn’t have the maturity and the necessary negotiation skills to express that to their customers and stakeholders. They had reacted to the overload with what I call the “headless chicken approach”. It works like this: “Just do all you can, forget about quality, process, product, customers, just run for your life and even if your work product is terrible, people won’t be able to blame you, as you work like a donkey every day.”

fuck-it-let-s-just-panic-and-run-around-like-headless-chickensDo you think this is uncommon? Well think again.

The first step we took was to visualise the work in progress. The guys were using Jira with no physical board and didn’t realise how much work they were really taking on. The board was scary, full scary I mean.

As the work came from many different products, another thing that we did was separating the products into different classes of service.

By doing this we immediately saw that one product had most of the tickets, why? We don’t know yet, but at least we are aware of it now.
After this very simple step  the team members started having conversations that were beyond the need to finish MyNewFeature, they started looking at current priorities and talking about the whys of the bad situation they where in.

Then they started talking about experiments to fix it.

They were improving the system.

I looked outside the window, the sun had come out.

p9220189_dublin_hapenny
What were the 3 steps we made that enabled the behavioural change?

  1. Acknowledge we were in an unsustainable situation that needed changing
  2. Agree the team had the responsibility and the authority to improve it with my support and management agreement
  3. Visualise the work they were already doing

 

Just this small change had transformed a group of intelligent people acting like headless chickens into people that were trying to improve a complex system, not bad for a weeks work I’d say!

If you are curious stay tuned and I will tell you what happened next, no more chickens, I swear.

The new episode of the story of Team X is out

What I learned about helping teams use WIP limits

traffic

The Work In Progress limit (WIP limit from now on) is one of the most powerful but counter-intuitive concepts I had the fortune to encounter in my work life.

When suggesting teams to introduce a WIP limit to their boards, I hear objections like “are you saying that doing less things at the same time is going to make you faster? You must be wrong? If I start 10 things I’ll finish earlier than if I can only do 2 at the same time!”

or “Working on one thing at the time only? That’s NOT efficient!

It is indeed a counter intuitive concept, proven by the fact that most people object to it based on common sense.

You might say, why don’t you explain the reasons behind the value of WIP?

Don’t get me wrong, I am familiar with queuing theory, Little’s law and the relation between resource utilization and queue size, but these concepts are not something that can be explained easily every time that the objections are brought forward. Funnily enough, explaining them, is not really efficient.

I have been helping teams use Kanban and the Kanban method for a while now and I have used different approaches around WIP limits to identify the one that gives the best results for the teams.

I have come to the conclusion that the most efficient way to go about this is by (I hate the word) imposing the WIP limit at the very beginning of the adoption, as part of Shu in the Shu Ha Ri learning pattern.

The great thing about having a WIP limit is that it gives strong signals to the team

What’s the most important problem we have to solve now?
What’s the highest risk our kanban board is telling us about?

If your board has a WIP limit you will have to answer the questions and act, if you don’t have one, you can always pick the easy cop out of taking a new less important task
The questions posed by the WIP limit are uncomfortable ones, they won’t allow the team to take the easy option. That’s why I believe that teams will benefit from having them since day one.

I have seen WIP limits cause turmoil in teams, people initially feel uneasy. I believe, the feeling derives from the fact that team members don’t believe yet WIP limits will work, and this is due to their aforementioned counter-intuitive nature.

Eventually teams will internalise the fact that WIP limits help the team focus on delivering instead of retreating to more comfortable, less valuable tasks and it does indeed improve flow. But that’s after a while.

My point is, that if we don’t impose the limit at the beginning, the team might not get there on their own.

As I said before I tried many different coaching approaches, the one that worked for me better so far is this

a) A session with the team in which I go into the details of the mathematical reasons why WIP limits improve flow  (most people won’t believe everything but will have some context and hopefully some curiosity)

b) Get the team started with a system that includes a WIP limit initially set by me and low enough to be uncomfortable (see above)

c) Attend team’s standups, to discourage breaking WIP and ask the difficult questions I mention above if the team is not able yet to read them from the board

d) Facilitate a retrospective after 2 weeks of use and have a conversation around whether the limit is too low or too high

What was your coaching experience? Can you share alternative paths?

Things that make me happy

What did you learn today?
What did you learn today?

…doing a workshop on ATDD to new hires that are enthusiastic and participate actively making the experience fulfilling.

Myself and my colleague Mary Walshe gave our now traditional ATDD workshop to PaddyPower’s latest new hires and the atmosphere was great, everybody wanted to participate and learn, it just felt great.

Even more satisfying is seeing their answers to the “what did you learn today?” question on post its.  They really got it!

I am a lucky man, I enjoy my job.

 

Can we use impact mapping to define a training strategy?

It was a cold December morning in Dublin, I was shivering and wet getting back to my desk after a cigarette break, when I asked myself, “can you use impact mapping to define a training strategy?” No idea I thought. There is only one way to find out…

This was my first attempt to use Impact Mapping, and I had been dying to try it out since I first heard about it at Agile Testing Days in Potsdam less than a month ago, let me tell you how it went.

I had previously scheduled a meeting with a colleague to decide our strategy to coach our development teams to use Acceptance Test Driven Development. The meeting was in the afternoon, I thought, let’s use this to try it out.

Here we are, me at the whiteboard my colleague sitting in front of me.

First question “Why” do we need to coach the teams on ATDD? This helped us identify the real business value we were chasing, in our case after a few tries and some close calls ended up being “Zero bugs detected in UAT”. Once we identified this, it opened the discussion on how to quantify the money value of the business value. This was an extremely interesting exercise and the discussion provided us with a clear view on how this will make the company money and how to address management questions on this specific topic, pretty neat!

We got the biggest value when we asked ourselves what behaviours we needed to change in our customers to achieve success. This first of all sparked discussion on who our customers were and we expanded our thinking about the development teams as a whole to looking at the different individuals, different roles and levels and we also included management in the mix. This in turn sparked a lot of discussion on what category we needed to influence first.

We asked ourselves “who can help us achieve this and who can hinder us?”. This was a penny dropping moment as we quickly came to the conclusion that our customers for the first delivery were not all the development teams but some key influencers as their behaviour change would influence other people’s behaviour as a consequence. This cut quite a lot of the ground work considering we have 7 development teams to coach. By thinking about who could have hindered us we also thought about some specific approaches to influencing this group of people.

Now we had a business goal with a money value associated and we had identified the customers and the behavioural change. It was time to test a few options. This was quite a straight forward operation and came really natural to us to assess our first deliverable was going to be a Workshop for the influential people we had selected.

The map drawn on the whiteboard wasn’t anything artistic to be honest but here you go.

ImageTraining strategy impact map

(In case you’re wondering the sinking boat was our visualization of the impact of lack of team ownership :-))

Always focusing on the behaviour we needed changing we managed to get into more of the details and the content of the Workshop and in less than an hour we ended up with:

Clear understanding of our business goal, its value and how to measure success (0 bugs in UAT)

Clear view of what the max value min effort first deliverable was going to be (workshop to key influencers)

Clear view of who our customers were and how to approach them (influencers, hinderers + development teams)

A high level plan of the content of the workshop to be delivered

This was one of the most energizing and productive meetings I have had in a long time, we came out of that room with clear plans and a nice feeling we are going to succeed.