Agile, Waterfall, or Nothing at All?

Balancing team autonomy with project control

Software developers are “creatives.”  Most don’t fit the stereotypes of artists, designers, authors, etc.  However, even those who typify the hyper-analytical “software engineer” persona crave opportunities to work on projects where they can express their creativity by building great solutions. 

Many imagine (and often start) “green field” projects that allow them to do just that.  They want to avoid integrating their work with previous (legacy) implementations and accommodating technical and project management constraints.  They long for autonomy in deciding what to develop, how, and with what.

Most often, however, this drive for autonomy clashes with the realities of creating successful products and services.  Success entails more than writing code.  Also, developers, like practically everyone else, expect compensation for their work.  Unless the effort is altruistic or some sort of hobby, the needs of sponsors, stakeholders, customers, and users influence what the solution becomes, its development, and the mix of technologies and tools employed.

Every software development project, regardless of the chosen development or project management approach, must address the phases of the software development lifecycle (SDLC) and the constraints of the “Iron Triangle”:  Cost, Schedule, and Scope.  There is no free lunch.

Software Development Lifecycle
Figure 1: The Software Development Lifecycle (SDLC)

Balancing Team Autonomy and Project Control

Striking the right balance between development team autonomy and project management control involves aligning software development and project management approaches to deliver the greatest value possible.  That balance is different for every organization and project.

Before Agile, the need to subordinate software development practice to the needs of project management was an unquestioned assumption.  Documentation and processes that supported project planning masqueraded as engineering or technical artifacts.  It did not matter that those detailed requirements, design documents, and development plans became obsolete doorstops soon after development started.  What mattered was that they provided information with which to create management plans, schedules, and budgets.

Two major factors opened the door to experimentation with iterative and incremental software development and delivery.  The first was the decades-long track record of failure amassed by traditional software projects in delivering complete solutions on time, within budget, and at expected levels of quality.  The second was the impact of technological advances that flipped the cost differential between computer memory and employees (i.e., employees became more expensive than computing resources).

Differences between Software Development Approaches

We now have multiple software development approaches to choose from.  Each balances team autonomy vs. management control differently based primarily on how they address the following priorities:

  • Adaptive vs. Predictive Planning
  • Tactical vs. Strategic Focus
  • Innovation, Flexibility, and Speed vs. Control and Risk Avoidance
  • Iterative and Incremental Delivery vs. “Big Bang” Delivery
Spectrum of Software Development Approaches
Figure 2: Spectrum of Software Development Approaches

Adaptive vs. Predictive Planning

Figure 2 above depicts some of the most common software development approaches on a spectrum, from most adaptive on the left side to most predictive on the right side. On the adaptive extreme (cowboy coding):

  • Little to no planning occurs prior to or during the project
  • Developers execute project activities in an ad hoc fashion, based on their own judgement and project needs, rather than following a deliberate plan
  • They have a free hand in choosing what they develop, design approaches, technologies, tools, etc.

As we move from left to right on Figure 2, software development and program management process overhead increase.  So does the amount of planning done prior to software development.

As Figure 2 depicts, planners have latitude in tailoring and implementing software development approaches.  Different choices yield different amounts of process burden and upfront planning. Ultimately, project and technical constraints and circumstances shape the implementation of all software development approaches.

On the predictive extreme, project activities are tightly coordinated and sequenced based on plans that encompass the entire development project, from requirements definition to release.

Rather than performing most project planning during the Planning and Analysis phases of the SDLC, Agile spreads planning across its entirety. Agile software development executes SDLC activities as one integrated flow of work that grows and evolves solutions iteratively and incrementally.

Tactical vs. Strategic Focus

As we move across the software development approaches, from left to right, solution alignment with organizational strategic aims increases.  This is because predictive software development approaches are typically top-down in nature. Adaptive development projects are more closely aligned with short-term tactical goals and deliver capabilities in smaller increments than predictive development projects.

Alignment between strategic and tactical imperatives is possible and necessary for both predictive and adaptive approaches. However, the inherent top-down vs. bottom-up nature of predictive vs. adaptive planning results in very different ways of achieving strategic and tactical alignment.

Learn how Scrum aligns organizational strategy and IT via a product management mindset.

Innovation, Flexibility, and Speed vs. Control and Risk Avoidance

Choosing the right software development approach also depends on project sponsor and stakeholder priorities.  Projects best suited for an adaptive development approach prize innovation, flexibility, and speed.  Predictive software development approaches are most appropriate in organizations seeking to enforce top-down control and avoid risk.

The nature of a project’s technology and business/mission domains also influences choices between software development approaches. Projects best suited for a predictive approaches:

  • Have stable and well-understood technology and business domains
  • Standard and routine solution approaches
  • Project staff experienced in delivering systems of similar size and scope

An adaptive software development approach is best for innovative (non-routine) technical projects and for projects that require ongoing refinement and experimentation to arrive at the most optimal solution.

Some software projects in regulated industries or government may require predictive software development approaches.  Regulatory oversight increases the need for program management control and risk avoidance.  Most software system development projects do not require that level of oversight and control, thus making them likely candidates for adaptive software development approaches.

Iterative and Incremental Delivery vs. “Big Bang” Delivery

Another defining feature of software development approaches is whether they deliver capabilities iteratively and incrementally or as monolithic “Big Bang” releases.  While most organizations deliver software solutions incrementally across multiple releases, many develop large increments of capability over months or years. Such release increments are essentially Spiral or serial Waterfall projects.

Iterative and incremental SDLC approaches, like Agile, increase the frequency of releases and shorten the time between them considerably.  For example, software teams that employ Agile approaches such as Extreme Programming (XP) and Scrum develop release candidates every two to four weeks. Smaller, more frequent releases lower risk and provide more opportunities to align solutions to current business/mission, organizational, and technical circumstances.

Conclusion

Control is a vital element of agility.  Accelerating the pace of software delivery requires some degree of control and flexibility.  Overemphasizing control slows software development and decreases flexibility.  Underemphasizing control can turn flexibility into chaos, robbing software development teams of both planning and process stability, thereby slowing progress.

The term “Cowboy Coder” is a pejorative for a reason.  Developing functionality without disciplined technical and project management processes leads to low-quality implementations and project failure.  It also makes it harder to align solutions to market, business, mission, and oversight requirements.

The opposite extreme is ill suited for most software development efforts.  Most software development efforts do not need the amount of process and documentation overhead Waterfall software development brings. In fact, the predictive planning necessary to carry out Waterfall process and documentation runs counter to the way modern software systems are developed.

Software development teams must not ignore project and technical constraints.  Nor should they try to address every constraint and risk prior to development.  Instead, they should leverage them to create better solutions through inspection and adaptation, iterative and incremental development and release, and adaptive planning.



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.



Why So Many Developers are Fed Up with Agile (Pt. 2)

Greater Visibility & Oversight with Less Control

Recently, I visited an Agile-related Reddit forum/subreddit.  On one thread, developers were chiming in their complaints about Agile software development.  One comment caught my attention.  The commenter stated that, “Agile treats developers like children.

That comment reminded me of a previous employer who had just purchased JIRA licenses and was excited at the prospect of using the tool to keep an eye on what his company’s developers were working on.  I remember thinking how ironic it was that the greatest benefit the business owner saw in a tool ostensibly designed to support the work of Agile teams was the ability to surveil his employees.  If that was not a clear subversion of Agile principles, I don’t know what is.

That anecdote crystalizes the point of this article:  Agile’s emphasis on greater visibility into progress achieved by Agile teams can easily be turned against them.  In other words, increased visibility over the work performed by Agile teams often leads to more intrusive management oversight that diminishes the ability of teams to manage their own work (self-organize).  

This article is the second of a four-part series about the reasons so many developers are fed up with Agile and so many organizations fail to achieve the benefits touted by Agilists, consultants, and tool vendors.  The common thread across the series is that what often passes for Agile is anything but Agile.

The other topics covered in the series are:

  • The Never-Ending Agile Grind – Developers often feel overwhelmed by the constant pressure to produce under tight deadlines.
  • Top-Down Driven Agile – Technical contributors often have little say in how their organizations or sponsors implement Agile, leading to the imposition of unnecessary, ineffective, and, often, counterproductive practices on development teams.
  • Changing Expectations for Developers – Developers are moving away from functioning as “order takers” focused almost exclusively on coding to collaborating with product owners/managers, sponsors and stakeholders, and customers and end users to define, verify, and validate what they develop.  Many technical contributors find this level of direct collaboration difficult to manage alongside their growing list of technical responsibilities.

Every article in this series describes each dysfunction, root causes, and suggests solutions that align with Agile values and principles.

Greater Visibility & Oversight with Less Control

One of the features of Agile is its “radical transparency.”  Radical transparency denotes how Agile teams communicate openly with other teams, project sponsors and stakeholders, and customers and end users as they collaborate to define, build, verify, and validate solutions.  Part of this communication involves keeping others apprised of team progress and the impediments they encounter.

The point of this openness is to foster an environment where everyone involved in sponsoring, managing, developing, and using solutions has the information they need to collaborate effectively without impinging on the flow work established by developers. 

Thus, Agile teams prioritize open communication.  For example, a common Agile practice is the use of “information radiators.”  An information radiator is any type of visual display, placed in a plainly visible physical location or accessible virtually, that allows product or project stakeholders to review team and project information at a glance.

Unfortunately, such transparency is often abused by management overly focused on maximizing efficiency and resource utilization.  When the pendulum swings too far in that direction, process execution and status tracking supplant delivery of valuable capabilities as measures of progress.  This outcome reflects a misplaced faith in achieving successful outcomes merely by following processes.

Rather than supporting Agile team self-organization, management steadily increases control over how development teams work.  Eventually, developers are diminished to the status of order takers with little actual control over what they work on and how.

Agile’s Take on Processes and Tools

One of the values of the Agile Manifesto for Software Development is that Agilists value, “Individuals and interactions over processes and tools.”  While Agile teams leverage processes and tools to improve how they work, they do not use them in ways that attempt to replace face-to-face or real-time interactions or communication.

Agile is not “anti-process.”  Agile is against confusing process execution with actual progress and instituting wasteful or counterproductive processes.  Agile neither prohibits nor prescribes processes.  Instead, it advocates for environments where self-motivated individuals self-organize and develop “just enough” process to support their work.  Agile’s culture of inspection and adaptation also applies to processes, as teams improve how they work.

Productivity tools can significantly increase Agile team productivity and effectiveness.  For example, not every interaction in and among Agile teams can be face-to-face.  While Agile best practice is to collocate teams, doing so is not always possible.  Agile development teams with members who work remotely, and enterprises staffed entirely with remote teams are common.  A project team may be too large to sustain ongoing direct communication between members.  Tools bridge distances and time zones between collaborators and help manage indirect communication.

Also, requirements management tools help document and track requirements, manage work, and report progress.  Agile requirements artifacts are purposely lightweight. They work as reminders for future conversations that will flesh out details.  However, even lightweight requirements become difficult to manage as they grow in number.

For far too many teams, however, this nuanced approach to tools and processes is crushed under the weight of traditional project management thinking. 

Surveillance through Productivity Tools

Traditional management shifts the focus from measuring business or mission value delivered to customers and end-users to measuring how faithfully and efficiently development teams follow processes.  Developers become process execution resources to manage.  Under this shift, productivity tools cease to serve Agile team self-organization and become surveillance tools for management.  Some of the negative consequences of this shift include:

  • The amount of time developers spend using tools to document and report on their work begins competing with the amount of time they spend developing features.
  • Management reconfigures “Agile” collaboration tools to track traditional project management productivity metrics that do not align with Agile.
  • Management rejects Agile-based reporting metrics and formats (e.g., burn-up and burn-down charts) because such reporting does not support the traditional project management approach they are used to.
  • Face-to-face or real-time collaboration are replaced by handoffs brokered by tools.
  • Since management’s appetite for status is insatiable, productivity tools become information funnels for management and cease providing meaningful value to developers.

Ultimately, the entire Agile approach is derailed as management places traditional project management expectations on Agile development teams.

Forced Commitments

When developers lose control over how they work, they also lose control over how much work they take on.  As I stated in part one of this series, Agile teams align the amount of work they commit to with their collective capacity to finish the work within a period of time.  Software development teams that do not have control over the amount of work they commit to are not Agile teams. 

Agile teams estimate their own work.  They negotiate with product/project management regarding what features they will deliver and when.  They also determine release schedules collaboratively.  For these estimates to be accurate, teams need to trust that management will respect their assessments and refrain from treating estimates as deadlines.

Agile manages projects through scope.  So, the goal is to work on the highest ordered/prioritized features and periodically assess progress.  Estimates improve as teams learn from engaging in the work and stakeholders get a better sense of what they truly need.

Commitments are not do or die promises.  They are honest professional assessments of what teams can get done during a period of time.  The team endeavors to achieve everything it committed to while maintaining a sustainable pace.  While some amount of overtime is necessary in most projects, it is not a way of life in Agile projects.

Holding commitments over the head of developers ignores the fact that team commitments are based on estimates.  It also pressures developers into cutting corners or inflating estimates and committing to less work.  Agile requires a management approach based on collaboration and mutual respect.  Micromanaging the work of developers through tools and pressuring them to overcommit does not engender trust or respect.  Taylorist notions of maximizing resource utilization have no place in Agile.

Finally, pressuring teams to overcommit sends the message that Agile practices do not matter.  Why should a Scrum Team bother with Product Backlog refinement, estimating user stories, and committing to Sprint goals if the resulting plans are unrealistic and ignored by management?

Proposed Solutions

The solution to this problem boils down to educating management about the fundamental paradigm shift from traditional project management to Agile.  Too many managers are under the impression that Agile is something developers do while everyone else in the organization continues to work as they always have.  The decision to adopt Agile comes with a commitment to continually shift the organization towards a customer-centric, product management mindset.  This involves establishing the following practices:

  • Adopt a product management approach to solutions/systems development
  • Focus on establishing and nurturing high-performance teams
  • Stress the need for planning and managing customer and end-user expectations through commitments
  • Foster collective team ownership of the work
  • Encourage managers and leaders to stand up for teams that feel pressured to overcommit
  • Enforce development team ownership of team/Sprint backlogs

Conclusion

People develop software.  Software development is creative work.  The best software solutions come from skilled, talented, and intellectually curious people who are passionate about their work and the software they create.  They are professionals who take pride in delivering quality software.  They understand the inefficiencies and costs associated with low quality designs and implementations.  Thus, they strive for technical excellence.  Agile advocates for organizational environments that nurture this sense of professionalism and ownership by empowering teams to self-organize.

Agile software development is not for the timid.  There is nowhere to hide on an Agile team.  Agile team members are accountable to each other and collectively commit to delivering value in time to be valuable.  Agile teams are highly transparent and accountable environments.  As such, members need some degree of “psychological safety”, exemplified by trust, respect, and the belief that they will not be punished for making a mistake.  Imposing a traditional project management mindset on Agile teams puts members in the undesirable position of being held accountable for results without having the power to affect change.

In the next article of this series, I’ll discuss how top-down-driven Agile adoption initiatives fail to include the perspectives and expertise of the people most affected by the change, the developers, and how doing so sets up Agile adoptions for failure.