Agile Teams Release Frequently

Frequent releases help buy down project risk while making valuable software capabilities available sooner.

Agile is the default software development approach worldwide.  The foundation upon which Agile approaches (e.g., Scrum, Kanban) rest consists of the Agile Manifesto for Software Development and the 12 Principles of Agile Software.  We consider practices that align with the Manifesto’s values and underlying principles to be Agile.  Unfortunately, too many organizations do not achieve the benefits of agility because they engage in the mechanics of an Agile approach without understanding and implementing its foundational values and principles.

One of the most common examples of this disconnect between Agile software development practice, values, and principles is organizing work into iterations or sprints while releasing infrequently, often only towards the end of a project.  By release, I mean making new software functionality available to customers and end users.  This practice runs counter to the third principle of Agile software development:

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

The 12 Principles of Agile Software Development: https://agilemanifesto.org/principles.html

Agile Empiricism

Agile software development teams do not immediately release everything they develop.  Sometimes they must wait on external technical dependencies.  Other times, customers and end users are not ready to accept new functionality.  Examples include:

  • Users may need training on new functionality
  • Business and mission processes and workflows may need to change before release
  • Project sponsors and stakeholders may decide that a particular release candidate is not what is needed or desired

However, product management/owners, sponsors, and stakeholders should strive to release valuable business or mission capabilities frequently, cost effectively, and in time to be valuable.  You see, it is not possible to determine the actual business or mission value of a software feature or capability until actual customers and end users use it to achieve desired outcomes.  Until then, software features are hypotheses of what product teams believe will best address customer and end user needs.

Allowing too much time to pass before exposing an evolving solution to target customers and end users risks developing unwanted and/or under-performing features and capabilities.  Since Agile projects are controlled primarily by managing scope, losing touch with customer and end user needs translates into:

  • Wasted effort
  • Higher development, testing, and operational costs
  • Longer development cycles
  • Less feedback to inform product management, project management, and Software Development Lifecycle (SDLC) activities

Agile development is empirical.  In other words, Agile teams monitor progress, make decisions, and act based on lessons learned from previous releases.  In Agile efforts, customer and end-user input and feedback inform planning, implementation, testing, and release of software features and capabilities.  Thus, Agile teams deliver and release relatively small increments of functionality within short time frames (weeks).  They continually gauge the level of business or mission value software release increments provide and how well those increments perform relative to technical specifications.

Agilefall

The less frequently software development teams release, the less “Agile” a software project becomes.  The project increasingly resembles a traditional project management / Waterfall project.

This conflating of Agile and Waterfall is often referred to as Agilefall.  Agilefall is not a formal SDLC approach.  Thus, there is no set of best practices to guide its implementation.  In fact, Agilefall is an Agile anti-pattern.

The typical Agilefall scenario involves Scrum Teams developing and testing system components for eventual integration, deployment, and release to production.  Software teams develop and deploy components or portions of components every iteration.  They may do some degree of integration during development but deliver and release little to nothing of business or mission value to customers and end users until near the end of the project.  Customer and end user input and feedback do not inform iteration planning. 

Figure 1: Waterfall, Agilefall, and Agile Release Frequencies

Agilefall typically leads to a divergence between what the solution offers and customer and end user needs.  It also leads to costly problems during integration and testing since development teams have fewer opportunities to integrate what they develop and to test those integrations. Agilefall is, in essence, a Waterfall project with software teams performing Scrum “mechanics”.

Agile Delivery

Agile software releases are feature based, not component-based.  Instead of delivering system components, Agile software teams deliver features.  Features are cohesive and complete slices of system functionality capable of performing useful work from the perspective of customers and end users.  This approach to value delivery ensures that:

  • Customers and end users gain access to valuable functionality early and often
  • Lessons learned from previous releases inform future releases

The more frequently software teams deliver and release, the more opportunities exist to course correct planning and execution.  Requirements are often fuzzy until members of the stakeholder community can see and experience functionality for themselves.  Problems are easier and cheaper to fix when caught early in development.

DevOps

DevOps is an Agile implementation of the SDLC.  It facilitates Agile’s iterative and incremental delivery model.  DevOps leverages automation and a culture of close collaboration between development and operations teams to:

  • Promote faster and more frequent deployment of useful capabilities through delivery of small increments of business or mission value
  • Apply lessons learned and insights gained from customer and end-user interaction with released software
  • Avoid time-wasting hand-offs between phases and teams
  • Accelerate development, testing, deployment, and release of software features as well as their integration into complete and cohesive systems or solutions

