Sunday, November 19, 2017

Gratitude

Expressions of gratitude in November are, in my opinion, so clichéd that they run the risk of coming across as superficial, and I avoid them accordingly. So for me to post this, my first blog post in over a year, in the month of November, on the topic of gratitude, is not something I take lightly.

Whether you prefer the term blessed, privileged, lucky, whatever, I am a very fortunate man. The top of my thankful list is always my wife, but I wanted to focus this on something else. This past week I was given the opportunity to speak at a one-day conference in Minneapolis call Agile Day Twin Cities. It was the first time I had ever presented at a conference by invitation rather than proposal. I met some amazing people and got to better know an awesome person I'd previously met. I was treated as a peer by people I consider to be well out of my league. It was humbling and exhilarating and it never would have happened if I hadn't been invited to speak.

I'm not naming names here because these awesome people are also humble; plus, I don't want to come across as a suck-up or name dropper. But, if they're reading this, they know who they are, and I want them to know how grateful I am. I intend on expressing that gratitude by taking the opportunities they've afforded me, making them proud, and paying it forward.

I was so caught up in each moment that I didn't take any selfies or anything, but you can see pictures from the conference on Twitter. I plan on making this blog much more meaningful in 2018.

Monday, August 22, 2016

Agile2016 Things

BTW, have you watched "Stranger Things" yet? Amaze-balls!
I’ve had two great opportunities to learn and reflect this summer. The first was the Agile2016 Conference, and the second came 3 weeks later when I took my family on a beach vacation. Those two weeks have allowed me to mentally prepare for what happened today: I went from zero direct reports to four who, along with my technical lead that reports to our Director of Engineering, comprise the team that I will be leading in developing cloud-hosted solutions for Walmart’s brick-and-mortar stores. It will be my first time leading a team in my current capacity, much less leading one where the majority of the team members are brand new to both each other and the company itself. Here are some things I’ve decided to try with my new team.

I actually want to try a whole bunch of things that Jurgen introduced in his opening keynote, but this is the one I’m starting with. I’m working on mine now and, on Wednesday, my tech lead and I will present ours to the team. We’ll give them about a week, and then they’ll share theirs. I will keep mine up-to-date in a digital format that I can share with any other new team members that arrive in the future, as well as all of my friends here on the Internet.
I’ve joined the Slack team, followed them on Twitter, joined the Facebook group, and plan on getting involved with their open source repo on GitHub. I’m not sure what exactly I’m going to do with all this, but I’ve got the sticker on my laptop that reminds me everyday to Make People Awesome; Deliver Value Continuously; Make Safety a Prerequisite; and Experiment & Learn Rapidly. I’ll be re-watching Joshua’s mid-conference keynote when I share it with the team and perusing his slides for further hints and advice on how I can implement Modern Agility on my team.

The conversation in the Agile community has been trending more and more to value, but I most like the term that David Hussman used: impact. Before our team builds anything, we’ll define the impact it will have once it’s been delivered. We won’t work on things that don’t have impact, and we won’t call it done until we’ve validated whether or not the impact was made. 

4) Shorten Improvement Cycles
Following the conference, I had lunch with Woody Zuill of #NoEstimates and #MobProgramming fame. He talked about the process by which Mob Programming came into existence. He was trying to help the team learn how to identify what’s working and what’s not by holding short, daily retrospectives. By narrowing the timeframe for inspecting and adapting, the team could more easily pinpoint daily activities that were beneficial or not. As a software engineer, I see the daily retrospective as the algorithm that produced the solution of Mob Programming, and I want to see what kind of results it produces when I provide my team as the input to that algorithm.

Coming back full circle to Jurgen’s “Managing for Happiness” keynote, I want to use the Celebration Grid approach in our fortnightly retrospectives to highlight learning. I’ve grown accustomed to the “Fail Fast” language that permeates the Agile community, though I always use the Spotify language of “fail fast to learn fast to improve fast”. Well, if you fail fast but don’t learn from it then it’s not useful, so why not focus on the learning and not the failure?

Those are my five action items following a weeklong conference, a week of restful reflection, and challenge of leading a brand new team for the first time. If you attended #Agile2016, what were your takeaways? If you’ve ever been in a situation similar to mine, what advice do you have for me? I look forward to hearing from you!

Tuesday, September 1, 2015

How Walmart is Going Agile with… How Many Coaches?!?

Please note that the views expressed here are my own and do not necessarily reflect those of Walmart.

