Should the Product Owner test everything?

A scrum master I’ve coached recently sent me this question and I wanted to share my answer. Would you have answered the same way? What did I miss? What do you ask (demand?) from your product owner?

 

Question: Hi, Jeffrey,

Quick question for you: Does Product Owner (PO) approval need to be on a per story basis, per feature basis, or both?

We are facing a situation where some of the system environments were not in place and completed work has remained in Dev until today. We received today that the Test environment is ready. The stage environment is due to be completed at some point in the near future. Meanwhile, our team has modified the team’s “Definition of Done” so that completion criteria are more aligned with our capabilities within the framework of system environments being incomplete. Hence, the above question.

Signed,
The Client

 

Answer: Hello, Client.

First, it makes sense the PO is included in the conversation around “Definition of Done.” I’m not sure based on the question if they are in the loop, or not. I say this because the team is building and meeting expectations for the PO. It’s the polite thing to do to notify them and explain the new definition. In some cases, it may be more appropriate to ask their permission to change rather than simply notify them of the change.

Second, this change makes sense to me; you didn’t have the right environments previously and now you do. It makes sense the definition should change to accompany the environment and how the team is working.

Third, what’s happened to date and how much trust is there between the PO and team? If the PO has already tested all the existing stories, then they may not want to do more than audit the existing stories in the new environment(s). If the PO has trust in the team and testers, they many never do more than audit the stories. If the PO doesn’t have time, they may never get to more than auditing stories. In the end, it’s a great big “it depends” kind of answer.

What do I want from the PO? I want more involvement, as much as I can get. I want the PO to test every story as it’s finished and at least audit functionality and features as they are delivered. I don’t often get it, but it’s my request.

How do I split these 40 stories?

A student from last week’s Agile Bootcamp Class taught at Harvard University (yes, that Harvard) asks,

 

Question: I have a project that involves 3 different users who want approximately 25 new fields on an application. Most of these fields are view only with the exception of 4-5 fields which allows input changes. However, user #1 wants to see all 25 fields, user #2 wants to see only 10 of the same fields, and user #3 wants to see 5 of the same fields. How should I approach writing these stories? Would I write a story for each user and each field – which could potentially be 40 stories? Or should I just combine the fields that all 3 users would want to view? For example, one field might be “name”. My user story might say“As a user #1, user #2, user #3, I want to see all names of employees eligible for an annual salary increase so that I can view all eligible employees.”

 

Answer: This sounds like an interesting set-up. My answers, of course, will be a bit general because I don’t know all the specifics. Also, I will make more stories if the developers are unfamiliar with the systems / tables / data, and probably fewer stories if the team knows quite a bit about the different systems. With caveats out of the way, let’s dig in! First, 40 stories? Yuck. Too many. Second, because you have 3 different users, I would start with stories for satisfying all of them (unless there is a reason to focus on just one). My presumption is doing this adds value the quickest, which is my guiding answer for how to break up stories.

  1. As user #3, I want to view < information from 1 field> so I can do my job.
  2. As user #3, I want to see < more information > so I can . . . .
  3. As user #2, I want to view < even more information > so I can . . . .
  4. As user #1, I want to see < all the information > so I can . . . .

The point of #1 is to prove we can display information, while the other stories add more details for the same and additional users. None of these is about editing the data. Depending on what keeps the users and developers happiest, there are a couple of options. I can insert story 1A; Edit the first field. After this I would insert more edit stories, probably grouped like the last 3 stories above, as appropriate. A different approach might be to insert the edit stories after the last story. Again, where is the value?

A couple side notes:

  • It doesn’t make much difference if you use “see” or “view,” the goal is understanding, not the worlds best grammar.
  • I would be remiss if I didn’t mention the value statement in your user story is a bit weak. What is the specific reason to view eligible employees; the actual awarding of salary increases, a validation check, a fascination with other people’s salary, something else entirely?

Lightweight agile only needs 2 goals

Most of the time, developers want to deliver useful software. They want their business partners and end users to be happy, even delighted to use their software. They struggle with this. Sometimes forget this. I haven’t worked with everyone, but for every developer I have worked with and gotten to know, this is true.

Given this, a desire to make customer happy with useful and delightful software, what would I do if I went back into IT management? If the desire was right and the software development practices were not effective, then I think I would introduce 2 ideas. I would not send everyone to agile training. I would not introduce stand-ups, paired programming, or burn-down charts. I would not change the language. All of that is too difficult. Too heavy.

