User Story Showdown

One day I was reviewing a list screen in the development den and hit a brick wall. The application queue page had been developed by the senior architect of the team, a bearded philosopher type who had deeply absorbed the agile mantra to ‘maximize the amount of work not done.’ For this fellow, the answer was automatically ‘no’ until you made your case. I’m sure you’ve met one or two of these in your travels.

The screen in question was a list of transactions and they had some common attributes. That is, multiple lines could have the same description or the same type. Anxious to make what I thought was an easy improvement, I suggested that we add a ‘Row’ or ‘Item’ number column – something that the user could click on to open that row. The architect insisted that any other column could be used for that. A new column was not needed. The identifier column was indeed added to the list, but not that day. That day I left the room with hurt feelings and an important lesson in hand.

I failed to make the case for the new column. The change seemed logical to me (and, in fact, was) but I approached the feature based on my own desire and experience rather than bringing the team a value-based User Story that carried the weight of a real stakeholder. It is a lesson I would repeat until I fully embraced the principle that development team members are not application stakeholders. Only the voice of a real customer carries authority in a feature User Story.

Is Your Agile Team Stalled?

old-truck

Do you feel overwhelmed? Are customers or stakeholders complaining? Has team velocity tanked?

Don’t feel bad. These problems are quite common in custom software projects – and they are solvable. The good news is that technical complexity is probably not the issue. It almost never is when a project has trouble. No, it’s much more likely that you have a problem in one of three areas:

  • Lack of authority
  • Lack of transparency
  • Fear

Those don’t sound like technology problems, do they? Alas, we (people) get in our own way and cause most of the problems you see on software projects. But instead of focusing on the problems, let’s look at the positive ingredients you need to win the custom software game:

Strong Product Owner

The Product Owner (PO) carries the vision for what your product should become. To be effective, they should be:

  • Knowledgeable
  • Empowered
  • Available
  • Collaborative

A strong PO will feed the team a set of features that have been prioritized by business value, make decisions quickly on behalf of the company, be available for questions, and invest in the team’s success. They constantly work ahead of the development team, clarifying requirements and ranking features so that the team never runs out of work that is valuable to the customer.

Transparent Process

Everyone on the team should be able to quickly answer these questions:

  • What are the most important items to work on?
  • When is the next delivery expected?
  • Who is working on what?
  • How is our progress?
  • What is in our way?

Teams that cannot answer these questions spin their wheels and waste time. They also frustrate management by creating a shroud of mystery around what they are producing and when. The team needs a proven pattern to follow so that everyone marches to the same delivery drum. This is what the Scrum ceremonies provide. They bring structure and focus without micromanaging your talent.

A Safe Place

Tension seems built into software development.

On one hand, there are stakes to the game we play. Money can be wasted. Market opportunities can be missed. Jobs can be lost. We must extract maximum value from our talent investment. We must also safeguard the public and customers and whoever else could be affected by our work. We might not work at a nuclear plant or in the ER, but there are still important matters before us.

On the other hand, software is built by people. We want to be liked, to have respect, to feel connected, to experience mastery, to contribute. Some days our foibles are louder than our strengths. We have a deep-seated need to be heard and to be understood. We fear rejection and the disappointed look.

Balancing these concerns is a delicate dance. A hierarchy of principles must be applied. People are more important than projects, generally. But personal issues must give way before a looming team deadline. We are always balancing and rebalancing the people-vs-performance equation. Wisdom cannot be reduced to a formula.

Taking Action

While our typical project problems are solvable, they are not trivial. Pareto tells us to move the biggest rocks first in order to get the most progress:

  1. Make sure the team has a stack-ranked list of valuable items to pull from.
  2. Give them a proven, repeatable development rhythm to follow.
  3. Increase collaboration and idea flow by safeguarding team members.

Photo credit: Wayne Stadler Photography via Foter.com / CC BY-NC-ND

Silos Sink Scrum

silo-800w

As a systematic way of delivering results, Scrum is beautiful. I have created business software for over thirty years and seldom seen anything as beautiful as a well-oiled Scrum team. The rhythmic dance of defining, designing, and delivering high-value features is delightful to watch and rewarding to perform. But it can be done oh so poorly if you don’t believe in the principles on which it rests.

“As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble.”
~ Harrington Emerson

There is nothing inherently smart about computers. They can produce stupidity at lightning speed and if you feed them garbage, they will produce giant piles of the same.  Something similar can be said of Scrum teams. If you wrap them in confusion and feed them crap, they can produce expensive tomes of shelf-ware.

As a method, Scrum can help you build a sustainable team that delivers more features with less waste than other systems. But that alone won’t ensure success.

The lovely tool that is Scrum must be undergirded by some bedrock principles that are bigger and more important than any method you might choose. Try not to laugh at these. Project obituaries are littered with teams who got them wrong.

Engage your Customers

Do you know what the hardest question in the Retail trade is? It’s not how to design a great product or write compelling sales copy or minimize logistics. It is the seemingly innocent query, “Who is your customer?” It’s the customer collective – all the real consumers of your product – that will guide you toward success. Identify them early and get them involved in shaping the product.

One key mistake is using a liaison from only one functional area. They know their department well but cannot represent other product users accurately. Another is ignoring executives or assuming that they are too busy to participate. These stakeholders often need critical reports that you won’t know about until you get a black eye for missing them.

Surrogates (and let’s be honest, a Product Owner is often just that) can help but should not be allowed to insulate you from the actual everyday users of the product. If you don’t believe that your customer knows what they want and can communicate it openly to you, then you have no way to win the game you’re playing. Agile software failure sounds like this: “The users don’t know what they need. Let’s build what we think is right.” Don’t let cynicism or arrogance blind your team by removing customer input.

Ship Early and Often

You don’t really know if the product is right until the customer says so. Shipping is necessary to get that feedback, so ship often. A good solution in customer hands is better than a perfect one stuck in the lab. To get feedback even faster than you can release, provide a sandbox users can play in and reward them for doing so. Real customer feedback is the life blood of an agile team. Small course corrections make a big difference in the final destination, so demo new features as soon as you can. Don’t try to impress by piling them up in a heap.

If this were a sermon I would need a third point but there isn’t one. If you can talk to real customers and show them a rapidly evolving version of what they want, you win. It’s that simple. And it’s that hard. It’s hard to identify the true voice of the customer when everyone wants control. It’s hard to overcome the fear of shipping when egos are on the line.

Ok, maybe there is a third point: Believe. Have faith that with a combination of transparency and excellence, you can give your beloved customer valuable software in an atmosphere of mutual trust.

Photo credit: Rutkowski Photography via Foter.com / CC BY