Walmart Stores, Inc. is the world’s largest retailer, a Fortune 1 company, which spans 28 countries with over 60 different banners. Many in the tech world may know about Walmart.com or @WalmartLabs, significant and important arms of Walmart’s Technology organization located in the rich technical environment of California’s Silicon Valley. What many people don’t know is that the bulk of Walmart’s tech talent lives and works in the heart of Walmart country, at their headquarters in Bentonville, Arkansas.

There you can find thousands of associates working hard to support associates in the home office, stores, clubs, and distribution centers, as well as our customers. It’s been the hub of Walmart’s technical solutions for decades and has been subjected to many of the struggles and opportunities that other long-lived IT departments have faced, including the recent challenge to “Go Agile”. And they’re doing it!

With four Agile Coaches.

The Agile Coaches Group in Summer 2015 (with our corresponding Guardians of the Galaxy bobbleheads)
From left: Spencer Offenbacker (Product Manager); Mike Carey (author); Todd Kromann; Joshua Rowell; Amanda Tygart

Only Four Agile Coaches?

That’s right. Walmart’s Information Systems Division employs only four full-time Agile Coaches – all internal – to lead the transformation effort for thousands of associates. They serve not only those working in Bentonville; the Agile Coaches have traveled to Mexico, Costa Rica, the United Kingdom, and India to help with the Agile transformation efforts in those offices. As the work of transformation continues to grow, Walmart ISD's Agile Coaches will likely travel to Walmart’s other development centers around the world in the coming years.

Mike Carey (author) with two associates from Guatemala while coaching in Costa Rica Mike Carey (author) with associates in Walmart's GTS (Global Technology Services) - Mexico office
Mike Carey (author) with more associates from Walmart's GTS (Global Technology Services) - Mexico office Associates in our GTS (Global Technology Services) - India office participating in an Open Space event facilitated by Agile Coach Todd Kromann
Todd Kromann with an associate in our GTS (Global Technology Services) - India office Amanda Tygart with associates from Walmart de Mexico y Centroamerica ISD

Walmart’s Agile Coaches are also not long-tenured positions. The Agile Coach role is viewed more as a sabbatical for those who have passion for Agile and have already garnered a reputation for assisting those around them with their transition to Agile. I know this well, because I used to be an Agile Coach. Todd Kromann and I were the first two Agile Coaches for Walmart ISD, a role I enjoyed for over a year and a half before leaving to take another position within the company. This helps ensure the working knowledge and skills of the Agile Coaches are relevant to the changing demands that come with an ever-shifting technological landscape.

The first two Agile Coaches for Walmart ISD - Mike Carey (author) and Todd Kromann - presenting at #Agile2014 At #Agile2014, from left: Mike Carey (author, 2nd Agile Coach); Barry Nicholson (3rd Agile Coach); Selena Hriz (Core Champion); Amanda Tygart (4th Agile Coach); Todd Kromann (1st Agile Coach); Subhendu Mishra (Core Champion)

Wait, so not only does Walmart only have four Agile Coaches for thousands of associates worldwide, they also rotate on a 1-3 year basis? How does that work?

With the help of Agile Champions.

What’s an “Agile Champion”?

In September 2014 we officially launched what we call the “Agile Champion Network”. We implemented the concept of Agile Champions for months prior to solidifying it into a useful structure, and found that the use of Agile Champions was invaluable to the Agile Coaches keeping their WIP in check. On September 26th we held an Open Space to kick things off, and a blog post was published on the 18th to help lay the foundation for what we were trying to accomplish. Below is a snippet from that blog post:

“The objective of this event is to crowd-source the collective intelligence and skill of our Associates to determine:

"What are the responsibilities of an Agile Champion?

"How do we identify existing and emerging Agile Champions?

"How can we better leverage our Agile Champions?

“As we've been preparing for this event, one of the frequently raised questions is ‘What's the difference between an Agile Coach and an Agile Champion?’

“I'll start by covering what they have in common. Both have a solid understanding of the Agile mindset, or what it means to ‘Be Agile’. Both are change agents who seek to increase value delivery and reduce waste. Both assist others seeking help with their personal or team Agile adoption.

“Now let's look at the differences.

“An Agile Champion is only expected to have a deep understanding of at least one facet of ‘Doing Agile’. Agile Coaches have a broad understanding of Agile practices, with depth of knowledge and experience in many facets.

“An Agile Champion assists others part-time; he or she is an active practitioner on an Agile team or project. Agile Coaches have experience as a practitioner (and we have organized ourselves as an Agile team), but our full-time job is to assist others.