What 2 ideas would I introduce to my team? I would insist on just 2 things. Here’s what I might say . . .

First I want us to develop a new review & feedback system. On a regular basis, we need to review what we’re doing and figure out how to do it better. Sometimes this would cover the last hour, when we where in a meeting. Sometimes it would cover the day, so tomorrow will be more effective. Sometimes it will cover a week or one month, so we make sure we capture the big and important issues. And to make sure we are on the right track we will also hold an annual review to check our overall direction and strategy, too.

Second I want us to start integrating code into the trunk multiple times a day. Anything less than twice a day means you’re in too many meetings! The reason for doing this is to reduce risk, because if you’re spending time working in a silo then you are adding or ignoring risk.

 

So, why these 2 ideas? Why did I ignore the rest of the principles surrounding the agile manifesto? Because everything the agile manifesto wants is covered in these two ideas. I am both forcing change and giving them a means to talk about the problems and incorporate the differences into their processes.

The first idea I will introduce is all about giving them the foremost thing a team or company, an individual or company needs is the ability to review it’s process and work, to honestly assess the output and performance, and be able to improve upon what they’ve done.

The second idea I will introduce is all about forcing fast feedback. Jez Humble has said, “If it hurts, do it more frequently and bring the pain forward.” It was counter-intuitive for me, but I finally learned he is right. We need to stop avoiding the painful parts of the process because we are making it worse. For example, if integration is difficult, waiting makes it more so. Do it so often the issue becomes irrelevant.

By requiring continuous integration as my second idea, I force the team to look at their environments, their tools, their permission structures, their process, their tests, their requirements, and more. Each change will cascade other changes, and in so doing, push the group to accommodate the greater needs. We may never call what we do “agile” even though I expect, with some time, we will be living the agile dream!

 

Okay, this is my dream. What do you think? What’s missing? Can you convince me even these 2 steps are too heavyweight?

Analysis In the Spotlight

It’s is with great pleasure that I announce Business Analysis is getting some official attention from both the Agile and Scrum communities! The first set of attention on us comes from the Agile Alliance . . . .

 

During this year’s Agile 2013 conference I talked with many great business analysts and product owners (including co-presenters Inger Dickson and Chris Matts, as well as Kent McDonald, Jake Calabrese, Ellen Gottesdiener, “Kupe” Kupersmith, and Leslie Morse). Toward the end of the conference I remember telling Kent and Kupe we should “take over” the upcoming BBCCon. (The Building Business Capabilities conference is the primary meeting for IIBA, Business Rules, and has tracks for Biz Architecture too!)

Agile Open Jam poster for BBC ConferenceMy simple idea was to run a conference within a conference. I don’t remember drinking during this discussion, but it certainly had all the bluster of a late-night, never-gonna-happen, kind of conversation. For those who don’t know, I am also known to push those conversations into the waking hours. So much so, I generated a list of topics we could share within our “sub-conference.”

As we all know, ideas are cheap. It takes execution to make something great. That’s where Kent McDonald shines. He took our conversation (I do not recall if I ever showed him my notes) and made it real with a proposal to form an official sub-group within the Agile Alliance dedicated to Analysis and Product Management. Further, he received official blessing, permission, and funding for us to share our knowledge at BBC and upcoming events.

Here is the official announcement:

New Agile Alliance Program

Analysis and Product Management in Agile

The Agile Alliance board recently approved a new program, Analysis and Product Management in Agile, with the purpose of providing a way for practitioners in the business analysis and product management communities to share stories, questions, and puzzles about using those skills in an agile setting and to share ideas between communities. The program Chair is Kent McDonald.

 

(Un)conference in a Conference
We’re pleased to announce that the first activity of this program is to facilitate an “(un)conference in a conference” at the Building Business Capability (BBC) conference where attendees can take part in conversations about the intersection of business analysis, business process, and business rules with agile principles and techniques.

 

The members of the Analysis and Product Management in Agile program will curate the outcomes of the discussions and make them available to Agile Alliance members on our website.

 

The Building Business Capability Conference is being held at the Mandalay Bay Resort & Casino in Las Vegas NV November 11 – 15, 2013.  It is the only conference that combines insight into Business Analysis, Business Architecture, Business Process, Business Strategy & Transformation and Business Rules & Decisions to facilitate creating the agile enterprise.  The conference is filling up quickly but registration is still available on the BBC Conference Website: http://www.buildingbusinesscapability.com/

 

