Category Archives: Product Management

A quick word about estimating work

issues-facing-project-managers-cartoon

A Google search for “creating accurate estimates for development work” yields more than 121 million results. A Google search for “why are teams so bad at estimating development work?” yields more than 47 million. If there’s one thing we all know about estimates, it’s that they’re almost always wrong. The reasons for this are well documented:

  • No two developers have exactly the same skill set or develop at exactly the same speed
  • Code issues are difficult or impossible to predict
  • Availability of other project resources (UX, QA, etc.) can be an issue
  • And so on (this article does a good job of outlining more)

And yet we continue to estimate, to make promises and commitments, and to convince ourselves that these wildly optimistic guesses (because they’re always wildly optimistic and they’re always guesses) are more than just that. I don’t need to add to the many millions of Google search results on this topic, but I do want to highlight the clear and direct connection between the commitments we make and our ability to give our teams work that’s both achievable and manageable.

Every product leader I know actively tries to avoid setting deadlines and making commitments, partly because we know our estimates are inaccurate, and partly because we know that deadlines don’t help teams create better products. And yet, making commitments is often unavoidable. When we’re in this situation, I like to remind my team of one very important fact: nobody outside of our team actually knows how long it takes to do our work.

There are lots of strategies for padding development estimates (a Google search for “how much should we pad our development estimates?” yields 35 million results), but this isn’t my point. My point is that, in an effort to force our estimates into pre-determined timelines, we sometimes leave out things that are critically important, like QA and UX. Instead of estimating what it would take to deliver a quality project, we jump right to how we’ll hit a deadline. When we do this, we miss all sorts of great opportunities to negotiate – we give up before we even get started. We also make it impossible for our teams to deliver a quality product on time.

Nobody outside of our team actually knows how long it takes to do our work. This gives us the power to estimate our work as it should be, and to include all the critical pieces that are sometimes thought of as nice-to-haves. It also gives us the chance to bring our business partners along, to help them understand what it takes to build great software, to enlist their help when making trade-offs, and to get their buy-in and support for the recommended approach.

Let’s not forget to take advantage of it.

 

Feeling overwhelmed? Channel Kurt Vonnegut and get to work.

Screen Shot 2018-07-03 at 10.02.35 AM

Every company I’ve been a part of has had more work to do than people to do it. (Has there ever been a company with too many people and not enough work to do? Not for long.) Sometimes the gap between need and output is relatively small, and a team can almost keep up, but more often – especially if a company is aggressive about identifying opportunities – the gap is much, much bigger.

This can lead to lots of frustration. In my last post, I wrote about how great leaders help their teams win by defining success in ways that are achievable. In this post, I’ll focus on getting to work and making it manageable.

My current product organization is responsible for a lot more products than we have teams, including nearly a dozen products built by companies we’ve acquired over the past two years. Inevitably, at any given time, there are products we’re not working on, or even thinking much about. This can be hard to stomach. But the reality is that we’ll never have enough people or time to adequately address all of the issues and opportunities in front of us. In order to wrap our heads around the challenge, we need a different way to think about it.

That’s where I turn to Kurt Vonnegut.

In his article, On the Work to be Done, first published in the May 28, 1998 issue of Rolling Stone magazine, Vonnegut writes brilliantly in the topic of getting to work. Although he’s writing about building a better world, Vonnegut’s words apply to building better software too. Here goes:

As I read the Book of Genesis, God didn’t give Adam and Eve a whole planet.

He gave them a manageable piece of property, for the sake of discussion let’s say 200 acres.

I suggest to you Adams and Eves that you set as your goals the putting of some small part of the planet into something like safe and sane and decent order.

If God had given Adam and Eve the entire world, what would they have done? It’s easy to imagine them running naked through the jungle, shaking their fists, fighting back tears, screaming, “we’re not ready to take care of all these animals – we don’t even have clothes yet!”

In Vonnegut’s telling, God doesn’t overwhelm Adam and Eve, he gives them “some small part of the planet” – just as much as they can handle.  Adam and Eve weren’t responsible for the entire planet, I remind my team, and you’re not responsible for the entire platform. You’re divided into product teams for a reason, so that one group can focus on financial management while another focuses on mobile applications and so on. If you try to eat the elephant (or the forbidden apple?) in one bite, you’ll get sick. Vonnegut continues:

What painters and sculptors and writers do, incidentally, is put very small properties indeed into good order, as best they can.

A painter thinks, “I can’t fix the whole planet, but I can at least make this square of canvas what it ought to be.” And a sculptor thinks the same thing about a lump of clay or marble. A writer thinks the same about a piece of paper, conventionally eleven inches long and eight-and-a-half inches wide.

A product manager is responsible for creating an awesome product. A user experience designer is responsible for creating an awesome experience. A software architect is responsible for creating an awesome technical architecture. And so on. Often this work happens incrementally, over time. The good and bad news? The work is never done.

So here’s the challenge: take your 200 acres (or lines of code) and put them in decent order. Make them exactly what they’re meant to be, or make them even better. After that, there’ll be another 200 acres to worry about, and then another 200 acres after that.

That sounds manageable, right?

Google’s Project Aristotle and psychological safety

stressed_2580348b-large_trans_NvBQzQNjv4BqpJliwavx4coWFCaEkEsb3kvxIt-lGGWCWqwLa_RXJU8

After 18 months, the team was still struggling with the project. Lots of work had been done, but most of it was unfocused, and even at this late date, no one could articulate a clear set of requirements. Hitting the deadline, an aggressive goal from the start, was starting to feel like an impossible task. The team knew they were in trouble.

As the team started to miss internal deadlines, the rest of the company began to get concerned too. Meetings were called, presentations were given, and more deadlines were set. Unsurprisingly, these new deadlines – piled on top of old deadlines that were already being missed – were missed too.

People from across the company offered to help the team in any way they could – time, expertise, snacks – but the team politely declined. They knew that failure was not an option, but they didn’t know how to accept the help that was being offered. Worse, they were scared. In order to avoid painful conversations, they pretended they had a plan. What the team really needed was to talk with the customer, to establish a definitive set of requirements to deliver. But how could they tell the customer 18 months into a 2 year project that they still didn’t know what they were supposed to be building? They decided they couldn’t. Better to keep their jobs for the next six months than to risk being fired immediately.

The Emperor has no clothes

Everything changed when a new Product Manager came into the mix. On day one, he said the emperor had no clothes. On day two, he said we were back at square one. Then he started working with the team to gather a definitive set of requirements.

“How is it possible you’re just doing that now?” stakeholders asked, “this should have happened months ago.”

“You’re right, the new Product Manager said, “it should have. But since it didn’t, we’re going to do it now.” On day five, we had a meeting scheduled with our customer to make sure we had the requirements right.

One week after our new Product Manager was hired, we had a plan. Somehow, throughout the interview process and his first week, nobody told our new Product Manager he was supposed to be too scared to do his job. As a result, he wasn’t.

Google’s Project Aristotle

I recently re-read Charles Duhigg’s terrific 2016 New York Times article, What Google Learned From Its Quest to Build The Perfect Team. Here’s the setup:

Five years ago, Google — one of the most public proselytizers of how studying workers can transform productivity — became focused on building the perfect team. In the last decade, the tech giant has spent untold millions of dollars measuring nearly every aspect of its employees’ lives. Google’s People Operations department has scrutinized everything from how frequently particular people eat together to which traits the best managers share.

The company’s top executives long believed that building the best teams meant combining the best people. They embraced other bits of conventional wisdom as well, like ‘‘It’s better to put introverts together,’’ or ‘‘Teams are more effective when everyone is friends away from work.’’ But, ‘‘it turned out no one had really studied which of those were true.’’

In 2012, the company embarked on an initiative — code-named Project Aristotle — to study hundreds of Google’s teams and figure out why some stumbled while others soared.

28mag-teams1-facebookJumbo-v2

The article goes on to describe how the test was constructed and how challenging it was for researchers to identify which group norms consistently characterized successful teams. After studying hundreds of groups over several years, however, researchers made a breakthrough:

They noticed two behaviors that all the good teams generally shared. First, on the good teams, members spoke in roughly the same proportion, a phenomenon the researchers referred to as ‘‘equality in distribution of conversational turn-taking.’’

Second, the good teams all had high ‘‘average social sensitivity’’ — a fancy way of saying they were skilled at intuiting how others felt based on their tone of voice, their expressions and other nonverbal cues. 

Within psychology, researchers sometimes colloquially refer to traits like ‘‘conversational turn-taking’’ and ‘‘average social sensitivity’’ as aspects of what’s known as psychological safety, or ‘‘a sense of confidence that the team will not embarrass, reject or punish someone for speaking up. It describes a team climate characterized by interpersonal trust and mutual respect in which people are comfortable being themselves.’’

This finding is both intuitive and incredible. The highest performing teams, it tells us, may not have the smartest people, or the clearest goals, or the most inspiring leaders, or the clearest focus. The highest performing teams are those in which people feel “comfortable being themselves.”

Learning from failure

Psychological safety is not the only thing that makes a team great – according to the Times article, “there were other behaviors that seemed important as well – like making sure teams had clear goals and creating a culture of dependability.” But can a team be great if they don’t have each other’s backs? Can a team be great if they’re afraid to take chances? Can a team be great if they blame each other when things go wrong?

Google’s research is aligned with lots of great writing about learning from failure. Great teams take big swings, and when they miss (which all teams do), they learn from their mistakes and move on together. The conclusion is clear: as leaders, our job is to make sure our people feel safe enough to take chances, to challenge each other in productive ways, and to bring their very best ideas to work without the fear of being wrong. That’s the way we’ll build high performing teams, and the way our high performing teams will do amazing things.

Ed Catmull’s “Creativity Inc.” and one of the best work things I’ve ever done

41xs4vbcTPLI’m not alone in my love for the book Creativity Inc., written by Pixar President Ed Catmull. Others have called it “the best business book ever written” (Forbes) and “the most practical and deep book ever written by a practitioner on the topic of innovation” (Harvard Business School). I read the book several years ago and have returned to it lots of times, determined to figure out how to leverage more and more of Catmull’s thinking to make myself and my team not only more creative, but better in lots of ways. (I won’t, however, be incorporating all of Catmull’s past business practices.)

Of all the great ideas in the book, the one that struck me most immediately went I read it was something Catmull calls Notes Day, a day when all of Pixar’s projects stop, and all employees share their thoughts on how the company operates – and how they can do it more effectively. The need for this arose from what Catmull describes as an environment in which “more and more people had begun to feel that it was either not safe or not welcome to offer differing ideas.” He goes on:

Increasingly, we sensed that our people, having enjoyed years of success, were under a great deal of pressure not to fail […] As a company, our determination to avoid disappointments was also causing us to shy away from risk […] One of our greatest values – that solutions could come from anyone and that everyone should feel free to weigh in – was slowly being subverted under our watchful eyes. And only we could correct it. (p. 279 – 280)

Recently, I had the good fortune to attend a conference where Continuous Delivery expert Jez Humble was speaking. Jez said that, while we tend to copy the things successful groups are doing, it’s not the things themselves, but a team’s ability to problem solve that creates real change within an organization. When Catmull looked around, he saw teams of people who were suddenly afraid to problem solve. And so Notes Day was born.

I recognized my own team and situation in Catmull’s words. We were an organization that valued transparency, debate, creativity, and continuous improvement, and we’d incorporated lots of best practices into our normal operating rhythms, including daily standup meetings for each product team and retrospectives after each release. Still, it was inevitable that we’d have to find ways to revisit and reinforce these ideals – to get people talking about the things that weren’t working well. We were widely recognized throughout the organization as high performers, and nobody wanted to mess that up. To make matters worse, although I spent lots of my days working at a table with my team, I was still missing out on too many important things. People tend to “protect” the boss.

When I read about Notes Day, I wondered if it was something that could work for my team. When I approached key leaders in my area, they loved the idea – we hadn’t yet tried a Retrospective of Retrospectives with our team, but since we were all very comfortable with post-release retros, this felt like a great way to frame up the activity. In a Retrospective of Retrospectives, teams come together to share their successes and opportunities, focusing on how to improve performance across the entire team or overall program. It was exactly what I’d been looking for.