“[…] The Agile Coaches have an immense responsibility for such a small team, which is why the Agile Champions are so important. The leadership and initiative of our Agile Champions take some of the load off our backlog, allowing more people to get the assistance they need. If you are interested in taking a more active role in the adoption of both ‘Being’ and ‘Doing Agile’, please plan to attend the Agile Champion Open Space next Friday.”

Out of the Open Space, it was determined that an Agile Champion should possess the following traits or skills:

  • Knowledgeable about one or more specific aspects of Being or Doing Agile and have a willingness to share that knowledge
  • Credibility in the organization
  • Excellent interpersonal and communication skills
  • Ability to demonstrate the Walmart Culture
  • Passionate, positive and enthusiastic attitude
  • Commitment to continuous learning and improvement
Agile Champions opt-in to the network, where those seeking assistance can find them and reach out. Champions register with their name, the skills with which they can help others, their location, the number of hours per week they are typically available, and a few other pieces of information. Those seeking help can search by skill and further sort or filter by any of the other attributes before selecting someone to reach out to. We currently have nearly 100 Agile Champions across half a dozen locations worldwide, all willing and able to help their peers through this journey.

Walmart Coaches and Champions at #Agile2015
Standing, from left: Amanda Tygart (Agile Coach, ISD); Amber Wright (US Agile Champion); Marc Thomsen (UK Agile Champion); Jenny Swan (US Agile Champion); Robert Moores (UK Agile Champion)
Kneeling, from left: Tony Goulart (eCommerce Agile Coach); Luis Figaro (Brazil eCommerce Agile Coach); Jerry Schroeder (US Agile Champion)
Clockwise from front-left: Mike Carey (author, Agile Coach); Arturo Robles Maloof (MX Agile Champion); Joshua Rowell (Agile Coach); Jessica Collins (US Agile Champion); Barry Nicholson (former Agile Coach, Agile Tools Product Owner); Todd Kromann (Agile Coach); Amanda Tygart (Agile Coach)
A sampling of Walmart Associates (mostly Agile Coaches and Champions) and significant others from around the world at an "ISD Remotes" dinner, hosted by the internal Agile Community

The “Revolving Door” We Love

In addition to the self-service network, the Agile Coaches keep a pool of at least six Core Champions at all times to whom they frequently pass off requests for help that they know the Champions can handle. This helps the Coaches stay focused on the work that they alone have the skills or bandwidth for. Core Champions also pair with the Coaches frequently to help build up their skills and reputation. It is from this Core Champion pool that Agile Coaches are chosen (by the Agile Coaches, not management) when one leaves to take on new responsibilities.

We know this is an unorthodox approach to such a massive undertaking, but we’re doing it and it seems to be working. Since officially starting our Agile Transformation in February 2014, the amount of work being done using Agile approaches has increased from around 10% to a projected 80%+ by the end of the current fiscal year. Our associates have gone from discussing whether or not Scrum is a good idea to how we can achieve Continuous Delivery. Our internal Agile Community has grown from 514 members to almost 1500, with dozens still joining every month.

There is no question that our success would not have been possible without our Agile Champions. Not only do they relieve some of the pressure on the Agile Coaches, they have embraced self-organization and grown in their capacity as leaders and change agents. They are showing others what it means to be a Servant Leader and help those outside their traditional circles of influence. They are empowered and it shows.

The model is simple: a small central authority (the Agile Coaches) working with a large, decentralized network of part-time "volunteers" (the Agile Champions). I highly recommend it.

This post is an attempt to take the experiment and conversation that's been run inside Walmart to the outside world. I want to hear your opinions, your ideas, your critiques, your experiences. Comment on this post or reach out to me via Twitter or LinkedIn.

Monday, August 17, 2015

An Agile Coach and a supervisor walked into #Agile2015...

Did you hear the one about the Agile Coach and Sr. Tech Manager who walked into an Agile Conference? I didn't know where I fit in!

For about a year and a half I have been an Agile Coach. Before that I was essentially the Agile Coach for a subset of the organization, and a Scrum Master before that. And before I was a Scrum Master, I was a Java developer. I've never worn a "manager" hat before.


Just prior to #Agile2015, I found myself moving my family over a thousand miles away from our home of 7 years to take a position as a Sr. Tech Manager. Anyone who knows me knows that being an Agile Coach was perfect for me because that's just what I do naturally, so those behaviors - that mindset - are not going away. So how does one be both an Agile Coach and a manager?

I guess we'll find out!

I took advantage of the largest annual Agile conference to explore the space and get some advice from people who are far more expert than myself. I attended some fantastic sessions, including:

I attended several other sessions, but these in particular stood out to me. I think Lyssa's was recorded, and I certainly recommend watching it once it is posted online.