We’d like to thank the International Institute of Business Analysis (IIBA) and the organizers of the Building Business Capability Conference for helping us put together a means for members of the analysis, business rules, and business process communities come together to discuss agile approaches.

Agile Alliance Newsletter, Oct 23, 2013

Special kudos go out to Kent for organizing this program and Ellen, who did most of the communication and coordination between the program and BBC. The (Un)conference will run in an open area outside the sessions and keynote Wednesday through Friday. I am one of the hosts, along with Kent, Ellen, Jake, and Mary Gorman.

If you want more information, here are the write-ups by Kent, Jake, and Ellen. Also, Yamo recorded a special podcast with Ellen and Mary. I joined for the last few minutes (at the 30:05 mark) to discuss the Open Jam.

 

Shifting focus to the other good news . . .

Apparently, the Scrum Alliance is also on board with our skill set, too! The next Global Scrum Gathering has a track dedicated to Scrum Product Owners (link to their call for Papers). I’m told this is the first time this has happened, previous conferences pushed their CSPOs into a track with other topics.

 

Note: I am a member of all 3 organizations discussed; IIBA, Agile Alliance, and Scrum Alliance.

pairon

Pair Programming: Looking from the Outside-In

Last week I learned more about Pair Programming than I gained from all my previous years of working with developers. (As a Business Analyst, I have never paired for a significant amount of time, but I think I’ll be forcing that issue soon!) My team had an hour-long discussion about pair programming that filled me with new insights. Here’s a summary of my notes so you can gain some insight into this engineering practice.

Project Background: ThoughtWorks was hired to develop a set of branded websites for our Client. The team was a mix of ThoughtWorkers and Client developers, analysts, and project management. The first few months were pretty rough with a scope significantly bigger than the timeline. Worse, while we thought we could avoid the 15-year old legacy code and a myriad of systems, we couldn’t and it added significant roadblocks. The result is we struggled for a couple months in the middle of the project. We turned things around and were very happy with the end product, which was due to go live in two weeks. Except the project was cancelled!

The team history — struggling against the seemingly insurmountable scope and environment, turning the project around, and the sudden cancellation (for business reasons, nothing to do with the project itself) — built the environment for very open and honest discussions. Of the 25+ people on the project, almost 15 of us met to talk about Pair Programming. Most of the folks were developers, split evenly between the Client and ThoughtWorks. The Client developers were new to paired programming when they started with this project. Their total experience with pairing ranged from 1-7 months. The final third of the audience was spread among QA, BA, an iteration manager (think Scrum Master), and a Client program manager.

I kicked off the meeting by asking the Client devs if they had experience with paired programming before this, what they liked, and didn’t like about the experience. Starting off positive, they really liked the knowledge sharing and the cross-pollination of new ideas and information.

A month later I was exhausted, but I was completely on board.

Then we got honest and they said it was really awkward at first. “Do I touch the keyboard? Do I not touch the keyboard? I was pointing at the screen with my finger and the other person said they couldn’t see what I was pointing at.” Quickly, another Client dev jumped in and said, “It was intimidating. I don’t like to look stupid. When I work on my own it’s a process of doing stupid stuff, it doesn’t work, doing stupid stuff, it doesn’t work, and finally one day it works. It [paired programming] is like a test.”

“I thought the math meant we could do double,” said a third Client dev. “I was not on board and a month later I was exhausted, but I was completely on board. I would not go away from paired programming at all. You have fixed 10 things without even typing anything because you’re pair is catching things.” After a bit more discussion he came back and finished with, “It’s a different math, but I think the speed is double. It’s more efficient. When you’re with a pair, then you are not checking emails, you are not on YouTube. You are not doing any of that. You have almost no waste of time. It’s quite exhausting.”

From one of the ThoughtWorks devs with less than 2-years experience, the comment came “I learned paired programming and when I write code on my own it seems so much slower. If I could sit down with someone I could talk to it would go much faster.”

ThoughtWorks’ technical lead for the project had some interesting comments on using pair programming. For him, the largest benefits were for the project, not the particular piece of code developers were working on. “The only way to keep everyone marching to the same drumbeat is pairing and rotation. It only works when you have to work with everyone else. I’ve never found any other mechanism for keeping standards on a team.” Everyone was on board with the idea paired programming is about optimizing for the team, not the individual. Reinforcing this point, there are studies pointing to conditions where pairing is less effective, particularly on simple tasks and novice-novice pairing without enough mentoring.