My cohorts and I started to frame up an offsite for our team (about 65 people at the time, including developers, product managers, system architects, BAs, QA analysts, project managers, and UX engineers), knowing that if we did it right, we’d both gather critically important information and give the team a shot in the arm. What we came up with was a two-day conference of sorts. It turned out to be one of the best work things I’ve ever done.

One of our two days was spent recapping the year, discussing new project ideas, hosting guest speakers, presenting “Lightning Talks” (5 minute presentations on anything the presenter chose), and participating in a Q&A session with our CEO. The goal of these sessions was to celebrate our successes, tie our work to company goals, learn new things, laugh together, and get pumped up for the new year. Our other day was dedicated to the Retrospective of Retrospectives.

The Retrospective of Retrospectives

Preparation for the Retrospective of Retrospectives started weeks before the event itself, with some pre-work – we asked each team member to bring a list of things that went well throughout the year and things that didn’t. On the day itself, we split the team into pre-determined groups of 8-10 people, ensuring that each functional area (devs, product managers, etc.) would be represented and that none of them would dominate the conversation. Then we asked each group to conduct their own, smaller retrospective, identifying successes and opportunities, voting on which opportunities were most pressing, and coming up with potential solutions. Finally, these solutions were presented to the larger group, and team members signed up for the opportunities they were most passionate about. We were careful not to gloss over the hard things – in order to be successful, this needed to be a warts-and-all conversation. We were looking for problems to solve and ways to be better. Over the course of the next year, each group was responsible for updating the entire team on their progress.

After just two annual meetings, we’re still tweaking the formula for both the retro and the followup. For the retro, the challenges include creating a structure that allows for cross-team sharing and finding the right areas of focus. For the follow up, the challenges include trying to find the right balance between holding people accountable and giving them the freedom to change course as new, bigger opportunities arise.

I know we’ll be refining our Retrospective of Retrospectives this year – our team has grown, and we need to find new ways to engage and empower people across multiple capabilities. But it’s only September, and the team is already looking forward to the event. We’re gathering our thoughts, reflecting on this past year’s successes and challenges, refining our roadmaps, and lining up guest speakers. Best of all, we’re getting ready to have hard discussions about what’s not working well and how we can improve as a team, warts-and-all.

I can’t wait.

 

Encouraging people to stop the line with both carrots and sticks

2012-02-10-Carrot-and-stickIn my last post, I described a work challenge around delivering high quality products, noting that despite repeated encouragement, members of my team were reluctant to stop the line, even if that meant sacrificing quality for speed. I offered a few thoughts on why this was the case, including mixed messages from leadership, aggressive deadlines, our tendency to fall in love with technology, and peer pressure.

In this post, I’ll describe a few things we’re doing to try and correct the situation. Some of these things are what I’d call “carrots,” or rewards that come with stopping the line to focus on quality. Others are “sticks,” or penalties.

Carrots

Celebrating line stoppers
If someone stops the line, we celebrate it publicly. At our all eCommerce team standup this week, we discussed a project that didn’t go as planned, thanking the person on our team who stopped the line and slowed it down, helping us avoid a big mistake.

Using numbers
Products that are well-designed and well-executed tend to outperform those that aren’t. Regular KPI reviews encourage our product teams to do their best work. Sometimes this requires stopping the line.

Holding design review meetings
Last month, we instituted design review meetings with our team’s leaders (it’s a riff on Ed Catmull’s “Braintrust” idea). At first, our teams were afraid they’d be micromanaged.  But a month into the new process, they see the value and appreciate the attention. And they’re quickly becoming more detail oriented.

Showcasing great design
When something is designed well, we share it, far and wide. Being a team that focuses on quality products is becoming a point of pride for all of us. Building “good” things is boring – our products should be great. We want our people to be able to tell the difference between good design and great design, and to aspire to create the latter.

Finding evangelists within the team
I’m actively recruiting people on the team to promote the value of stopping the line. I started with our UX people, who seized the opportunity to get the rest of the team focused on the user experience. (As you’d expect, it was easy to get them on my side.) By now, the entire team has heard the message, and we’ve got lots of evangelists – and converts.