Conclusion

Frequent releases help buy down risk across the entire SDLC while making valuable business or mission software capabilities available sooner.  DevOps practices enable this value delivery approach.  The best Agile software teams release so frequently, their releases approach a continuous flow.

The promise of Agile is to deliver software capabilities faster and more cost effectively, while improving quality and alignment to customer and end user needs.  Keeping this promise requires adherence to fundamental Agile values and principles, regardless of the chosen Agile approach.



Four Traits of Ineffective Product Owners

Avoid these Product Owner pitfalls to achieve greater product clarity and better team execution.

The product owner is one of the three roles defined in Scrum:  Product Owner (PO), Scrum Master, and the Development Team.  The three combine to form the Scrum Team.

The PO synthesizes the needs of product sponsors, stakeholders, customers, and end users (which I refer to as the Stakeholder Community), with input from the Development Team, into a coherent, viable, and executable product vision.  The product vision guides Scrum Team decision making.

POs fill the “The Product Management Vacuum” between company/organizational vision and strategy and the work performed by development teams.  Effective POs lead conversations about which digital capabilities to develop and why.

Ineffective POs typically exemplify these four characteristics:

  1. Lack understanding of the target business/mission/market
  2. Lack a product vision
  3. Struggle making tough choices
  4. Are not empowered to make decisions

Ineffective Product Ownership

Lack Understanding of the Business / Mission / Market

The PO is “the voice of the customer” for the Scrum Team.  This means POs advocate for the needs, expectations, and desires of customers in the product’s business, mission, or market segment.  They define and communicate requirements from the perspective of customers and end users.  They can only do so if they posses a deep understanding of the relevant business, mission, or market.  In a choice between deep business, mission, or market understanding and technical knowledge, the former trumps the latter.

Ineffective POs lack intimate business, mission or market knowledge.  Thus, they often fall into a proxy role between Stakeholder Community members and the Scrum Team.  Rather than driving product vision definition in collaboration with the Stakeholder Community and the Scrum Team, they merely document requested features.  They struggle to explain the value of requested features or guide Scrum Teams as they learn the business, mission, or market domain.

Lack a Product Vision

A product vision communicates the desired end state of a product in business or mission terms.  Possessing a deep understanding of market, customer, and end-user needs is crucial but not enough.  The PO must leverage that understanding to develop and evolve a product vision.  An ineffective PO either does not see the value of developing a product vision or does not have the skills to do so.

Struggle Making Tough Choices

Making choices about the product is difficult without a clear product vision.  Having one enables the following decisions:

  • Prioritization the Stakeholder Community needs, expectations, and desires
  • Definition of features likely to address Stakeholder Community needs, expectations, and desires
  • Prioritization of features into valuable deployable capabilities
  • Determining which capabilities fit within product scope (when to say no)

A product cannot be all things to all people.  Tough decisions about what to include in a product offering are sometimes necessary.  Competing priorities and different levels of power or influence among Stakeholder Community members can make this difficult.  An effective PO fosters a collaborative atmosphere of give and take while holding firm to a carefully-crafted and evolving product vision.  This responsibility goes well beyond inventorying potential features.

Not Empowered to Make Decisions

The most glaring characteristic of ineffective POs is that they are often not empowered to make product decisions.  This goes back to the earlier point about POs playing a proxy role.  In this case, the proxy role is between the actual decision maker(s) and the Scrum Team.

If the PO does not “own” the product vision, someone else does.  Often, organizations cede ownership of the product vision to development teams.  This is a dangerous situation in any Scrum project because Scrum/Agile projects are primarily scope driven.  Without guidance, development teams implement what they think is important and necessary in ways that are most obvious and straightforward to them.  This leads to disconnects between what teams implement and the needs of the Stakeholder Community.  It also makes it difficult to determine the business or mission value of released capabilities and when capabilities are complete.

Conclusion

The PO brings together people, technology, and processes to develop valuable software capabilities.  A product is far more than a collection of related features.

In Scrum, the product is the result of continual verification, validation, and evaluation of increments of capability delivered iteratively. The product evolves cross increments and iterations/sprints based on an evolving product vision informed by input from the Stakeholder Community, development teams, and real-life results/outcomes attained.

Effective POs are empowered to lead product direction, possess enough business/mission knowledge to guide the Stakeholder Community and Development Team, and have the “soft skills” necessary to foster collaborative discussions about needs and negotiations over product features.