Beyond the general statements about pairing, the team also discussed the best techniques for pairing. One Client dev said, “I found myself doing better where there was only 1 keyboard and we had to pass it back and forth.” They found it’s more engaging when you’re driving. And everyone agreed it is up to the more experienced of the pair to make the other person type.

There is no doubt the confidence of pairing developers is higher than those who work solo. This comes out in a couple ways. First, when giving a daily update on your progress that has been stalled by a bottleneck, it takes the pressure off when you can say, “We’re working on it.” Second, when you’re  in an environment with siloed knowledge, after pairing for a couple days you are willing to say “I’ll try working on that.” On the other hand, if there’s a bottleneck and the key resource is out of the office, the tendency is to look the other way. The devs do not volunteer to help and everyone has to wait for the expert to come back.

The QA lead for the team said he didn’t track the numbers to prove it, but there was a better chance of the story passing a desk check. There is a lower chance of passing the desk check if just one person worked on the functionality.

The conversation went on for a bit more, covering topics such as pair switching, optimizing space and environments, gold plating, and even introduced new ideas like the Ping Pong Pattern. (Did you know using this method in some programming languages may result in switching every 60 seconds?!)

The evening after this meeting I read The Shame of Pair Programming, by Tom Howlett. It’s a great, short read about how bad pairing can be demoralizing. It’s takes both vulnerability and strength. I didn’t see where our team suffered this problem, but it’s something to be watched for. As we talked about in our meeting, it’s not about being an introvert or extrovert, it’s about you. You need to learn how to speak within the pair.

This project was quite the ride. And despite not going live, the closing retrospectives made this one of my favorite projects ever. I feel like I learned more from our ending conversations than on some of my much more successful engagements. Please, continue my learning by adding yours. Add your comments on how paired programming worked for you. This way I, and everyone else, can learn a bit more.

Mastering & Improving …

I am honored to be a guest contributor to ThoughtWorks Studios’ blog this week. This post coalesces some of my thinking about the effort Business Analysts should be putting forth to grow as individuals and as a profession. Please go check out and comment on Mastering and Continuously Improving Stories with Shu Ha Ri.

Image of post on ThoughtWorks Studios website

It was different writing a guest post for ThoughtWorks. I often ask for feedback on my posts before publishing them, but this was much closer to having an editor. The suggestions were deeper and more serious than I usually get from friends and colleagues. I think the post turned out better for it. Also, they wrote the title and suggested the calligraphy image. I suppose I could have asked or been insistent about changing these (Kristi doesn’t understand why this picture was chosen), but I was much more honored to be asked for this than I am concerned about the title and image.

I want a conversation about what it takes to learn and master our craft, so please do comment on the post!

Be Like Aaron

A colleague of mine died on Friday and the internet is aflame with sorrow and anger. I pray his family sees the outpouring and feels within the lives he touched and love he generated.

Aaron Swartz, a technical prodigy and activist was being prosecuted for allegedly stealing thousands of documents. A quick search will leads you to lots of details about the circumstances around Aaron’s involvement and the justness of Justice in his case.

Aaron and I first met last June and again in November, but I couldn’t say he knew who I was. Our meeting was on a bus and we were part of a rolling conversation covering the the state of business analysis at ThoughtWorks, activism, world affairs, media and branding, privacy, the security apparatus surrounding international travel, and more. In these many topics it was quickly obvious I knew about one or two issues. Aaron knew about everything else. It was intimidating, even more than usual, to be around someone who was so young and obviously better informed than I am.

As many have said, Aaron was a prodigy. And when you read enough, of his own words and those who knew him, you learn his technical abilities were only part of the story. In truth he was much more.

How many times have you wondered how something worked or why something wasn’t just a little better? Aaron wondered that, too. Aaron’s curiosity was childlike, asking why without any pretext or presumption. He understood the problem was with the systems trapping people into a course of action instead of the individuals. He worked to put together all the parts into a coherent whole and the motivation behind that whole. He believed he could work hard and make a change. He believe he, and we, could change the world. And then he worked to make it that way.

Forget about his prodigious skill. Forget about what he built so far. If you can, forget about all we have lost with his passing. Instead, dedicate yourself  to doing what Aaron did. Find a problem. Choose to understand the big picture instead of complaining. And then do something to fix it.

Aaron asked lots of questions, and then he offered himself and his talents to the solution. As we start 2013, I cannot think of a better resolution to make than to be more like Aaron.