December 23, 2016
We all know that Agile is as buzzword-ridden as anything else that helps people generate an income. There are a lot of gems among the buzzwords associated with agile ways of working though but a lot of the time we tend to take them at face value and not look at where and how they fit in. I’ve been looking at some agile practices and tried to reason around the relationships between them and one of the things I realized was how essential Trust is in order for most of the other practices to work. You can fake a lot of things but if Trust is not truly there so many of the other things we try to do will not only fail, they might also make things worse.
One practice that has always been at the essence of agile is Transparency; we want everyone involved to have current and correct information. Adding a window to a solid brick wall won’t offer any Transparency though. We can’t buy Transparency in the form of a whiteboard. Worst case scenario, the whiteboard only serves as giving credibility to lies, useless data and wishful thinking. Transparency needs to be combined with, among other things, Trust and Autonomy to provide value. The “Transparency” offered when Trust is lacking will never be true Transparency. It will be a display of what the team believes that people around them want to see. It will be fidgeted numbers such as story point inflation, velocity boosting with “almost-done” stories and smokescreens hiding work performed under the radar. In short, any “Transparency” offered when we don’t have Trust or we suspect that we’re not Trusted will be a pile of lies.
So if we add Trust, will that transform Transparency to a valuable practice? I’d say no. Not unless we also add Autonomy to the equation. A team that is not Autonomous will always have dependencies to people and teams outside the own team in order to deliver any business value. When all a team can deliver are small parts without intrinsic value, the data that come out is mostly worthless. No true progress can be shown, only task completion. In any cases but the truly basic ones, task completion won’t give us much information regarding how close we are to realizing any true value. The complexity of what we do will hide a plethora of new challenges behind every completed task. Challenges that only surface towards what we thought would be the end, when we put everything together. In a similar way if we have an Autonomous team that lack Trust and/or Transparency, they are potentially a true danger to the organization. If they act without Trust, it will be a high stakes lottery ticket where there might be a brilliant idea in the jackpot but more likely the team will be a liability that acts without any information sharing with the rest of the company. Adding Trust could be a way to better the odds of something good coming out but without Transparency it will not be aligned with the rest of the company and its strategies.
Before adopting the next good practice, see where it fits in your context. Look for the untold prerequisites for the practice and consider if you fulfill them. Do you have the necessary mutual trust in your organization? And remember that trust ISN’T earned; it has to be offered in advance because people WILL act according to the expectations that are offered to them.
January 31, 2014
I think most of us agree today that learning is almost always a bottleneck for our development projects. When asking people after completing a project how long it would take them to do the same thing all over again, the answers usually range between 10-50% of the time it took the first time. The second time around all obstacles involving learning would be removed and everyone could focus on producing. This is where agile methods and practices come in; designed to facilitate fast feedback and fast learning cycles to improve on the lead times.
When it comes to new product development (NPD) most organizations that I’ve come in contact with have a tendency to lose severe amounts of calendar time before the actual development begins. When I started looking into the Fuzzy Front End (FFE – “the phase between first consideration of an opportunity and when it is judged ready to enter the structured development process”) of NPD with a colleague of mine to see if- and how agile ways of working could help during this phase I came to realize that even though learning is what we try to do at this point, the real bottleneck is usually decision-making. Many organizations don’t have a set of business rules to guide them during the decision process for new products and even people on CxO positions are often paralyzed by the Parmenides fallacy; action is more dangerous than inaction.
It doesn’t make sense for us to speed up the other activities of the FFE if the organization is going to waste that time on procrastinating on decision-making. So what can we do to speed things up a notch? It’s been argued that the FFE-part of NPD has an inherent uncertainty and ambiguity to it that makes it an ill fit for structured processes. Be as it may with this (I’m quite certain that we can do innovation and be creative within a framework as well though), the decision process that runs in parallel with the creative processes can definitely be sped up. With a good enough set of decision rules, any company can limit the impact of decision-making as a bottleneck.
When entering the NPD-process, we should frame the research within the limits of our corporate strategy. This will tell us what kind of opportunities to look for. Do we have a plethora of service- and product options to explore or should we stay focused on a given market segment and type of solutions? Are we Google or are we a cab company.
We should decide beforehand on the level of risk that we’re willing to accept. Are we willing to explore completely new products? Are we prepared to explore new technologies? Are we willing to create new markets? Or should we perhaps stick with extended product capabilities?
What level of organizational change are we willing to accept in order to develop and/or produce new products or services? Can we kill an entire production unit and build a new service organization? Or do we have difficulty even to introduce a new role to our organization?
How much are we willing to invest in exploring new opportunities? What payback time do we expect?
Most of us aren’t working for companies like Gore, Google or 3M. We might like to believe that we have the freedom to explore all kind of opportunities but if we snap out of this dream before we act on it, we can become a lot faster at following up on new ideas. What we need at the beginning of our NPD process is to:
- Make all constraints explicit
- Decide what data is needed to make a decision
- Commit to innovation within these constraints
And don’t forget to combine fast decision-making with validated learning and agile practices to minimize the impact of poor choices, because the decisions will not always be perfect. But then again, neither were the decisions that used to slow us down.
January 27, 2014
Have you ever experienced working in- or with “teams” that never seem to get to a state of working together as a team? I put the word teams within quotation marks since these aren’t really teams, they’re just administrative units. This has happened to me a couple of times and no matter how much we struggled with trying to get everyone on the same page through working with visualization, teambuilding, meeting formats, goal setting, work spaces etc, everyone would go back to their desks and continue to work as fractions. I’ve gone through several phases of explanations and rationalizations in my attempts to explain to myself why we had these problems. A while back Esther Derby introduced me to Glenda Eoyang’s work describing the effects of containers on systems and that really put the spotlight on some of the driving forces behind our problems.
Basically a container is something that bounds one part of the system from another and constitutes a difference. Containers can be:
- something physical such as walls, desks or cubicles that separate people or unite people.
- of organizational nature; people reporting to different managers, belonging to different departments or being hired consultants as opposed to employees.
- something conceptual such as purpose or rules.
- behavioural, e.g culture or family situation.
The effects of these containers will greatly affect how people are going to work together. Some of them will work in favour of collaboration while others will drive a wedge between people. When I began to model the containers that I could identify within the troubled teams it was really easy to see how many things were pulling people apart instead of holding them together.
People may have been assigned to the “team” and in best case even be co-located. We might have a unifying goal of delivering a product or service but that’s where the positive forces ended. Then people would be experts belonging to different organizational units. They would be reporting to different managers. They could get input to their work from different sources. They would be seated together with a few people with the same kind of expertise. They belonged to different budgets. Their personal goals were set with different managers and not aligned. They belonged to different subteams. They would have to work on other projects outside of the dedicated “team”. Etc. Etc. Etc.
Seeing all these forces working against us made it clear that we had a snowball’s chance in hell of building teams that would actually work as teams. For every action we took to align the team members there would be ten other actions around us that pulled us apart. My guess is that if we would have come much further if we would have focused more of our energy on identifying and redesigning the root causes of the forces pulling people away from each other instead of performing a tug of war with these forces.
Some time ago I was asked to work with a “team” that “had problems delivering” and “the few things that did come out of the team was of poor quality” and as if that wasn’t enough, “people were generally not happy about working in the team”.
The “team” – it turned out, consisted of a handful of developers. They got their work from a couple of different business analysts in different parts of the organization and when they were done coding, assigned the work to some testers in another part of the organization. Before taking on the assignment I made one request and that was to get to work with all three disciplines as one team; requirements, development and test. We did a lot of different things together in order to overcome the challenges but the one thing that made it at all possible for us to create a high performing team was the tearing down of old containers and building a new one around the team.
I’m sad to say that the reason I’m so certain about the power of the containers in this case was that as it turned out, the company structure wouldn’t allow for this organization in the long run. Soon after I left the team, group managers once again split the team into three parts; requirements, development and test, each group with their own team lead. None of the other practices we had put in place were strong enough to withstand this break-up and pretty soon everything was back to square one again.
My lesson from working with this team was that it’s not enough to learn to see these invisible structures, we also need to see the incentive systems that put them in place. But I’ll save that for a later post.
January 20, 2014
I’ve noticed that a lot of organizations seem to have problems with Scrum of Scrums. Some coaches refrain from recommending them altogether while others might use them with low expectations. Without making too many generalizations I’d like to describe one of my more positive experiences using Scrum of Scrums – as an indicator of our ability to work together.
My assignment was to coach a Scrum project with ~100 members and seven development teams distributed over three countries. One of the pains that were brought to my attention early on was how dysfunctional the Scrum of Scrums was. All the ScrumMasters and the project manager would have a teleconference three times a week where the ScrumMasters would take turns giving status reports(!) and complaining about the problems they had. I was approached by some of the ScrumMasters asking me if we shouldn’t have the meeting less frequently since “nothing new is being said. The same problems are being brought up in every meeting.”. I asked them if they thought the real problem was the frequency of the meetings or their inability to solve problems between the meetings. They kind of recognized my point and agreed to continue with the three weekly meetings for a while longer.
We began to move away from giving status reports and I also suggested that they started to write down the issues that were being brought up and make sure that unless someone claimed responsibility for actually working on an issue, they wouldn’t be allowed to keep complaining about it in this forum. My idea of writing down the issue was to create an excel-sheet or something similar in a shared folder but apparently in this organization, there would have to be a JIRA project to store such information. It also turned out that it would take about a month to create said JIRA project.
Since I had a hard time seeing that JIRA would be the way this problem got resolved, I also started working on other things in parallel. The first thing we did was to get all the ScrumMasters together to get to know each other. I managed to get the funding to fly all ScrumMasters to one of our sites and hold a retrospective and some other workshops. It was a great day with people getting to know each other but it still wouldn’t be enough. When, towards the end of that day, I asked if everyone in the room had everyone else on speed dial, the frightening answer was that no-one had anyone else’s phone number in their cells. Getting this problem solved was easy, the problem was to get everyone to use the phone numbers.
After this day together, I began requesting from each ScrumMaster to call all the others’ on a daily basis. Whether they had an issue to talk about or not, they should at least make a social call to see how the others’ were doing. This didn’t happen immediately; most thought that they’d get away without making the calls but I kept asking them about it in our one-on-one’s.
I can’t tell exactly when the transformation happened, but before the new JIRA project had been set up, I noticed that fewer and fewer issues were being brought up during the Scrum of Scrums. Instead people were having social discussions and talking about problems in a past tense. When I started inquiring about this I learned that there were still a great deal of issues but now they were being solved outside of the Scrum of Scrums. The teams (or at least their ScrumMasters) had begun caring about each other. One team even offered to send some of their developers to another country to help one of the teams there before the other team had worked up the courage to ask for external help.
In a little more than a month we went from having a meeting that didn’t help us coordinate any issues or solve any problems at all, to holding a meeting where there were no issues to coordinate and no problems to solve. This made me realize that the daily stand-up and the Scrum of Scrums might not really be any solutions in themselves, but rather indicators of how well we communicate within our teams – outside of the meetings.
January 8, 2014
I love retrospectives and I love experimenting with different formats for my retrospectives. Today I tried a couple of new things that worked quite well so I thought I’d share this format with anyone interested.
The background is that I’ve just started coaching a somewhat new team that’s been going through a lot of changes lately. They had no history of doing retrospectives together so we had to start from scratch.
I almost always base my retrospectives on the setup described by Esther Derby and Diana Larsen in their excellent book:
- Set the stage
- Gather data
- Generate insights
- Decide what to do
- Close the retrospective
Normally I add the step “Follow up the last retrospective” between steps 1 and 2 as well but this time there was no retrospective to follow up on so I skipped that one. Instead I added another item; “Set a challenge”. I’ll get back to that though.
Set the stage
I explained why we do retrospectives and went through the agenda. Then we took a look at Norm Kerth’s Retrospective Prime Directive and I made sure that everyone was committed to follow it. Finally we did a check in. Today’s check in was to answer the question: “If I was a weather, what weather would I be right now?”
- “I’m sunny.”
- “I’m sunny with some wind, because I’ve had some trouble with my computer today.”
- “I’m a big dark cloud.”
Since we had one big dark cloud in the group, I asked everyone who had something on their mind that bothered them to write this down on a piece of paper and put it away in a pocket until after the retro. This is a symbolic action but it often helps people to mentally put their problems away for a while.
Set a challenge
I had never tried this before but as a way of focusing the retrospective I wanted to try and turn it inside-out or upside-down and start with what we wanted to achieve. I asked the participants to work in groups of two and come up with a challenge for the team in three different dimensions:
- Well-being of the team members
The reason for having these three dimensions was to find a balance between things that could possibly be compromised if only one or two of the dimensions were considered. I asked them for small and concrete challenges that could be tried within one month. No high goals that the team would have to live by for their rest of their lives, just simple, measurable challenges to experiment with.
The groups came up with a lot of great suggestions in all three dimensions. Several groups had come up with duplicates but I thought all ideas were really good. Now we needed to narrow the field and select just one challenge in each dimension.
I’ve been using dot voting a lot in the past but for a while now I’ve had a nagging feeling that it doesn’t produce great outcomes. Small issues that are only important to a minority can easily be selected before more important issues that would benefit a larger group depending on people’s tactics. I decided to try a (for me at least) new way of voting that I came up with. I based the idea on the concept “fist of five” and decided to call it commitment voting. I asked everyone to put a vote on all alternatives. They should give each alternative a vote between 1 and 3.
1 was a disqualifier or veto. “I’m actively taking a stand against this.” If anyone put a 1 on an alternative it would mean that the group wasn’t committed to that alternative and it was taken off the board. (This is probably a sign that we need to talk more about this as well.)
2 would mean, “I’m standing behind this.”
3 would mean, “I’m highly committed to this. I could take lead on making sure it happens.”
A couple of the alternatives got 1’s but most of them were 2’s and 3’s. The positive thing about getting some 1’s was that people felt it was ok to say ‘No’. To me, this was a healthy sign. After counting the 2’s and 3’s in the rest of the alternatives, we were left with one winner in each category.
- Well-being: “Getting more constructive feedback.”
- Productivity: “Discussing requirements and design before implementation.”
- Quality: “Getting more stable test-environments.”
I then asked the participants to pair up again, but in new constellations. After telling them about Jerry Weinberg’s Rule of Three and the Iroquois Rule of Six, I asked them to come up with six plausible explanations to why we hadn’t already solved the three challenges historically. I asked for six reasons because:
“for each apparent phenomenon, devise at least six plausible explanations, every one of which can indeed explain the phenomenon. There are probably 60, but if you devise six, this will sensitize you to the vast array of potential options and prevent you from locking in on the first thing that sounds “right” as The Truth. This attitude supports the mind in discovering new ways of perceiving, keeping our perceptual biases in check while allowing them their say.”
After a while someone said: “We’re on par with the old dude now but we’re still getting our asses kicked by the Indians.”
Since we were running out of time I let them get away with the reasons they had managed to come up with by then. It varied between the challenges and the groups but all of them had come up with several good explanations for each challenge.
After getting all possible explanations to why we hadn’t already solved the challenges in the past, up on the wall, the participants did an affinity mapping. They got a handful of different groups under each challenge; “Lack of knowledge”, “Lack of time”, “Lack of common process”, “Lack of communication” etc.
Decide what to do
Based on the challenges and the insights on what had been stopping the team in the past, we had a discussion on what we could do to meet our challenges in the near future. We agreed on two actions before we ran out of time:
- A weekly feedback forum at Friday coffee.
- Regular pre-planning meetings with representatives from all disciplines.
Closing the retrospective
I finished off by thanking everyone for their active participation and asking them for some thoughts on the retrospective and the format. The feedback was very positive and they felt that this was something that they should have done all along.
As always, time is almost never enough. Guiding people through a process like this while at the same time giving some space for discussions takes longer time than expected.
Setting a challenge at the beginning of the retrospective and then looking back to see why we haven’t met it before worked very well. The one problem I could see with this was that we only focused on problems when looking back. I’d like to also look at strengths and positives. I might compensate this by doing an Appreciative Inquiry retrospective the next time.
My commitment voting-scheme worked better than I had expected. I’ll definitely try this more in the future instead of dot voting.
February 15, 2013
Let’s pretend for just a second that we need estimates in order to perform our business. Some of you will say that we do and some will probably say that estimates are a big waste. But for the moment, let’s at least pretend that they have a place.
Usually we do estimation in order to provide some kind of predictability in our deliveries. It’s just that an estimate is not enough on its own. Knowing that something will take 6 man weeks to implement has no value unless we know that we have 6 man weeks at our disposal. We need to combine our estimate with some kind of capacity measure in order to get predictability. There’s a big difference if our team can give the task 6 man weeks worth of attention within the next two week iteration or if they’re overloaded with other work and need 4 calendar months to finish the requested 6 man weeks.
So we need an estimate AND a capacity in order for the estimate to have any value. The thing is that it’s not enough either. When we estimate, we also need to agree on what we’re estimating. We need to have the same view on the expected quality; both external and internal quality. Everyone involved needs to know how the solution is supposed to behave; if the customer expects a Lexus but a developer is about to build a go-cart, the estimate will have no value. Everyone involved needs to have the same view on the level of confidence for the internal quality; if the developer is ok with Windows 95 quality but the tester is expecting a pacemaker level of confidence, the estimate will have no value.
So now we need an estimate AND a capacity AND an understanding of quality in order for the estimate to have any value. The thing is that if we make an estimate and it’s wrong, the effects will fade over time (unless we’re dealing with systematic estimation errors). If a requirement was estimated to take 5 days but actually took 10 days (a 100% estimation error), the effect on a six-month project will be less than 4%. An error in capacity on the other hand will multiply if left to itself. If a team is working in two-week sprints and plans are made with a 10% error in capacity, this error will multiply for each sprint and for a six-month project, we’ll have to add another two sprints to the end in order to finish what we had initially planned. But even worse is the cost of poor quality. These costs tend to rise exponentially with time. The longer time a poor assumption or a bug goes unnoticed, the more code will get built on top of that error and either multiplying the instances of the actual error or at least building dependencies to the error.
Error in estimate – impact decreasing linearly with time
Error in capacity – impact increasing linearly with time
Error in quality – impact increasing exponentially with time
But where do people put their attention when plans fail? They usually address the estimate and way too often put blame on the teams for not doing good enough estimates. Apart from being unethical since estimates are nothing but guesses, it’s also a waste of time since any deviations from the plan are much more likely to come from errors in capacity measurements (or worse; capacity estimates) or a mismatch in the understanding of what quality (or functionality) was being estimated.
So if predictability is what you’re looking for, don’t invest much in your estimates, instead you should make sure that your capacity is known and that quality (internal as well as external) is well understood. And that’s why your estimates don’t really matter.
September 24, 2012
Today I needed to come up with a check-in for a workshop with people from different parts of the client organization. Most of the participants didn’t know each other beforehand but we were going to spend the afternoon together so some kind of introduction was necessary. A major goal of the workshop was to get people to share certain aspects of their work experiences, thus a trusting environment was an important factor. At the same time we had quite a tight schedule so I couldn’t take more than a couple of minutes for the check-in part.
- People did not know each other
- Short on time
- Get participants introduced to each other
- Get participants to talk in front of each other
- Get participants to gain some trust for each other
These preconditions and goals are common for a check-in but in most of my scenarios people either know each other better to begin with, or I have more time to spend on the check-in. What to do?
Now, I do have a relationship with Macallan and Ron Zacapa but it’s quite casual so I haven’t felt the need to attend an AA meeting yet. However, I started watching the movie You Kill Me the other day. In this film Ben Kingsley plays a recovering alcoholic so I got some insight into the format of these meetings without having to go there myself. I figured that opening up about something as personal as alcoholism in a room full of strangers requires a lot of trust and perhaps I could learn something from their format. So what would a corporate AA meeting/workshop look like?
Me: “Hi! My name is Morgan and I’ve been addicted to agile ways of working for ten years now.”
Everyone: “Hi Morgan!”
Me: “It all started when a friend gave me a white paper on XP and before I knew it I was using Scrum and TDD on a daily basis.”
What do we have here?
First; a presentation. I tell everyone my name and something about my qualification to be in this room. Now I’m not a complete stranger anymore.
Second; one of the oldest tricks in the book when it comes to remember people’s names is to repeat the name immediately after you’ve been introduced. So we also have increased everyone’s chance of remembering the names of the other participants by having them say “Hi Morgan!”.
Third; for me the feeling is that everyone welcomes me by saying “Hi Morgan!”. They have recognized me and my presence and they know my name.
Finally; I get to share something about where I come from so we can find some common ground during the day.
This AA-style presentation took about 30 seconds per person and was not more advanced than a simple round the table presentation where everyone states their name and their role but my experience was that the details made quite a lot of difference. The participants felt a little bit silly about the format so some chuckles eased the mood without taking away the fact that people felt recognized and welcome. Everyone shared something and everyone spoke in front of each other. I will definitely use this format again.