Agile Cheetah Now Has a YouTube Channel!

Agile Cheetah just added a YouTube channel to our list of platforms. This is another way for us to share knowledge about Agile, DevOps, and organizational agility.

You can subscribe to the channel directly from the watermark link in lower right-hand corner of the video below. Visit the channel and don’t forget to like the video and click on the notification bell to ensure you don’t miss future videos!

Product Backlog Ordering Using WSJF Video

Managing Software Project Scope: WBS vs. Product Backlog

Both decompose project scope in very different ways.

Many organizations steeped in traditional project management culture struggle to adopt Agile’s product management approach.  One of the biggest cultural stumbling blocks is the difference between how traditional project management and Agile treat project scope.  This is best exemplified by the differences between the Work Breakdown Structure (WBS) and Scrum’s concept of the product backlog.  This article describes both tools, compares and contrasts them, and makes the case for not conflating these two methods of accounting for project scope.

What is a WBS?

The PMBOK® Guide—Third Edition defines a WBS as:

“A deliverable-oriented hierarchical decomposition of the work to be executed by the project team to accomplish the project objectives and create the required deliverables. It organizes and defines the total scope of the project. Each descending level represents an increasingly detailed definition of the project work. The WBS is decomposed into work packages. The deliverable orientation of the hierarchy includes both internal and external deliverables.”

PMBOK® Guide—Third Edition

A WBS is a planning tool that helps identify, document, and present the total scope of a project.  Scope is one of the three project management constraints colloquially known as “The Iron Triangle”.

Iron Triangle
Figure 1: The Iron Triangle

The Iron Triangle represents how scope, schedule, and level of effort/resources act as mutually-dependent project constraints.  Traditional project management attempts to predict most, if not the entire, project scope prior to project execution.  Later, planners estimate the level of effort required to complete planned tasks and deliverables and build a project schedule based on those estimates.  The resulting three values feed calculation of project cost.

WBS Structure

A WBS is most often depicted as a hierarchical tree.  Every node in the tree is called an element.

Figure 2: Basic WBS Structure

Depending on the type of WBS hierarchy created, project scope may be organized in terms of:

  • Project/program activities necessary to deliver deliverables (Verb-Oriented)
  • Product components that make up a deliverable (Noun-Oriented)
  • Time-bound phases of the project plan
  • A mix of the previous three types

The root of the tree (WBS level 1) represents the entire scope of the project or product deliverable.  From there, the main branches/elements of the tree (WBS Level 2) are structured in accordance with one of the four types of WBS hierarchy types listed above.

WBS Decomposition

The tree expands as higher-level elements are decomposed into smaller constituent elements or components.  Each element represents 100% of planned work and deliverables for that element.  Child elements collectively represent 100% of the scope represented by their parent.  Decomposing across elements just enough to facilitate project scope definition, without over-specifying the project or solution, while accounting for the entirety of project scope, is an art honed by experience.

Mapping to schedule and Resources

At the lowest level of each branch of the WBS hierarchy are work packages.  Work packages map project scope (deliverables and activities) to project schedule.  A work package includes schedule activities and milestones required to complete the associated deliverable or work element/component.  In turn, control accounts map work packages to project budget (cost), facilitate the roll up of activities and milestones into an integrated schedule, and allow planners to assign specific resources (e.g., people) to specific elements of the WBS hierarchy.

Figure 3: WBS Hierarchy with Control Accounts

Another artifact that ties the scope represented by the WBS to project schedule and resources is the WBS dictionary.  The PMBOK® Guide—Third Edition defines a WBS dictionary as:

A document that describes each component in the WBS.  For each WBS component, the WBS dictionary includes a brief description of the scope or statement of work, defined deliverables, a list of associated activities, and a list of milestones.  Other information may include responsible organization, start and end dates, resources required, an estimate of cost, charge number, contract information, quality requirements, and technical references to facilitate performance of the work.

PMBOK® Guide—Third Edition

The WBS dictionary for figure 3 above may look something like this:

Table 1: WBS Data Dictionary Template Example

Types of WBS Hierarchies

Let’s delve a little deeper into the different types of WBS hierarchies.

Project Scope WBS

Figure 4: Project Scope (Verb-Oriented) WBS

A project scope WBS decomposes the project work or activities necessary to produce deliverables or products.  The first word of each WBS element name is a verb, such as, design, develop, test, etc.  In figure 4 above, the project is organized by Software Development Lifecycle (SDLC) phases (Define, Design, Develop, and Integrate & Test) and includes the project management work necessary to orchestrate the work.