I'm still trying to wrap my head around everything that I learned, but here are some common themes that I've managed to identify so far:
  1. A good manager and a good Agile Coach should look an awful lot alike
  2. Control is an illusion; trust and collaboration get results
  3. My number one job as a manager is to work on the environment that my people work in - given the right environment, the people will thrive and value will get delivered
  4. Decentralizing control (decisions) is faster and tends to drive better results...
  5. ... as long as you also decentralize the information necessary to make the best decisions
  6. It is not enough for a person or team to be robust/resilient - we must set our sights on antifragility
  7. There is no silver bullet - managers, too, must be committed to continuous improvement

I will be conducting experiments based on what I've learned and sharing the results - as much as I'm able - as they come to fruition. I am under no delusion that all (or any) of my experiments will be eagerly accepted or wildly successful, but I am certain that I will learn from each of them and come out a better manager and coach.

So tell me, what advice do you have for me as I start this journey? Or, if you also attended #Agile2015, what learnings would you like to share? I'm eager to learn as much as I can from as many of you as I can!

Monday, June 8, 2015

Life after your First Agile Project

This blog post is adapted from a workshop/presentation I recently led at the May NWA PMI Professional Development Day.



So, you just finished your first Agile project in a Waterfall organization. Now what? Let me put my Agile Coach hat on and tell you, “It depends.” It depends on whether or not it was a positive experience and how supportive the overall organization is of this “Agile thing”. Let’s run through a few possible scenarios.

Agile Sucks



You may be one of the many people whose first exposure to Agile is a negative one. Maybe your team was uncooperative. Maybe there were too many practices that were too new for the team to successfully adopt. Maybe the organization was so un-Agile that your team got exhausted from trying to swim upstream the whole time. Or maybe your team never really became an Agile team; you were a bunch of silo’d individual contributors with Waterfall mindsets trying a new front-end to the same process you’ve always used to get the job done. Whatever the reason, all you know for sure is that Agile sucks. It simply does not work; not for you, maybe not for anyone.

As an Agile Coach, I am sincerely bummed if this was your experience. I wish I could have been there to help make sure you knew why you were adopting Agile, not just how to go through the motions. I wish I could have been your heat shield, to protect you from the Agile defeatists and remove organizational impediments for you. I wish I could have helped you through the forming and storming stages of a team into norming and performing, so that you could benefit from a team who, corny as it sounds, was greater than the sum of its parts. I wish I could have helped you learn how to continuously improve not all at once, but incrementally.

But I wasn’t there, so what will you do? I hope that you will take pause and consider the possibility that those Agile proponents can’t all be crazy. What did they do or have that you didn’t? What might you have missed? Get involved in virtual and physical Agile communities, remain open-minded, and stuff your toolbox with as many practices and approaches as you can. Study the Agile Manifesto and its principles and recognize that what it’s defining is a mindset, not a methodology. You have to be Agile before you can successfully do Agile.

Agile Recipe



Maybe you had some success with Agile – or at least you think you did – and you want to keep doing it with all your future project teams. What really happened is you ran a successful Scrum project, and you’re ecstatic that you found a working recipe that will turn any team into a high-performing team. The team followed the Scrum Guide to the letter and there’s no doubt in your mind that this is what Agile is all about. Agile is Scrum, Scrum is Agile. If you follow the exact same approach, you are confident you will have similar results with your next team. After all, this is the same company, same culture, same organization support and/or impediments. Why shouldn’t you expect the same results?

The short answer is because it’s not the same team. Even if some of the people are the same, if the make-up of the team isn’t exactly the same then it’s a different team. You’ll be starting back at the forming stage with a new backlog, maybe even a new Product Owner, and there’s no guarantee that this group of people will interpret and embrace the Scrum Guide the same way the old team did. Hopefully you learned enough about teaching, coaching, and/or facilitation from your last team that you can guide this new team through the same pitfalls in a faster, safer way. Hopefully you learned Servant Leadership skills that will help you get buy-in from the team to try this new thing. Hopefully.

Hopefully you learn by the end of this project how much more successful the project would have been if you would have kept your previous team together. There is a cost associated with breaking up a high-performing team and knocking everyone back to the forming stage. There are also reasons that you may want to incur that cost in order to reap specific benefits, but “because the project ended” is not one of those reasons.

Keep the Scrum Team



Not only did you have success with the team, the team became a family. You are now a high-performing Scrum team that knows the process and each other so well that you couldn’t dream of breaking them up. You manage to keep the team together for the next project, and you hit the ground running.