Sticks

Requiring rework
One great way to ensure someone on the team stops the line is to make it clear that the whole team will be starting over from square one if they don’t. When faced with the prospect of removing functionality from our sites and rebuilding it from scratch, stopping the line starts to feel like the much faster option.

Public shaming
This is a route we haven’t really gone down, since one of our core principles is to celebrate failure. Still, when we see poor customer experience, sloppy design, or performance issues, we let the team know. We favor blameless postmortems, but we also favor paying attention to details.

Instituting sign-offs
Our team knows that when they release code into the wild, they’re implicitly saying it’s ready to go. If we need to, we can make this explicit. This would be a last resort – sign-offs aren’t part of the culture we’re nurturing – but it’s an option if we need it.

These are just ideas, of course. If stopping the line and focusing on quality are important to you, you’ll need to work with your team to figure out how to make it happen, and you’ll likely need to revisit the conversation over time.

As leaders, we also need to model this behavior. This means there are times we need to stop the line ourselves, even when it’s our own work we’re doing and our own deadlines we’re missing. We need to make the same trade-offs we ask our teams to make, and have the same tough conversations we ask them to have with stakeholders.

What do you think? Have you had similar experiences as it relates to stopping the line to focus on quality? How have you addressed them? I’d love to hear from you.

 

Why is it so hard to stop the line?

taiichi-ohno-lean-manufacturing-1

Those of us who’ve adopted (and adapted) Lean software techniques owe a debt to Eiji Toyoda, and especially to Taiichi Ohno, who developed the Toyota Production System (TPS) and forever changed the way manufacturing – and eventually much of software development – works. According to Wikipedia:

TPS is grounded on two main conceptual pillars:

  1. Just-in-time – meaning “Making only what is needed, only when it is needed, and only in the amount that is needed”
  2. Jidoka – meaning “Automation with a human touch”

Core to jidoka is the concept of “stopping the line,” which means that when someone at Toyota identifies a problem, they’re required to stop production and resolve the issue. This ensures problems are addressed immediately, when they’re easier, less expensive, and less frustrating to fix.

Our eCommerce team has embraced this way of thinking. Our agile product teams are familiar with the Toyota story, and they understand the importance of identifying problems early. They sit together at tables, which makes collaboration easy, and they have daily stand-up meetings to make sure everyone’s on the same page. Best of all, they’re aligned around common goals, so they have the same motivation to improve the customer experience and their KPIs.

So why won’t they stop the line when they see an issue?

Stopping the line is really, really hard

Recently, my team released a couple of new features that weren’t up to our usual standard – experiences that were a little bit clunky. In both cases, after the projects were complete and the new functionality was deployed into production, we removed the new functionality from our site, sending the teams back to the drawing board. Weeks later, we’re still in the process of rebuilding these features, and we’re going through the work in great detail as a team to make sure we get it right.

Every single member of the team knew – weeks before launch – that the experience was less-than-perfect. And every single member of the team had been coached multiple times to stop the line. Even further, if you asked any member of my team if they understood the importance of stopping the line – if they agreed with it conceptually – every one of them would have said yes. And yet, nobody did it.

I asked three people why, and they all said some version of this:

Our team is working on becoming a well-oiled machine, and I don’t feel comfortable slowing things down.

The machine

Earlier this week I attended DevJam’s excellent Product Conference, and I was glad to hear its founder David Hussman discuss how product and agile are evolving. “We’ve gotten really good at building the wrong thing faster,” he said, and I couldn’t agree more.

My team was built for speed, and although I kept telling them to stop the line, I also told them a lot of other things:

  • “This new functionality is going to add a lot of revenue for our business.”
  • “You’ve got a long backlog.”
  • “If we get this done pre-holiday, it’ll be great for the bottom line.”
  • “Our Marketing team really, really wants this now.”
  • “It’d be great to get both of these projects done next quarter.”

By now you get the idea, and hopefully you see the problem. And it wasn’t just me. My team supports a lot of brands, and the brand owners, marketers, merchandisers, technology teams, senior executives – everyone, really, was in some way or other telling our product team to do more, faster.