Product Scope WBS

Figure 5: Product Scope (Noun-Oriented) WBS

A product scope WBS defines project work in terms of the components (physical or functional) that make up a deliverable or product.  In this case, the first word of each WBS element name is a noun, such as, Module A, Subsystem B, Aircraft Engine, Fuselage, etc.  Since each element represents a part of the overall product, this WBS type is sometimes called a “Product Breakdown Structure (PBS)”.

Time-Phased WBS

Figure 6: Time-Phased WBS

Large-scale projects can take years to complete.  In such cases, it is reasonable and advisable to break up project scope and schedule into discrete phases.  A “time-phased” WBS breaks up the project into major phases instead of activities.  Rather than planning the entire project upfront, planners follow a “rolling wave” planning approach in which they plan the upcoming phase in detail while postponing detailed planning for later phases.  Rolling wave planning affords the opportunity to improve current plans based on lessons learned in previous phases. It also provides a measure of flexibility to deal with changing project realities.

Hybrid WBS

Figure 7: Hybrid WBS

Elements from the three other WBS types can be combined to create a “hybrid” WBS.  Defense materiel project planners frequently use this type of WBS.  Such projects tend to be long-lived, so time-phased branches may be included.  Product-based branches scope complex products/deliverables.  For activities that map to specific activity phases (e.g., SDLC phases), project scope elements are appropriate.  A hybrid WBS may include project or program activities outside the scope of creating physical or functional product components or managing their creation.  Examples of such activities include training, operations & maintenance, and facilities management.

WBS Type Comparison Chart

I summarize the WBS hierarchy types in the table below:

Table 2: WBS Hierarchy Type Comparison Chart

Agile Value Delivery

Before discussing product backlogs, I need to explain how Agile software teams deliver useful capabilities. 

Agile software teams deliver iteratively and incrementally.  They release valuable increments of software functionality over the entire development effort.  These increments are “production ready” or “potentially releasable” software capabilities that customers and end users can start using right away.  While not everything released by Agile teams must be user facing, they avoid releasing individual system components or portions of components that do not deliver real business or mission value on their own.

Solutions built by Agile teams grow and evolve over time.  Each and every increment delivered is designed to work with all other increments, past and future.

Figure 8: Waterfall vs. Agile Value Delivery

Thus, Agile releases are primarily feature-based, not component-based.  Rather than delivering system components, Agile software teams strive to deliver features.  Features are cohesive and complete slices of system functionality capable of performing useful work from the perspective of customers and end users. 

What is a Product Backlog?

A product backlog is an ordered queue of deliverables.  The term product backlog is most associated with the Agile framework called Scrum.  According to the Scrum Guide, the product backlog:

…is an emergent, ordered list of what is needed to improve the product. It is the single source of work undertaken by the Scrum Team.

https://www.scrumguides.org/scrum-guide.html

In this definition, the “product” is whatever the Scrum Team develops and delivers (application, system, solution, documentation, reports, etc.). A product backlog is used to track product deliverables.

As depicted in figure 9 below, Scrum teams take into account multiple considerations when ordering product backlog items.

Figure 9: Product Backlog
Learn more about ordering product backlogs.

Product backlog items represent features.  Scrum teams decompose bigger features into smaller ones to better manage their development.

The highest-ordered items are most ready for implementation.  The Scrum Team refined them well enough to implement them.  Lower-ordered items are increasingly less ready for implementation the further down the product backlog they rank.

Comparing & Contrasting WBS vs. Product Backlog

Having level set what a WBS and product backlog are, I now discuss the similarities and differences between them.

Figure 10: WBS vs. Product backlog

Similarities

Of the four WBS types discussed in this article, the PBS is most like a product backlog.  Both are product scope-focused and decompose larger deliverables into smaller ones.

Neither a WBS or product backlog depict dependencies between elements or items.  The main artifact used to show dependencies between work activities and deliverable milestones in traditional project management is the project schedule.  User story maps help organize Scrum product backlog items (epics and user stories) based on workflow and interface dependencies.

Differences

The main difference between WBS hierarchies and product backlogs is that the WBS is a tool for linking together project scope with the other two Iron Triangle constraints:  schedule and level of effort/resources.  A product backlog is strictly focused on tracking and ordering product scope.

Modern Agile productivity tools like JIRA allow development teams to document the work they perform, how long it takes them to do it, etc.  However, that information is collected after developers pull the highest priority items from the product backlog and begin work.  The product backlog is neither a repository for nor a source of work status information.