This is great, but you have to be careful. If you have decided that Scrum is the be-all end-all of Agile then, eventually, the team will begin to stagnate. Scrum ceremonies will become ritualistic instead of productive, thought-provoking team activities. Group-think may begin to crop up, and the electric feeling of respectful debate will flicker out of the team. Some team members may become too comfortable, others restless. If you don’t do something, you’ll lose everything you fought to keep.

My hope is that you learn that Agile isn’t about following a recipe. It’s about starting with a recipe and making it your own. It’s about evolving the way you cook, trying new flavors, and learning how to transition from cook to chef. Hopefully you find all the success you were looking for and more, because our successes motivate us to keep going, keep trying.

Become comfortable with mining for conflict and facilitating conflict to unearth change that will make the team better. Stay in tune with the latest ideas and do your best to keep the team in the “Learning Zone”.

Grow the Agile Team

credit: universal studios

Perhaps you’re one of the rare few who, by the end of your first Agile project, recognize already that the team should be together and should not be limited to just Scrum. Perhaps you’ve already begun incorporating aspects of Lean, Kanban, DevOps, Lean Startup, Lean Enterprise, eXtreme Programming, or any number of other Agile approaches to help your team stretch and grow. You have a vision for how amazing your team can be – a unicorn among horses – and you recognize that Agility is a journey, not a destination.

The team can only become so awesome before running into major roadblocks within the organization. The team can become locally optimized, but the benefits will be limited until the entire system is optimized. After all, this is a Waterfall organization – you can run whatever methodology you like within your team, but there’s still an overall process that must be respected.

You’ll soon find that, in order to best help the team, you have to spend less time with the team and more time fixing the environment they live in. Maybe it’s the dependent teams – adjacent teams doing similar work or component teams, such as Security, Infrastructure, or Release teams. Maybe the Operations team is pushing back, trying to drive constancy at the sake of functionality. Maybe it’s the way work is approved and projects are formed that prohibit the team from responding to customer requests and market demands as quickly as they are capable. Maybe there are leaders or others in the organization that are afraid of change and, consequently, are passively or actively sabotaging the spread of Agile.

If you are successful, you will find that organizational Agility provides orders of magnitude greater than a single Agile team. You’ll find that what the team does rarely have as great an impact on their performance as the environment in which they operate.

Tuesday, May 5, 2015

The HiPPO vs. The Dude - The Eternal Prioritization Battle

If you didn't already know, I'm a huge fan of David Hussman's "Dude's Law", which states that "Value = Why? / How?". I've used this concept both in coaching in general (as it was intended), as well as a fun and easy way to execute Weighted Shortest Job First (WSJF) prioritization.

A universal obstacle to value-driven prioritization is the HiPPO - the Highest Paid Person's Opinion. I still encounter this in organizations that have been on their Agile journey for over a year. It's painful for me to hear them explain the difficulties they have with changing priorities while being held accountable for the successful delivery of original commitments. Yet, when I recommend they quantify their value somehow, they explain that it can't be done. Priorities are set by people that have much more subject matter expertise and are "above my pay-band". They have to obey the HiPPO.

How does one respond to the HiPPO? With the immortal words of The Dude, of course!

"Yeah, well, you know, that's just, like, uh, your opinion, man."

Opinions are important, but we want everyone's opinion and we want to put those opinions in context of all the available options! When a conversation framework is used to turn opinions into a quantitative estimate that can drive consistent and objective prioritization of work, it becomes easy to justify a change in plans. When teams track how much value they delivered relative to what was committed to (instead of static features or objectives) then the reluctance to take on valuable, unplanned work goes away; even more importantly, the team is armed with the data to push-back against unplanned work that really isn't as valuable as the HiPPO made it seem!

The HiPPO vs. The Dude

Dude's Law isn't the only way to prioritize work. There are other techniques you may decide to use, just know that if you stick with the HiPPO you run the risk of seriously damaging team morale and momentum. The HiPPO destroys, the Dude abides.

Friday, March 6, 2015

Practical Application of Dude's Law: The Value Estimation Game

Last summer, Todd Kromann and I presented on Dude's Law at Agile2014, and I figured it was high time that I wrote a blog post to walk through what we covered.

Dude's Law

If you're not already familiar with the Agile Dude, David Hussman, we highly recommend becoming familiar. David is most well-known for his coining of Dude's Law, which states that "Value = Why / How". The intent behind Dude's Law was to help teams avoid what David refers to as the "Recipe Trap" - doing things because that's what the "recipe" (read prescribed methodology or management mandate) says you're supposed do.

Dude's Law: Value = Why / How

Using Dude's Law as a coach is extremely powerful.It's a simple way for people to question everything they do. It emphasizes the need to know why we do the things we do. It resonates with people at an almost instinctual level.

WSJF

The more Todd and I used Dude's Law in our coaching, the more applications we found for it. Eventually, we noticed the similarities between Dude's Law and Don Reinertsen's concept of "Weighted Shortest Job First", or WSJF.

WSJF is a powerful prioritization tool. There are basically three underlying principles to WSJF. First, if all the work you have to do is the same size, you do the job with the highest cost of delay first. In other words, we want to do the work that is the most urgent or will cost us the most to not do. After all, if all the work items are going to cost us the same amount then we want to get the most out of the time spent.

Second, if all the work you have to do has the same cost of delay, do the shortest job first. In other words, if all work is equally expensive to not do then we want to start getting benefit as quickly as possible.

Third, if both the size and cost of delay are variable, do the weighted shortest job first. You do this by dividing the cost of delay by the size; the higher the result, the sooner the work in question should be executed. Since our highest cost is typically the manpower necessary to do the work, size is defined by duration. Duration is also useful as the denominator because it emphasizes the need to get things delivered quickly, so we have a bias towards smaller slices of value.

WSJF = Cost of Delay / Duration

Where's the work?

Before we go any further, we need work items. If you're applying this within a team, simply use the work that's already on your backlog (or slated to go on your backlog). Application of WSJF (or Dude's Law) tends to work best at the Epic or Feature level, but can be applied to User Stories as well.

If you don't have real-world work, you can do what we do - have the team(s) come up with their own work. We usually run this with multiple "table teams" - teams formed around tables in the room. We like to get one set of Features for the whole room so we can see the differences in prioritization by each group (it makes for some interesting conversation at the end of the workshop). To do this, we tell the room that we have a great idea for a game, but all we have is a title. Based on our market research, we know this title is a winner. We want to build "Angry Flappy Candy Bird Crush Saga". We then solicit five Features from the room that we think are essential to become profitable as quickly as possible. Voila! We now have the beginnings of a backlog.

Estimation Game

The key to applying WSJF (or Dude's Law) in the context of prioritization is the quantification of those values. We need numbers so we can do an actual numeric division to get a numeric value for WSJF (or Value). How do we do this? We highly recommend relative estimation! The most common way to use relative estimation is to use Fibonacci numbers to size items relative to each other. If you've never done this before, this can be daunting - especially for your first work item, when you do not yet have anything to compare the item's size against.

The technique that we use in this workshop is called the "Team Estimation Game". This technique works well to quickly get an initial backlog estimated. Since most people are used to estimating size anyway, we have teams estimate the size (what we refer to as "Cost of Implementation") first using the Team Estimation game. Once they're done, we have them write the number on the bottom of each story card, in the center.

The Team Estimation Game summarized

Cost of Delay

Now that we've estimated the cost of implementation, we need to estimate the cost of delay. We do this with the exact same approach we used for cost of implementation. When trying to figure out cost of delay, think of it in terms of, "How expensive is this to not do?"

When considering cost of delay, there are several factors we need to consider: inherent value to the business; urgency due to any number of reasons (legal deadlines, market demands, partner collaboration, etc.); the value of other work that's dependent on this work item being done first; risks that this item may reduce; and so on.

When we're talking about benefit, we usually use the priority scale where 1 is most important, then 2, then 3, etc. That is not what we're doing here. In this case, a 1 is something with a very low cost of delay - it's not very urgent, valuable, etc. The higher the number, the more expensive it is to not do.

Once each card has a number value, write it in the bottom left corner of the card.

Run the Math

Now that we have the two variables on the right side of the equation, we need to "run the math" to see what our WSJF (or Dude's Law) number - what we call the Value Index - comes out to be. For each card, divide the Cost of Delay (bottom-left number) by the Cost of Implementation (bottom-center number) and put the result, the Value Index, in the bottom-right corner. Order the cards from highest Value Index to lowest Value Index. This is now the priority that the math recommends you complete the work in.

As long as your estimation was honest, doing the work in this order will give you the greatest return on your investment over time. We can maximize how much we capitalize on our work as soon as possible. The below graphs help illustrate this.

Add value sooner with WSJF/Dude's Law

Remember Dude's Law

What we often find is that the first time people use this approach their prioritization is a little wonky. That's okay - the purpose of this exercise isn't to mandate what order you do things in. This approach is a conversation framework to help teams make sure they're working on things in the right order, factoring cost of implementation into the prioritization process instead of looking only at short-term benefit. Teams also find that this tool becomes more beneficial as they gain experience with it - they learn what they need to discuss in order to come to proper estimates that lead to better prioritization.

Remember the original intent behind Dude's Law: to avoid the Recipe Trap. This approach is not intended to be a recipe for the team to follow blindly. This is a tool, one that the team should understand the benefits of before they decide to adopt it. Understand the Why before jumping into the How.

You may also decide to elaborate on the formula. You may take the SAFe approach and discuss different factors to Cost of Delay instead of having a single number. You may decide to incorporate IBM's approach of Value Dials and ITBV. You may end up with a multi-sheet Excel workbook with dozens of numeric inputs that feed into a complicated formula. In the end, it all boils down to Why/How. Be careful how much extra time you put into prioritization and make sure the improvements to your prioritization justify that extra time.

Friday, February 27, 2015

Revisiting Normalized Story Points

It has been just over 18 months since I published my most popular blog post to-date: "Normalized Story Points". As of this writing, it has received over 5,400 page views, thanks primarily to the reference it has from Dean Leffingwell's blog post from ScaledAgileFramework.com entitled "More on Normalizing Story Point Estimating".

As an Agile Coach who takes continuous improvement seriously, I have learned much and grown much over the last year and a half. Here are a few of the things I've learned regarding Normalized Story Points.

Know Why You Want Them

I've become a HUGE fan of David Hussman's "Dude's Law". Before you do anything, you need to know WHY you're doing it, not just HOW to do it.

The purpose of Normalized Story Pointing is to enable high-level estimation of work for a SAFe Release Train comprised of closely aligned teams, any one of which may pull a Feature off the Program Backlog for implementation. Normalized Story Points should not be used for:
  1. Comparing teams against each other
  2. Forcing teams to use the same story point size (so that "1 Story Point" means exactly the same thing to everyone forever and ever amen)
  3. Defining "Story Point" to mean "Ideal Man-Day"
  4. Any punitive purpose
If you don't know why you're using Normalized Story Points, don't use them. If your intended use of Normalized Story Points violates the mindset established by the Agile Manifesto, don't use them (although, if this is the case then you probably won't realize it unless someone points it out to you).

Beware the Ideal Man-Day

The 4-step process for getting started with Normalized Story Points involves using time as a reference. This works well because you're using a very small story, one with very little complexity, which means the primary factor for determining "bigness" is lapsed time. That being said, I've found that teams that start with this approach have a very, very difficult time recovering from the mindset of "1 point == 1 ideal man-day". This is bad for reasons.

This also leads to teams always using days of availability to forecast velocity rather than taking a rolling average velocity or "yesterday's weather" as an indicator of what they're likely to deliver. Data trumps theory; the approach to get started is based on theory, while average velocity is data.

Individuals and Interactions over Processes and Tools

Processes and tools exist to enhance and enable interactions between individuals, not replace them. As I've explained in a previous post, the process of Agile estimation is beneficial primarily because of the conversation that it fosters. It's a well-formed game that drives a shared mental model of the work for the entire team.

I've found that teams that use Normalized Story Points may skimp on the conversation, especially if one team ends up with work that another team has already estimated (after all, we all share the same definition of story point, right?). This was never the intent behind Normalized Story Points, but that doesn't mean it doesn't happen.

Beware the Recipe Trap

David Hussman explained that he uses "Dude's Law" to help teams avoid what he calls the "Recipe Trap" - doing something because that's what the recipe says to do, without understanding what the intended benefits are. When it comes to Normalized Story Points, the recipe trap is very real and very dangerous. If you use it, be very careful about how you explain and implement it with your teams. If your teams can't all pull from a common backlog; if you're going to use them to run punitive metrics; if you want to streamline your process by reducing meaningful conversation; or if you're looking to use it because that's what SAFe says to do, I plead with you to reconsider.

TL;DR: Normalized Story Points can be a useful tool for your organization, but it's not a one-size-fits-all solution. 

Tuesday, February 17, 2015

Tell Me Why, not How

If you're familiar with the concept of User Stories then you've likely been exposed to the concept of a User Story "script". One of the most common scripts goes something like:
As a <who> I want <what> So that <why>
As a <who> I want <what> So that <why>

Looks simple enough, right? The problem is that most people who grew up in a non-Agile environment are not used to articulating the "why" in their requirements. They are used to capturing what it is that needs to built and how. Consequently, that's what usually end up making it into our stories, causing them to look like:
As a <who> I want <how> So that <what>
As a <who> I want <how> So that <what>

What's the difference? Let's look at an example.


Old Habits Die Hard

It's not uncommon to see a story that reads like, "As an administrator I want unique group IDs for tickets so that I can easily group tickets." On the surface it looks like a good user story. What's the "what"? The author would argue that it's "unique group IDs for tickets", but that's not the need. The need is to "easily group tickets". The author is trying to dictate how to meet that need in the user story. Those familiar with the INVEST model for user stories will recognize that this violates the "N" - Negotiable.

So we need to move the "what" into its place and establish a proper "why", which means we need to have a conversation. What valuable outcome is enabled by being able to group tickets together? Do you want static or dynamic grouping? Are the groups established by pre-established rules, or is the intent for users to group tickets however they like? Once we have our answers, we may end up with a better user story, something like, "As an administrator I want to easily group tickets so that I can sort and filter to easily find tickets of interest for a given task".


Why? Why?! WHY?!?

What have we gained by phrasing the story this way? A couple of things (at least). First, we have context for the story that will enable the team of professional problem-solvers to create the best solution for the problem within the bounds of the NFRs (Non-Functional Requirements) and FSRA (Future State Reference Architecture).

The second benefit is that we can better decompose the story. With the original wording, we would likely decompose the work into the layers of the system - creating a grouping cross-reference table structure first, then the business logic and virtual object code to associate tickets to groups, and finally the user interface layer for the administrator to actually use this functionality.

With the revised wording, we can leverage the advice from Agile Learning Labs at SmallerStories.com and split our story into smaller stories that are vertical slices through the entire system. This enables us to deliver value sooner and test our architecture as it's being built instead of all at the end.


Living in Reality

This is the most common anti-pattern that I've seen in the real world of user stories. What anti-patterns have you seen? What advice do you have for overcoming user story anti-patterns? Is this even really an anti-pattern?

Friday, December 12, 2014

The Socratic Coaching Approach

"The secret of change is to focus all of your energy, not on fighting the old, but on building the new." -- Socrates

I recently read "The Goal: A Process of Ongoing Improvement" by Eliyahu M. Goldratt. For those of you unfamiliar with this masterful work, it is the book that introduced the Theory of Constraints and was a primary predecessor of "The Phoenix Project" - in fact, "The Phoenix Project" not only makes mention of "The Goal", it is written in a similar style and format!

I learned a lot from "The Goal", but I was able to apply a couple of learnings immediately to my coaching: 1) The Goal itself; 2) the Socratic method. Granted, I'm very new to this and still have a lot to learn about the Socratic method, but that's not stopping me from giving it a try!

This is the basic conversation I've been having for the past couple of weeks, usually in response to "How do I convince so-and-so to be more Agile?"

Me: What is the goal of any company?
Them (usually after some thinking and a few guesses): Make money?
Me: That's right! Now, as a development center, how do we help the company make money?
Them: We provide solutions/capabilities/cost savings/etc.
Me: Okay, and when do we provide them? When we finish requirements?
Them: No...
Me: When we finish Coding? Testing?
Them: No.
Me: Then when?
Them: When we deploy.
Me: Okay, so we deliver value when we deploy. How often do we deploy?
Them: Not often enough.
Me: I agree! So as soon as we deploy something and start working on something new, we are basically just accruing expense until the day we release again. Yet, in Agile, we often find ourselves sitting on "Production-ready" code without releasing it. What are some other consequences to releasing code in large, infrequent batches?
Them: It's more difficult for our customers to handle the change. They require weeks of User-Acceptance Testing and have to build Change Management plans around each release.
Me: Precisely! Also, what happens if we find a defect?
Them: Defects can be very expensive because we find them late, which means they are large and highly impactful. Plus the defect may be something that we developed a long time ago and have forgotten about.
Me: Right. So... what I'm hearing is that when we deploy less frequently then we delay delivery of value and increase risk, both of which are contradictory to our goal to make money, is that right?
Them: Yes, exactly!
Me: So why don't we just define Agile as a mindset of striving to deliver more valuable functionality with high quality at faster rates? Then "Being Agile" means doing whatever makes sense to reach that goal. Do you think they could get on board with that?
Them: Absolutely - they'd have to be foolish not to!

Notice that I didn't say Agile until the very end. The idea is to help them realize for themselves the obvious truths that Agile espouses in a way that solves their problems or aligns with their current paradigm. This results in a more natural mindset shift, as opposed to one that feels forced or alien in a classroom environment. I've seen a lot of success with this approach so far, and I'm hoping to get even better with experience.

How about you? Have you used the Socratic approach in your coaching? What ideas, successes, or failures would you share with someone just getting started with this approach?