Chapter 12
IN THIS CHAPTER
Diving into waterfall and Agile development
Making product trade-offs
Following important leadership practices throughout development
You’ve got a great idea that meets all the criteria for success. Your plans are in place, and your development team knows who the personas are (see Chapter 5), understands the use cases (see Chapter 11) and/or user stories (discussed later in this chapter), and is ready to build a great product. Now the work of creating that great product begins, and you as the product manager need to step up and lead the team through any bumps in the road that come up.
The two general development methodologies used for developing products are waterfall and Agile. Waterfall is a phase-gate (also called stage-gate) process (see Chapter 3), and Agile comes in many flavors, such as scrum, extreme programming, Lean, and kanban. We cover the key principles of waterfall and Agile in regards to product management here so that whatever method you choose (or is chosen for you), you can be successful.
The philosophy behind waterfall development is that you do all the planning up front in large batches. Product managers give developers an inclusive list of features and market needs (see Chapter 11) from which developers can build a completed product for release. Development in waterfall can take six months, a year, or even several years.
In waterfall development, the product manager delivers a market needs or market requirements document (MRD) before development starts. The MRD includes everything about the market, personas, use cases, customer and market needs, window of opportunity, and anything else the engineers need to completely develop the product. It’s often a formal document that key stakeholders (such as management, development managers, the product manager, and anyone else in the company that will be affected) have signed off on. Only after sign-off of the comprehensive MRD in the plan phase does development then begin. See Figure 12-1 for a look at the progression of phases.
The advantage of waterfall is that the product manager can take an extensive amount of time to put forth a carefully thought-out MRD. It avoids the company’s rushing to market and potentially building features that may be trendy this month but meaningless in the long-term. It also avoids asking engineering to change priorities constantly; under waterfall development, everyone has to get on the same long-term page. The product manager has more time for strategic planning and for maximizing the overall success of the product.
The disadvantage of waterfall is that it lacks the flexibility to change plans because the MRD has to be revised and the stakeholders have to be informed of the changes, agree to them, and sign off accordingly. Thus, new features can’t be added easily, and they aren’t delivered to customers as rapidly as they are in Agile since the planning and release cycles are much longer with waterfall. Market and customer needs may change during development, and with waterfall, the team can’t respond quickly.
Agile is the opposite of waterfall (which we discuss in the preceding section). Agile development uses a lot of very specific terminology. You may hear terms such as scrum, scrumban, kanban, and extreme programming (XP) to refer to different development methodologies. The most common Agile development framework in use is scrum, which is the one we focus on here; Figure 12-2 shows its structure. Agile is excellent for software products, especially for smaller applications, software as a service (SaaS), and web-based applications.
Under scrum, development occurs in short, defined periods called sprints, which are up to two and no longer than four weeks long. The goal of each sprint is to create code in an iterative and incremental way and complete a particular piece of work. This process is repeated (iterated) while the product is progressively built (increments).
For each sprint, the development team takes work from the top of the product backlog (discussed in detail later in this chapter) focusing on the top priority items that can be developed during the allotted time. The team breaks down the work for each sprint into tasks and then executes each task. Quality assurance occurs in parallel (simultaneously). If a task won’t be completed in its given sprint, it’s pushed out to the next sprint.
However, each sprint can be released to customers as soon as it is complete. Alternatively, several sprints are often bundled together and provided to customers in a larger product release. Figure 12-3 shows the cascading relationship between tasks in a sprint, sprints, and a product release.
In Agile, you communicate the requirements through simple user stories to the engineers instead of writing and signing off on a comprehensive MRD as in waterfall. User stories can be simply written on a 3-x-5-inch notecard, or they can be captured electronically in a database or Agile development software system. The focus is on communicating and working as a team while minimizing documentation. The user stories convey to the engineer what the customer need is and what the user is trying to accomplish. Once the engineer has discussed the user story with the product manager or product owner and fully understands the meaning of the user story, the engineer then builds the feature.
The format of a user story is as follows:
As a <persona>, I want to be able to <customer need> so that I can <benefit of requirement>.
Figure 12-4 is an example of a user story.
To understand how the entire product is eventually divided into user stories, you need to start up at the top with the overall scope of the entire product and work your way down into the details of the user story. Two key tools you use are story mapping and product backlog prioritization.
Story mapping is a technique, developed by Jeff Patton, of mapping out the particular activities that need to happen in the product to make sure a customer accomplishes her goal. The wonderful thing about a story map is the clarity it gives you and your development team about what completely addressing a customer need will take. In the best case, you bring everyone together in one room and work the story from beginning to end. The process generates significant learning and understanding on all sides, which leads to less confusion for the duration of the project.
To create a story map, you can use sticky notes, markers, dots, colored masking tape, and a blank wall space. In Figure 12-5, you can see how you start by creating a backbone of user activities at the top. These can be logging into the software, selecting a product, and going through the check-out process. Under each of these activities are tasks (not necessarily the same as the tasks which drive development work within a sprint). Under each task, the development team fills in all the subtasks, user interface, and other details that the user needs to complete the tasks. Once all the development tasks have been documented, the list of tasks is divided into what absolutely must be done to bring the product to market. This first slice is your minimum viable product. The work done in future releases is allocated to the next slice.
Here’s an example of an epic, feature and user story for an online store selling shoes. The epic has a larger scope of work than the feature which is again, more work than the user story. The user story is the smallest slice of work that the product manager typically works with.
User stories 1 and 2 both address parts of the feature, but not all of it. And the feature addresses some of the epic but again needs other features to complete all aspects of the epic.
As you can see in Figure 12-6, your product backlog consists of many of these user stories, features, and epics. As you investigate proposed development work, you realize that some work has more customer value than others. This work should then be done earlier. The reality of development is you simply can’t get to the level of detail needed for the entire product upfront. You would spend a huge amount of time upfront in development breaking down each and every piece of work to be done while developers twiddled their thumbs. Instead, you prioritize the proposed work by customer value and create a prioritized product backlog, most often referred to as a prioritized backlog or more simply backlog.
At the top of the backlog, you have your user stories that the development team are just about to start with; below that are your features and then your epics. As features and epics come to the top of your backlog, you break them down into user stories that your development team can work on.
So what do you work on first? A lot depends on what you’re building. If you’re just starting out, building out a software structure or architecture for what comes later is usually most important. For an ongoing product, the items at the top of the backlog are most definitely what has the most value both to the customer and your company. The reality is that sometimes you have to prioritize a bug fix or solve a larger structural issue with the software, which is referred to as technical debt.
The beauty of a product backlog is that one person is in charge: the product owner (or product manager in the role of product owner). That is an absolute within scrum. This person decides what the development team works on next. That said, it would be a poor product owner who didn’t get feedback to make sure that the development team lets her know what would make most sense to complete next.
The issue with tracking an Agile backlog is that the volume of information is huge. Most teams move quickly away from documenting each piece of information with index cards and switch to software written for this purpose. A side benefit of using software tools is that tracking is integrated so it’s also easier for you to figure out what stage each piece of work is at. When you know what software your development team is using, spend the time to learn all the ins and outs so that you can use it to efficiently document the product backlog.
When you write down your product features, a good rule of thumb to see if you’re headed in the right direction is to use the acronym INVEST (kudos to Bill Wake for this idea). Table 12-1 tells you all the aspects of a good product feature or user story. The “small” rule is critical to Agile only. The rest are applicable to both waterfall and Agile requirements.
TABLE 12-1 INVEST in Good Features
Aspect |
Explanation |
Independent |
Avoid dependencies between features and user stories. |
Negotiable |
User stories are reminders to collaborate. |
Valuable to the customers |
Avoid requirements that have only technical value. |
Estimate-able |
Can estimate how long it will take to complete. |
Small (Agile only) |
The requirement should take no more than two days to complete. |
Testable |
The requirement has defined acceptance criteria. |
In creating a product, you sometimes have features or user stories that are really hard to write. They don’t seem to fit into the usual user story pattern. These are better written as constraints. For example, how long should a task take? What operating system(s) should it operate under, or what temperature range should it operate within? Simply write down the limits of what the product needs to do without reference to a customer and move on.
Agile in all of its different forms was created based on the principles stated in the Agile Manifesto, shown in Figure 12-7. The Agile Manifesto was created by a group of software developers who were looking for a more optimized way to develop products and bring features to market faster. Over time Agile has started to be applied to many types of products beyond just software.
Agile has 12 key principles shown in Figure 12-8.
Whether you’re working with a team doing waterfall development or Agile development, getting clarity on the roles and responsibilities of each of the team players is critical.
Typical responsibilities for the product manager include the following:
Typical responsibilities for the product owner are these:
Product development involves a well-known concept called the development trade-off triangle. Figure 12-9 shows the trade-off choices: features, quality, and schedule. The idea is that you can aim for two vertices of the triangle, but three is usually unattainable. If you want more features and want to keep the schedule fixed, you need to lower quality. If you want more features, and want to keep quality fixed, you have to increase the amount of time for development and slip your schedule. And if you want to shrink the schedule, you have to give up scope or quality. The challenge is to make these trade-offs in the best possible manner so that the best product ships as close to schedule as possible with the features that it needs to be successful.
The bottom line in terms of the triangle is that no set formula exists for making these tradeoffs. Making a decision on what to give up is highly dependent on your product’s situation. You as the product manager have to constantly monitor the team’s progress, get feedback from your testers and the competitive environment, field pressure from your management, and account for other factors; and make the most informed choice that you can.
When you’re working with a team doing Agile development, the trade-offs aren’t necessarily easier; they’re just different. The schedule is usually fixed in terms of the length of the development, and the quality assurance is built into the sprint schedule. The easy thing to do is simply remove features. In other words, if a feature isn’t ready during the sprint, it simply gets pushed to the next sprint.
One challenge is that if you’re combining sprints to complete a major release, critical features may not be included because the team ran out of time to develop them. This scenario can put your product at a competitive disadvantage or make it not compelling enough for customers to purchase. The product manager and the development team have to plan carefully to ensure that difficult-to-develop features make it to market.
Staying informed and engaged with your team during development of the product is crucial. Critical questions about how to implement features and what trade-offs to make come up on a daily basis. As a leader for the product efforts you must step up and be there to help the team do the right thing for the customer.
Here are a few best practices and tips for being as effective as possible during this phase: