6 CHOOSING THE RIGHT LIFE CYCLE

May your choices reflect your hopes, not your fears.
—Nelson Mandela

Key Points in This Chapter

Some teams within your organization will still follow a traditional life cycle—DAD explicitly recognizes this but does not provide support for this shrinking category of work.

DAD provides the scaffolding required for choosing between, and then evolving, six solution delivery life cycles (SDLCs) based on either agile or lean strategies.

Project-based life cycles, even agile and lean ones, go through phases.

Every life cycle has its advantages and disadvantages; each team needs to pick the one that best reflects their context.

Common, lightweight, risk-based milestones enable consistent governance; you don't need to force the same process on all of your teams.

A team will start with a given life cycle and often evolve away from it as they continuously improve their WoW.

We have the privilege of working with organizations all over the world. When we go into an organization, often to coach them in how to improve their way of working (WoW), we get to observe what is actually happening within these organizations. One thing we see over and over again, in all but the very smallest of enterprises, is that they have several delivery life cycles in place across their teams. Some of these teams will be following a Scrum-based, agile project life cycle whereas others will have adopted a Kanban-based lean life cycle. The more advanced teams, particularly those moving toward a DevOps mindset, will have adopted a continuous delivery approach [Kim]. Some may be working on a brand-new business idea and are following an experimental “lean startup” style of approach, and some teams may still be following a more traditional life cycle. The reason why this happens, as we described in Chapter 2, is because each team is unique and in a unique situation. Teams need a WoW that reflects the context that they face, and an important part of choosing an effective WoW is to select a life cycle that best fits their situation. Disciplined Agile Delivery (DAD) scaffolding provides life cycle choices to your delivery teams, while enabling consistent governance across them.

A Quick History Lesson: The Traditional Life Cycle

First and foremost, the traditional life cycle is not supported by DAD. There are several different flavors of the traditional life cycle, sometimes called the serial life cycle, the waterfall life cycle, or even the predictive life cycle. Figure 6.1 depicts what is known as the V model. The basic idea is that a team works through functional phases, such as requirements, architecture, and so on. At the end of each phase there is often a “quality gate” milestone review which tends to focus on reviewing documentation. Testing occurs toward the end of the life cycle, and each testing phase, at least in the V model, tends to correspond to an artifact-creation phase earlier in the life cycle. The waterfall life cycle is based on 1960s/1970s theories about how software development should work. Note that some organizations in the early 1990s and 2000s mistakenly instantiated rational unified process (RUP) as a heavyweight process, so some practitioners think that RUP is a traditional process too. No, RUP is iterative and incremental, but was often implemented poorly by people who didn't move away from the traditional mindset.

images

If the traditional approach is explicitly not included in DAD, why are we talking about it? Because some teams are currently following a waterfall approach and need help moving away from it. Worse yet, there are many people who believe that traditional strategies are applicable to a wide range of situations. In one sense they are correct, but what they don't understand is that agile/lean strategies prove much better in practice for most of those situations. But, as you'll learn later in this chapter, there are a few situations where traditional strategies do in fact make sense. But just a few.

The Project Mindset Leads to Agile Phases, and That's Okay

Many organizations choose to fund solution delivery in terms of projects. These projects may be date driven and have a defined start and end date, they may be scope driven in that they must deliver specific functionality or a specific set of outcomes, or they may be cost driven in that they must come in on or under a desired budget. Some projects have a combination of these constraints, but the more constraints you put on a delivery team, the greater the risk of project failure. Figure 6.2 depicts a high-level view of the project delivery life cycle, and as you see, it has three phases:

1. Inception. Inception is sometimes called “sprint 0,” “iteration 0,” startup, or initiation. The basic idea is that the team does just enough work to get organized and going in the right direction. The team will initially form itself, and invest some time in initial requirements and architecture exploration, initial planning, aligning itself with the rest of the organization, and of course securing funding for the rest of the project. This phase should be kept as simple and as short as possible while coming to an agreement on how the team believes it will accomplish the outcomes being asked of it by their stakeholders. The average agile/lean team spends 11 work days, so a bit more than two weeks, in Inception activities [SoftDev18].

Agile History Lesson

The term “iteration 0” was first coined by Jim Highsmith, one of the creators of the Agile Manifesto, in his book Agile Software Development Ecosystems in 2002 [Highsmith]. It was later adopted and renamed Sprint 0 by the Scrum community.

2. Construction. The aim of Construction is to produce a consumable solution with sufficient functionality, what's known as a minimal marketable release (MMR), to be of value to stakeholders. The team will work closely with stakeholders to understand their needs, to build a quality solution for them, to get feedback from them on a regular basis, and then act on that feedback. The implication is that the team will be performing analysis, design, programming, testing, and management activities potentially every single day. More on this later.

3. Transition. Transition is sometimes referred to as a “release sprint” or a “deployment sprint,” and if the team is struggling with quality, a “hardening sprint.” The aim of Transition is to successfully release your solution into production. This includes determining whether you are ready to deploy the solution and then actually deploying it. The average agile/lean team spends six work days on Transition activities, but when you exclude the teams that have fully automated testing and deployment (which we wouldn't do), it's an average of 8.5 days [SoftDev18]. Furthermore, 26 % of teams have fully automated regression testing and deployment, and 63 % perform Transition in one day or less.

images

Although agile purists will balk at the concept of phases, and will often jump through hoops such as calling Inception “sprint 0” and Transition a “release sprint,” the fact is that agile project teams work in a serial manner at a high level. Teams need to invest some time at the beginning to get going in the right direction (Inception/sprint 0), they need to spend time producing the solution (Construction), and they need to spend time deploying the solution (Transition/release sprint). This happens in practice and is very easy to observe if you choose to. The important thing is to streamline your Inception and Transition efforts as much as possible, and Construction, too, for that matter.

There is more to IT, and your organization in general, than solution delivery. For example, your organization is likely to have data management, enterprise architecture, operations, portfolio management, marketing, procurement, finance, and many other important organizational aspects. A full system/product life cycle goes from the initial concept for the solution, through delivery, to operations and support and often includes many rounds through the delivery life cycle. Figure 6.3 depicts the system life cycle, showing how the delivery life cycle, and the DevOps life cycle for that matter, is a subset of it. Although Figure 6.3 adds the Concept (ideation), Production, and Retire phases, the focus of DAD and this book is on delivery. Disciplined Agile (DA), however, includes strategies that encompass DAD, Disciplined DevOps, the value stream, and the Disciplined Agile Enterprise (DAE) in general [AmblerLines2017].

images

Shift Left, Shift Right, Deliver Continuously

images

Although some teams will take a project-based approach, not all of them do and over time we expect this trend to grow. When a team is allowed to stay together for a long period of time, typically longer than a single project, we call this a stable or long-standing team. When a long-standing team is allowed to evolve its WoW, we've seen some incredible things happen—they become teams capable of continuous delivery. The term “shift left” is popular among agilists, often being used to indicate that testing and quality practices are being performed throughout the entire life cycle. This is a good thing, but there's more to the “shifting” trend than this. There are several important trends, summarized in Figure 6.4, that will affect the way a team evolves its WoW:

1. Testing and quality practices shift left. Agilists are clearly shifting testing practices left through greater automation and via replacing written specifications with executable specifications via practices such as test-driven development (TDD) [W] and behavior-driven development (BDD) [W]. TDD and BDD, of course, are supported by the practice of continuous integration (CI) [W]. Adoption of these strategies are key motivators for an infrastructure as code strategy where activities that are mostly manual on traditional teams become fully automated on agile teams.

images

2. Modeling and planning practices shift right. Agilists have also shifted modeling/mapping and planning practices to the right in the life cycle so that we can adapt to the feedback we're receiving from stakeholders. In DAD, modeling and planning are so important that we do them all the way through the life cycle in a collaborative and iterative manner [AgileModeling].

3. Stakeholder interaction shifts right. DAD teams interact with stakeholders throughout the entire endeavor, not just during the requirements and test phases at the beginning and end of the life cycle.

4. Stakeholder feedback shifts left. Traditional teams tend to leave serious stakeholder feedback to user acceptance testing (UAT) performed during the traditional test phase. DAD teams, on the other hand, seek to gain stakeholder feedback as early and as regularly as possible throughout the entire endeavor.

5. Deployment practices shift left. Deployment practices are being fully automated by agile teams, another infrastructure as code strategy, so as to support continuous deployment (CD). CD is a linchpin practice for DAD's two continuous delivery life cycles described below.

6. The real goal is continuous delivery. All of this shifting left and shifting right results in teams that are able to work in a continuous delivery manner. Process improvement is about working smarter, not harder.

Choice Is Good: DAD's Life Cycles

DAD supports several life cycles for teams to choose from. These life cycles, described in detail below and summarized in Figure 6.5, are:

1. Agile. Based on the Scrum construction life cycle, teams following this project life cycle will produce consumable solutions via short iterations (also known as sprints or timeboxes).

2. Continuous Delivery: Agile. Teams following this agile-based life cycle will work in very short iterations, typically one week or less, where at the end of each iteration their solution is released into production.

3. Lean. Based on Kanban, teams following this project life cycle will visualize their work, reduce work in process (WIP) to streamline their workflow, and pull work into the team one item at a time.

4. Continuous Delivery: Lean. Teams following this lean-based life cycle will release their work into production whenever possible, typically several times a day.

images

5. Exploratory. Teams following this life cycle, based on Lean Startup [Ries] and design thinking in general, will explore a business idea by developing one or more minimal viable products (MVPs), which they run as experiments to determine what potential customers actually want. This life cycle is often applied when a team faces a “wicked problem” [W] in their domain.

6. Program. A program is effectively a large team that is organized into a team of teams.

images

Now let's explore each of these life cycles in greater detail. After that, we'll discuss when to consider adopting each one.

DAD's Agile Life Cycle

DAD's agile life cycle, shown in Figure 6.6, is based largely upon the Scrum life cycle with proven governance concepts adopted from the Unified Process (UP) to make it enterprise ready [Kruchten]. This life cycle is often adopted by project teams focused on developing a single release of a solution, although sometimes a team will stay together and follow it again for the next release (and the next release after that, and so on). In many ways, this life cycle depicts how a Scrum-based project life cycle works in an enterprise-class setting, we've worked with several teams that like to think of this as Scrum++, without being constrained by the Scrum community's cultural imperative to gloss over the activities of solution delivery that they find inconvenient. There are several critical aspects to this life cycle:

The Inception phase. As we described earlier, the team's focus is to do just enough work to get organized and going in the right direction. DAD aims to streamline the entire life cycle from beginning to end, including the initiation activities addressed by Inception. Inception ends when we have an agreed-upon vision regarding the expected outcomes for the team and how we're going to achieve them.

Construction is organized into short iterations. An iteration is a short period of time, typically two weeks or less, in which the delivery team produces a new, potentially consumable version of their solution. Of course, for a new product or solution you may not have something truly consumable until after having completed several iterations. This phase ends when we have sufficient functionality, also known as a minimal marketable release (MMR).

Teams address work items in small batches. Working in small batches is a fundamental of Scrum, and because this life cycle is based on Scrum, it's an important aspect of it. DAD teams, regardless of life cycle, are likely to work on a range of things: implementing new functionality, providing stakeholders with positive outcomes, running experiments, addressing end-user change requests coming in from usage of the current solution running in production, paying down technical debt, taking training, and many more. Work items are typically prioritized by the product owner, primarily by business value although risk, due dates, and severity (in the case of change requests) may also be taken into account. The Address Changing Stakeholder Needs process goal (Chapter 16) provides a range of options for managing work items. In each iteration, the team pulls a small batch of work off of the work item list that they believe they can achieve during that iteration.

Critical ceremonies have a defined cadence. Also like Scrum, this life cycle schedules several agile ceremonies on specific cadences. At the beginning of each iteration, the team performs detailed planning for the iteration, and at the end of the iteration, we hold a demonstration. We hold a retrospective to evolve our WoW, and we make a go-forward decision. We also hold a daily coordination meeting. The point is that by prescribing when to hold these important work sessions, we take some of the guess work out of the process. The downside is that Scrum injects a fair bit of process overhead with ceremonies. This is a problem that the Lean life cycle addresses.

The Transition phase. The aim of the Transition phase is to ensure that the solution is ready to be deployed and, if so, to deploy it. This “phase” can be automated away (which is exactly what happens when evolving toward the two continuous delivery life cycles).

Explicit milestones. This life cycle supports the full range of straightforward, risk-based milestones, as you see depicted along the bottom of the life cycle. The milestones enable leadership to govern effectively, more on this later. By “lightweight” we mean that milestones do not need to be a formal bureaucratic review of artifacts. Ideally, they are merely placeholders for discussions regarding the status and health of the initiative. See the Govern Delivery Team goal in Chapter 27 for a more detailed discussion of how to keep milestones light.

Enterprise guidance and roadmaps are explicitly shown. On the left-hand side of the life cycle, you see that important flows come into the team from outside of the delivery life cycle. That's because solution delivery is just part of your organization's overall DevOps strategy, which in turn is part of your overall IT strategy. For example, the initial vision and funding for your endeavor may be coming from a product management group, and the roadmaps and guidance from other areas such as enterprise architecture, data management, and security (to name a few). Remember, DAD teams work in an enterprise-aware manner, and one aspect of doing so is to adopt and follow appropriate guidance.

Operations and support are depicted. If your team is working on the new release of an existing solution then you are likely to receive change requests from existing end users, typically coming to you via your operations and support efforts. For teams working in a DevOps environment, it may be that you're responsible for running and supporting your solution in production.

images

DAD's Continuous Delivery: Agile Life Cycle

DAD's Continuous Delivery: Agile life cycle, shown in Figure 6.7, is a natural progression from the Agile life cycle of Figure 6.6. Teams typically evolve to this life cycle from the Agile life cycle, often adopting iteration lengths of one week or less. The key difference between this and the Agile life cycle is that the Continuous Delivery: Agile life cycle results in a release of new functionality at the end of each iteration rather than after several iterations. There are several critical aspects to this life cycle:

Automation and technical practices are key. Teams require a mature set of technical practices around automated regression testing, continuous integration (CI), and continuous deployment (CD). To support these practices, investment in tools and paying down technical debt, and in particular writing the automated regression tests that are missing, needs to occur.

Inception occurred in the past. When the team was first initiated, Inception would have occurred and it may have occurred again when significant change occurred such as a major shift in business direction or technical direction. So, if such as shift occurs again then yes, you should definitely invest sufficient effort to reorient the team—we see this as an activity, not a phase, hence Inception isn't depicted. Having said this, we do see teams stop every few months and explicitly invest several days to negotiate, at a high level, what they will do for the next few months. This is something that SAFe calls big room planning and Agile Modeling calls an agile modeling session. These techniques are discussed in the Coordinate Activities process goal (Chapter 23).

Transition has become an activity. Through automation of testing and deployment, the Transition phase has evolved from a multiday or multiweek effort to a fully automated activity that takes minutes or hours.

Explicit milestones and incoming workflows. There are still common, risk-based milestones to support consistent governance. Some milestones are no longer appropriate, in particular Stakeholder Vision and Proven Architecture would have been addressed in the past (although if major changes occur there's no reason why you couldn't address these milestones again). Incoming workflows from other parts of the organization are shown, just as with the Agile and Lean life cycles.

images

DAD's Lean Life Cycle

DAD's Lean life cycle, shown in Figure 6.8, promotes lean principles, such as minimizing work in process, maximizing flow, a continuous streaming of work (instead of fixed iterations), and reducing bottlenecks. This project-oriented life cycle is often adopted by teams who are new to agile/lean who face rapidly changing stakeholder needs, a common issue for teams evolving (sustaining) an existing legacy solution, and by traditional teams that don't want to take on the risk of the cultural and process disruption usually caused by agile adoption (at least not right away). There are several critical aspects to this life cycle:

Teams address work items one at a time. A major difference between the Lean and Agile life cycles is the lack of iterations. New work is pulled from the work item pool one item at a time as the team has capacity, as opposed to the iteration-based approach where it is pulled into the team in small batches.

Work items are prioritized just in time (JIT). Work items are maintained as a small options pool, often organized into categories by prioritization time—some work items are prioritized by value (and hopefully risk) or a fixed delivery date, some must be expedited (often a severity 1 production problem or request from an important stakeholder), and some work is intangible (such as paying down technical debt or going on training). Prioritization is effectively performed on a JIT basis, with the team choosing the most important work item at the time when they pull it in to be worked on.

Practices are performed when needed, as needed. As with work prioritization, other practices such as planning, holding demos, replenishing the work item pool, holding coordination meetings, making go-forward decisions, look-ahead modeling, and many others are performed on a JIT basis. This tends to remove some of the overhead that teams experience with the Agile life cycle, but requires more discipline to decide when to perform the various practices.

Teams actively manage their workflow. Lean teams use a Kanban board [W] to manage their work. A Kanban board depicts the team's high-level process in terms of state, with each column on the board representing a state such as Needs a Volunteer, Being Explored, Waiting for Dev, Being Built, Waiting for Test, Being Tested, and Done. Those were just examples, because as teams choose their WoW, every team will develop a board that reflects their WoW. Kanban boards are often implemented on whiteboards or via agile management software. Work is depicted in the form of tickets (stickies on the whiteboard), with a ticket being a work item from the options pool/backlog or a subtask of a work item. Each column has a work-in-progress (WIP) limit that puts an upper limit on the number of tickets that may be in that state. As the team performs their work, they pull the corresponding tickets through the process on their Kanban board so as to coordinate their work.

Explicit phases, milestones, and incoming workflows. There is still an Inception phase and a Transition phase as well risk-based milestones to support consistent governance. Incoming workflows from other parts of the organization are shown, just as with the Agile life cycle.

images

DAD's Continuous Delivery: Lean Life Cycle

DAD's Continuous Delivery: Lean life cycle, shown in Figure 6.9, is a natural progression from the Lean life cycle. Teams typically evolve into this life cycle from either the Lean life cycle or the Continuous Delivery: Agile life cycle. There are several critical aspects to this life cycle:

Delivery of new functionality is truly continuous. Changes to production are delivered several times a day by the team, although the functionality may not be turned on until it is needed (this is a DevOps strategy called feature toggles described in Chapter 19).

Automation and technical practices are key. This is similar to the Continuous Delivery: Agile life cycle.

Inception and Transition have disappeared from the diagram. This occurred for the same reasons they disappeared for Continuous Delivery: Agile.

Explicit milestones and incoming workflows. Once again, similar to the Continuous Delivery: Agile life cycle.

Outcomes Lead to Continuous Exploration

An interesting thing that we've observed is that when you capture work items as outcomes, instead of as requirements such as user stories, this life cycle tends to evolve into continuous exploration of stakeholder needs rather than the continuous order taking that we see with requirements-driven strategies.

images

DAD's Exploratory Life Cycle

DAD's Exploratory life cycle, shown in Figure 6.10, is based on the Lean Startup principles advocated by Eric Ries. The philosophy of Lean Startup is to minimize up-front investments in developing new products/services (offerings) in the marketplace in favor of small experiments [Ries]. The idea is to run some experiments with potential customers to identify what they want based on actual usage, thereby increasing our chance of producing something they're actually interested in. This approach of running customer-facing experiments to explore user needs is an important design thinking strategy for exploring “wicked problems” in your domain. There are several critical aspects to this life cycle:

This is a simplified scientific method. We come up with a hypothesis of what our customers want, we develop one or more minimal viable products (MVPs) which are deployed to a subset of potential customers, then we observe and measure how they work with the MVP(s). Based on the data we collect, we decide how we will go forward. Do we pivot and rethink our hypothesis? Do we rework one or more MVPs to run new experiments based on our improved understanding of customer needs? Do we discard one or more ideas? Do we move forward with one or more ideas and “productize them” into real customer offerings?

MVPs are prototypes (at best). The MVPs we create are built hastily, often “smoke and mirrors” or prototype-quality code, of which the sole purpose is to test out a hypothesis. It is not the “real thing,” nor is it meant to be. It's a piece of functionality or service offering that we get out in front of our potential customers to see how they react to it. See Figure 6.11 for an overview of MVPs and related concepts.

Run several experiments in parallel. Ideally, this life cycle entails running several experiments in parallel to explore our hypothesis. This is an improvement over Lean Startup, which focuses on a single experiment at a time—although it is easier to run a single experiment at a time, it takes longer to get to a good idea and, worse yet, runs the risk of identifying a strategy before other options have been considered.

images

Failed experiments are still successes. Some organizations are reluctant to run experiments because they are scared of failing, which is unfortunate because an exploratory approach such as this actually reduces your risk of product failure (which tend to be large, expensive, and embarrassing). Our advice is to make it “safe to fail,” to recognize that when an experiment has a negative result that this is actually a success because you have inexpensively learned what won't work, enabling you to refocus on looking for something that will.

Follow another life cycle to build the real product. Once we've discovered one or more ideas that it appears will succeed in the market, we now need to build the “real solution.” We do this by following one of the other DAD life cycles.

images

We've seen several different flavors, or perhaps several different tailorings is a better way of looking at it, over the years:

1. Exploration of a new offering. The most compelling reason, at least for us, is to apply this life cycle to explore an idea that your organization has for a new product.

2. Exploration of a new feature. At a smaller scale, the Exploratory life cycle is effectively the strategy for running an A/B test or split test where you implement several versions of a new feature and run them in parallel to determine which one is most effective.

3. Parallel proof of concepts (PoCs). With a PoC, you install and then evaluate a package, sometimes called a commercial off-the-shelf solution (COTS), within your environment. An effective way to decrease the risk of software acquisition is to run several PoCs in parallel, one for each potential software package that you are considering, and then compare the results to identify the best option available. This is often referred to as a “bake-off.”

4. Strategy comparisons. Some organizations, particularly ones in very competitive environments, will start up several teams initially to work on a product. Each team basically works through Inception, and perhaps even a bit of Construction, the aim being to identify a vision for the product and prove out their architectural strategy. In this case, their work is more advanced than an MVP but less advanced than an MMR. Then, after a period of time, they compare the work of the teams and pick the best approach—the “winning team” gets to move forward and become the product team.

DAD's Program Life Cycle for a “Team of Teams”

DAD's Program life cycle, shown in Figure 6.12, describes how to organize a team of teams. Large agile teams are rare in practice, but they do happen. This is exactly the situation that scaling frameworks such as SAFe, LeSS, and Nexus address. There are several critical aspects to this life cycle:

There's an explicit Inception phase. Like it or not, when a team is new, we need to invest some up-front time getting organized, and this is particularly true for large teams given the additional risk we face. We should do so as quickly as possible, and the best way is to explicitly recognize what we need to do and how we'll go about doing so.

Subteams/squads choose and then evolve their WoW. Subteams, sometimes referred to as squads, should be allowed to choose their own WoW just like any other team would. This includes choosing their own life cycles as well as their own practices—to be clear, some teams may be following the Agile life cycle, some the Continuous Delivery: Lean life cycle, and so on. We may choose to impose some constraints on the teams, such as following common guidance and common strategies around coordinating within the program (captured by the Coordinate Activities process goal in Chapter 23). As Figure 6.13 implies, we will need to come to an agreement around how we'll proceed with cross-team system integration and cross-team testing (if needed), options for which are captured by the Accelerate Value Delivery process goal (Chapter 19) and the Develop Test Strategy process goal (Chapter 12), respectively. Where a framework such as SAFe would prescribe a strategy such as a release train to do this, DAD offers choices and helps you to pick the best strategy for your situation.

Subteams can be feature teams or component teams. For years within the agile community, there has been a debate around feature teams versus component teams. A feature team works vertical slices of functionality, implementing a story or addressing a change request from the user interface all the way through to the database. A component team works on a specific aspect of a system, such as security functionality, transaction processing, or logging. Our experience is both types of teams have their place, they are applicable in certain contexts but not others, and the strategies can and often are combined in practice.

Coordination occurs at three levels. When we're coordinating between subteams, there are three issues we need to be concerned about: coordinating the work to be done, coordinating technical/architectural issues, and coordinating people issues. In Figure 6.13, this coordination is respectively performed by the product owners, the architecture owners, and the team leads. The product owners of each subteam will self-organize and address work/requirements management issues among themselves, ensuring that each team is doing the appropriate work at the appropriate time. Similarly, the architecture ownership team will self-organize to evolve the architecture over time and the team leads will self-organize to manage people issues occurring across teams. The three leadership subteams are able to handle the type of small course corrections that are typical over time. The team may find that they need to get together occasionally to plan out the next block of work—this is a technique that SAFe refers to as program increment (PI) planning and suggests that it occurs quarterly. We suggest that you do it when and if it makes sense.

System integration and testing occurs in parallel. Figure 6.12 shows that there is a separate team to perform overall system integration and cross-team testing. Ideally, this work should be minimal and entirely automated in time. We frequently need a separate team at first, often due to lack of automation, but our goal should be to automate as much of this work as possible and push the rest into the subteams. Having said that, we've found that usability testing across the product as a whole, and similarly user acceptance testing (UAT), requires a separate effort for logistical reasons.

Subteams are as whole as they can be. The majority of the testing effort should occur within the subteams just like it would on a normal agile team, along with continuous integration (CI) and continuous deployment (CD).

We can deploy any time we want. We prefer a CD approach to this, although teams new to agile programs may start by releasing quarterly (or even less often) and then improve the release cadence over time. Teams who are new to this will likely need a Transition phase, some people call these “hardening sprints” or “deployment sprints” the first few times. The Accelerate Value Delivery process goal (Chapter 19) captures various release options for delivery teams and the Release Management process blade [AmblerLines2017] for organizations as a whole. A process blade encompasses a cohesive collection of process options, such as practices and strategies, that should be chosen and then applied in a context-sensitive manner. Each process blade addresses a specific capability, such as finance, data management, reuse engineering, or procurement—just like process goals are described using process goal diagrams, so are process blades.

Scaling is hard. Some problems require a large team, but to succeed you need to know what you're doing. If you're struggling with small-team agile, then you're not ready for large-team agile. Furthermore, as we learned in Chapter 3, team size is only one of six scaling factors that our team may need to contend with, the others being geographic distribution, domain complexity, technical complexity, organizational distribution, and regulatory compliance. We cover these issues in greater detail at DisciplinedAgileDelivery.com.

images

images

When Should You Adopt Each Life Cycle?

Every team should choose its own life cycle, but how do you do this? It's tempting to have your portfolio management team make this choice—well, at least it is for them. At best, they should make a (hopefully solid) suggestion when they first initiate an endeavor, but in the end the choice of life cycle should be made by the team if you want to be effective. This can be a challenging choice, particularly for teams new to agile and lean. An important part of the process-decision scaffolding provided by DAD is advice for choosing a life cycle, including the flowchart of Figure 6.14.

images

Of course, there's a bit more to it than this flowchart. Figure 6.15 overviews what we've found to be important considerations, from the Software Development Context Framework (SDCF) [SDCF], to be taken into account when selecting a life cycle. Constraining factors we keep in mind when choosing a delivery life cycle include:

1. Team skills. The two continuous delivery (CD) life cycles require the team to have a lot of skill and discipline. The other DAD life cycles also require skill and discipline, although the two CD life cycles stand out. With the traditional life cycle, you can get away with lower skilled people—due to the handoff-oriented nature of traditional, you can staff each phase with narrowly skilled specialists. Having said that, we have seen many traditional teams with very skilled people on them.

2. Team and organization culture. The Agile and Continuous Delivery life cycles require flexibility within the team and within the parts of the organization that the team interacts with. Lean strategies can be applied in organizations with a varying range of flexibility. Traditional can, and often is, applied in very rigid situations.

3. The nature of the problem. The Continuous Delivery life cycles work very well when you can build and release in very small increments. The other DAD life cycles work very well in small increments. Traditional is really geared for big releases.

4. Business constraints. The key issue here is stakeholder availability and willingness, although financial/funding flexibility is also critical. The Exploratory life cycle requires a flexible, customer-oriented, and experimental mindset on the part of stakeholders. Agile, because it tends to release functionality in terms of complete features, also requires flexibility in the way that we interact with stakeholders. Surprisingly, the Continuous Delivery life cycles require less stakeholder flexibility due to being able to release functionality that is turned off, thereby providing greater control over when something is released (by simply toggling it on).

images

The Evolve WoW process goal (Chapter 24) includes a decision point that covers the trade-offs associated with the six DAD life cycles, plus a few others that are not explicitly supported by DAD (such as traditional).

Different Life Cycles With Common Milestones

In many of the organizations that we've helped to adopt DA, the senior leadership, and often middle management, are very reluctant at first to allow delivery teams to choose their WoW. The challenge is that their traditional mindset often tells them that teams need to follow the same, “repeatable process” so that senior leadership may oversee and guide them. There are two significant misconceptions with this mindset: First, we can have common governance across teams without enforcing a common process. A fundamental enabler of this is to adopt common, risk-based (not artifact-based) milestones across the life cycles. This is exactly what DAD does, and these common milestones are shown in Figure 6.16. Second, repeatable outcomes are far more important than repeatable processes. Our stakeholders want us to spend their IT investment wisely. They want us to produce, and evolve, solutions that meet their actual needs. They want these solutions quickly. They want solutions that enable them to compete effectively in the marketplace. These are the types of outcomes that stakeholders would like to have over and over (e.g., repeatedly), they really aren't that concerned with the processes that we follow to do this. For more on effective governance strategies for agile/lean teams, see the Govern Delivery Team process goal (Chapter 27).

images

Explicit Phases and Governance Make Agile More Palatable to Management

Daniel Gagnon has been at the forefront of agile practice and delivery for almost a decade in two of Canada's largest financial institutions. He had this to say about using DA as an overarching tool kit: “At both large financials that I have worked in, I set out to demonstrate the pragmatic advantages of using DA as a ‘top of the house’ approach. Process tailoring in large, complex organizations clearly reveals the need for a large number of context-specific implementations of the four (now five) life cycles, and DA allows for a spectrum of possibilities that no other framework accommodates. However, we call this ‘structured freedom’ as all choices are still governed by DA's application of Inception, Construction, and Transition with lightweight, risk-based milestones. These phases are familiar to PMOs, which means that we aren't carrying out a frontal assault on their fortified position, but rather introducing governance change in a lean, iterative, and incremental fashion.”

Let's explore DAD's risk-based milestones in a bit more detail:

1. Stakeholder Vision. The aim of the Inception phase is to spend a short, yet sufficient amount of time, typically a few days to a few weeks, to gain stakeholder agreement that the initiative makes sense and should continue into the Construction phase. By addressing each of the DAD Inception goals, the delivery team will capture traditional project information related to initial scope, technology, schedule, budget, risks, and other information albeit in as simple a fashion as possible. This information is consolidated and presented to stakeholders as a vision statement as described by the Develop Common Vision process goal (see Chapter 13). The format of the vision and formality of review will vary according to your situation. A typical practice is to review a short set of slides with key stakeholders at the end of the Inception phase to ensure that everyone is on the same page with regard to the project intent and delivery approach.

2. Proven Architecture. Early risk mitigation is a part of any good engineering discipline. As the Prove Architecture Early process goal (see Chapter 15) indicates, there are several strategies you may choose to adopt. The most effective of which is to build an end-to-end skeleton of working code that implements technically risky business requirements. A key responsibility of DAD's architecture owner role is to identify risks during the Inception phase. It is expected that these risks will have been reduced or eliminated by implementing related functionality somewhere between one and three iterations into the Construction phase. As a result of applying this approach, early iteration reviews/demos often show the ability of the solution to support nonfunctional requirements in addition to, or instead of, functional requirements. For this reason, it is important that architecture-savvy stakeholders are given the opportunity to participate in these milestone reviews.

3. Continued Viability. An optional milestone to include in your release schedule is related to project viability. At certain times during a project, stakeholders may request a checkpoint to ensure that the team is working toward the vision agreed to at the end of Inception. Scheduling these milestones ensures that stakeholders are aware of key dates wherein they should get together with the team to assess the project status and agree to changes if necessary. These changes could include anything such as funding levels, team makeup, scope, risk assessment, or even potentially canceling the project. There could be several of these milestones on a long-running project. However, instead of having this milestone review, the real solution is to release into production more often—actual usage, or lack thereof, will provide a very clear indication of whether your solution is viable.

4. Sufficient Functionality. While it is worthwhile pursuing a goal of a consumable solution (what Scrum calls a potentially shippable increment) at the end of each iteration, it is more common to require a number of iterations of Construction before the team has implemented enough functionality to deploy. While this is sometimes referred to as a minimal viable product (MVP), this not technically accurate as classically an MVP is meant to test the viability of a product rather than an indication of minimal deployable functionality. The more accurate term to compare to this milestone would be “minimum feature set” or “minimal marketable release (MMR),” as Figure 6.11 shows. An MMR will comprise one or more minimal marketable features (MMFs), and an MMF provides a positive outcome to the end users of our solution. An outcome may need to be implemented via several user stories. For example, searching for an item on an ecommerce system adds no value to an end user if they cannot also add the found items to their shopping cart. DAD's sufficient functionality milestone is reached at the end of the Construction phase when a MMR is available, plus the cost of transitioning the release to stakeholders is justified. As an example, while an increment of a consumable solution may be available with every two-week iteration, it may take several weeks to actually deploy it in a high-compliance environment, so the cost of deployment may not be justified until a greater amount of functionality is completed.

MVPs versus MMRs

Daniel Gagnon provides this advice: Think of an MVP as something the organization does for selfish reasons. It's all about learning, not about providing the customer with a fully fledged (or sometimes even vaguely functioning!) solution. Whereas an MMF is altruistic—it's all about the customer's needs.

5. Production Ready. Once sufficient functionality has been developed and tested, transition-related activities such as data conversions, final acceptance testing, production, and support-related documentation normally need to be completed. Ideally, much of the work has been done continuously during the Construction phase as part of completing each increment of functionality. At some point, a decision needs to be made that the solution is ready for production, which is the purpose of this milestone. The two project-based life cycles include a Transition phase where the Production Ready milestone is typically implemented as a review. The two continuous delivery life cycles, on the other hand, have a fully automated transition/release activity where this milestone is addressed programmatically—typically the solution must pass automated regression testing and the automated analysis tools must determine that the solution is of sufficient quality.

6. Delighted Stakeholders. Governance bodies and other stakeholders obviously like to know when the initiative is officially over so that they can begin another release or direct funds elsewhere. The initiative doesn't end when the solution is deployed. With projects, there are often closeout activities such as training, deployment tuning, support handoffs, post-implementation reviews, or even warranty periods before the solution is considered completed. One of the principles of DA, see Chapter 2, is Delight Customers, which suggests that “satisfied” customers is setting the bar too low. The implication is that we need to verify whether we've delighted our stakeholders, typically through collection and analysis of appropriate metrics.

Life Cycles Are Just Starting Points

DAD teams will often evolve from one life cycle to another. This is because DAD teams are always striving to Optimize Flow, to improve their WoW as they learn through their experiences and through purposeful experimentation. Figure 6.17 shows common evolution paths that we've seen teams go through. The times indicated in Figure 6.17 reflect our experiences when teams are supported by Disciplined Agile (DA) training and Certified Disciplined Agile Coaches (CDACs)—without this, expect longer times and most likely higher total costs, on average. When helping a traditional team move to a more effective WoW, a common approach is to start with the Agile life cycle. This is a “sink or swim” approach that experience shows can be very effective, but it can prove difficult in cultures that resist change. A second path shown in this diagram is to start traditional teams with a Lean Kanban [Anderson] approach wherein the team starts with their existing WoW and evolves it over time via small changes into the Lean life cycle. While this is less disruptive, it can result in a much slower rate of improvement since the teams often continue to work in a silo fashion with Kanban board columns depicting traditional specialties.

Life Cycle Evolution Is a Good Thing

To be clear, we think Scrum is great and it is at the heart of our two Agile life cycles. However, we have seen a growing backlash in the agile community against its prescriptive aspects. As we describe in our Introduction to Disciplined Agile Delivery book, in practice, we regularly see advanced agile/Scrum teams stripping out the process waste in Scrum, such as daily meetings, planning, estimating, and retrospectives as they “lean up.” The Scrum community is quick to ostracize such behavior as “Scrum…but”—doing some Scrum but not all of it. However, we see this a natural evolution as the team replaces wasteful activities with added value delivery. The nature of these teams that naturally collaborate all day, every day means that they don't need to perform such ceremonies on a deferred cadence, preferring to do these things, when needed, on a JIT basis. We think this a good and natural thing.

images

What Figure 6.17 doesn't show is where the Program or Exploratory life cycles fit in. First, in some ways it does apply to the Program life cycle. You can take an agile program approach (similar to what scaling frameworks such as Nexus, SAFe, and LeSS do in practice), where the program releases large increments on a regular cadence (say quarterly). You can also take a lean program approach, where the subteams stream functionality into production and then at the program level this is toggled on when it makes sense to do so. Second, the focus of the diagram is on full-delivery life cycles, whereas the Exploratory life cycle isn't a full-delivery life cycle in its own right. It is typically used to test out a hypothesis regarding a potential marketplace offering, and when the idea has been sufficiently fleshed out and it appears the product will succeed, then the team shifts into one of the delivery life cycles of Figure 6.17. In that way, it replaces a good portion of the Inception phase efforts for the team. Another common scenario is that a team is in the middle of development and realizes that they have a new idea for a major feature that needs to be better explored before investing serious development effort into it. So the team will shift into the Exploratory life cycle for as long as it takes to either flesh out the feature idea or disprove its market viability.

In Summary

In this chapter, we explored several key concepts:

Some teams within your organization will still follow a traditional life cycle—DAD explicitly recognizes this but does not provide support for this shrinking category of work.

DAD provides the scaffolding required for choosing between, and then evolving, six solution delivery life cycles (SDLCs) based on either agile or lean strategies.

Project-based life cycles, even agile and lean ones, go through phases.

Every life cycle has its advantages and disadvantages; each team needs to pick the one that best reflects their context.

Common, risk-based milestones enable consistent governance—you don't need to force the same process on all of your teams to be able to govern them.

A team will start with a given life cycle and often evolve away from it as they continuously improve their WoW.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.17.167.114