Another difference is that tasks and activities count as part of the scope represented by a WBS (e.g., project management tasks, meetings, reporting).  While Agile software teams also deal with management and project overhead, those activities are not included in the product backlog.  From an Agile perspective, those activities are not part of the product.  They are necessary, yet ancillary activities to the work of developing, testing, and releasing software.

Finally, product-oriented WBS elements represent components while product backlog items represent features. 

Disadvantages of Decomposing Product Scope into Components

Decomposing product scope into components has three major disadvantages:

  1. Postponing integration and testing
  2. Difficulty measuring progress
  3. Formation of component team silos

Postponing Integration and Testing

In traditional software projects, there is often nothing valuable to test and evaluate, from a business or mission perspective, until most or all components are integrated into a cohesive solution.  In traditional software projects, system integration is done infrequently, often occurring only once towards the end of development.  Integrating components towards the end of a project often affords insufficient time to address problems.

Difficulty Measuring Progress

Traditional project management focuses on tracking tasks and activities and their level of completion (e.g., percentage complete).  The rationale being that if everyone executes all necessary tasks and activities, on time, and in the right order, the project will proceed as planned.  Therefore, project management’s job is to identify everything that needs to be done before the start of the project and enforce adherence to the plan. 

The problem with applying this approach to software projects is that non-trivial software systems are significantly more complex than physical systems of comparable cost.  This is because software systems can be developed and modified in infinite ways.  As software systems evolve to serve growing numbers of requirements from growing user bases, their complexity increases, sometimes at a seemingly exponential rate.  No amount of predictive planning can overcome this natural slide towards entropy.

There is also the issue of quantifying how much actual progress has been made.  What is the difference between a component being 75% complete vs. 95% complete?  If we have to wait until it is 100% complete and integrated into the larger solution before we can test and validate it, there is none.

Agile planning is adaptive, with short project planning horizons.  Software development teams achieve fast and frequent releases by keeping releases small.  Planning and releasing this way allows for more opportunities to test and validate deliverables and to fold lessons learned into ongoing planning.  Best of all, the measure of project progress is delivery of valuable capability to customers and end users rather than arbitrary estimates of completion rates.

Formation of Component Team Silos

Each WBS element maps to a set or resources (one or more teams) that do the work.  Establishing development teams for specific solution components often stifles cross-team collaboration and creates productivity bottlenecks.

For example, project management forms a dedicated database team to deliver a system database identified as a WBS component.  The result is that the team’s allocated hours and skillset are segregated around delivering a single component.  Often, the inefficiencies of managing dependencies between component teams outweigh the efficiencies gained from component team specialization.

Forming teams around system features is a staple of Agile software development. While component teams are sometimes necessary in Agile software development efforts, the default bias is towards forming feature teams. Under feature teams, system components form and evolve incrementally and iteratively, one feature at a time. Value delivery no longer depends on delivering the entire system. Instead, value delivery occurs one release at a time throughout development.

Agile Breaks the Iron Triangle

To achieve project agility, Agile breaks the Iron Triangle by making project scope variable while fixing resources and schedule.  This involves shifting our thinking about managing projects:

Table 3: How Breaking the Iron Triangle Shifts Thinking about Managing Projects

The most optimal solutions reside in the nexus of value, cost-effectiveness, and timeliness:

Figure 11: The Optimal Solution Space

Agile projects control scope and ensure teams satisfy requirements through ongoing planning and collaboration between development teams, project sponsors, stakeholders, customers, and end users.  Sponsors control budgets and approve project roadmaps; stakeholders, customers, and end users work with development teams to define solutions; and development teams plan and build functionality within those constraints.  The advantages of controlling projects primarily through managing project scope are:

  • Not sacrificing quality in favor of adhering to all three constraints of the Iron Triangle.
  • No budget or schedule surprises (since budgets and schedules are essentially fixed)
  • Basing project decisions on the actual business or mission value delivered and team performance rather than alignment to detailed (and possibly obsolete) plans

Conclusion

At the heart of the differences between traditional project management and Agile is the fundamental difference between project management and product management.  Project management focuses on managing tasks and activities to ensure they complete on schedule and on budget.  Product management focuses primarily on managing the product.

Many project and program managers are unaware of this difference.  Implementation of Agile practices corrupted by traditional project management biases often leads to failed projects.  Attempting to structure product backlogs like WBS hierarchies is one manifestation of this misalignment between traditional project management and Agile mindsets.