In response, we became a machine built for speed. We got good at getting a lot of projects done, and we found a way to set and meet the goals we had before us. We implemented Test Driven Development (TDD), built automated tests, and found ways to get closer and closer to continuous delivery. And I’m convinced that every one of these things was – and is – the right thing to do.

The problem is that we did them at the expense of building great things.

In my next post, Encouraging people to stop the line with both carrots and sticks, I’ll describe what we’re doing about it.

8 reasons my team is great (and keeps getting better)

quote-you-cannot-make-an-omelette-without-breaking-eggs-proverbs-309526

My current eCommerce team is among the best I’ve ever worked with. In the past year, we’ve launched four mobile apps, re-platformed three eCommerce sites without any downtime at all, made major strides towards continuous deployment, and much, much more. (Even if you don’t know what any of these things are, you’re impressed by now, right?) Much has been written about building great teams, of course, and this is in no way meant to be definitive. Still, I want to share a few of the reasons my team has succeed so far (in no particular order), and why we’ll continue to get better:

1: Everyone on the team is a business owner

It would be an exaggeration to say that everyone on the team is motivated by our KPIs in the same way, or that each developer, user experience engineer, and Product Owner feels the same passion for driving revenue. Still, we do a lot of work to make sure each person on our team understands what drives our business, and the items on our product roadmap can come from any person or team. We understand both what we have to do and why.

2: We define our own priorities

Continuing on the above theme, our product roadmap is largely driven by the team. Because we understand what drives the business, we have the flexibility to work on the projects that are most impactful, in the order that makes the most sense. There are times we have to justify our priorities – and we review them with our senior executives each month – but we own the roadmap, no question about it.

3: We like to solve hard problems

Being intellectually curious is a big deal. Our team is smart, and intensely focused when it comes to finding sustainable solutions to big, hairy business and/or technical problems. Sometimes this leads to frustration – we don’t always have time to do things right, and we all despise increasing technical debt – but, by and large, our team strives to do things right, and we’re up for any challenge that comes our way.

4: We persist!

We like solving hard problems, and we don’t give up. When we can’t figure something out, we keep at it. Sometimes we wrestle with a problem for weeks – or months – before finding the answer we were looking for. Sometimes we need to try a lot of things before getting something right.

5: Our leaders push us in the right ways

When we need a kick in the pants, we get one. When we need some space, we get that too. From top to bottom, our company and team leaders understand that empowering the teams to do our best work is critical to our success.

6: We test and measure everything we do

Measuring allows everyone to see where we meet expectations and where we don’t. New functionality is AB tested until it “wins” and we’re confident we haven’t introduced new problems into the system. We’ve got dedicated testing and analytics teams, and our Agile development teams wouldn’t even think of introducing new functionality without their involvement. Of course, we still make mistakes, but when we do…

7: We learn from our mistakes

You can’t make an omelette without breaking a few eggs. Building and running our own web platform is hard, and despite all the great testing and measuring we do, mistakes are inevitable. Because we encourage continuous improvement and innovation, we also favor blameless post-mortems and retrospectives during and after all projects. These allow us to truly understand where we’re most effective and where we still have opportunity to improve. We’re going to make mistakes, but we really don’t want to make the same ones twice.

8: We genuinely like each other

Who wants to spend all week, every week, with people they don’t know or like? Not me. Work is a big part of our lives, but it’s not everything. People go on vacations, have babies, experience loss, and root for baseball teams (they often do those last two at the same time). And people who like each other are there for each other when they need support – in their work and in their lives.

We’re not perfect

If some of this sounds a bit aspirational, it is. My team is far from perfect, and we don’t always get these things right. We get crabby, and frustrated, and annoyed by each other. We argue, we have egos, and we break more things than we’d like. Sometimes we focus on the wrong things, and we’ve been accused of moving too fast. But the foundation of our team is strong, and our core philosophies don’t change.

Do any of these ideas resonate with you? Are you part of a high performing team? If so, what makes your team great? If not, how can you get there? I’d love to hear from you.