Delivering Solutions Faster through Agile

It’s not about working longer and harder.

Many organizational leaders think of Agile as a way to speed up software development, and nothing more. They approach Agile with a traditional project management emphasis on improving efficiency. In doing so, they unwittingly corrupt Agile practices to the point of undermining the very agility they are trying to achieve. One of the most obvious signs of this are high-pressure work environments where people work harder and longer to complete unrealistic amounts of work against arbitrary deadlines.

People can work at an accelerated pace for only so long before becoming fatigued, physically and mentally.  As time wears on and stress builds, morale and quality suffer.  The results are inefficient and ineffective development teams, low quality software; and unhappy sponsors, stakeholders, customers, and end users.

Ultimately, these corrupted Agile projects fail, leaving burned out teams and failed projects in their wake.

Speed is One Characteristic of Agility

At Agile Cheetah, we see speed as one of three characteristics of agility: Speed, Control, and Flexibility. We call this formulation “The Agility Triad”.

The Agility Triad’s Three Constraints

The Agility Triad is not a concept of either Agile or Scrum.  It is a construct we developed to organize discussions concerning:

  • What agility means from the perspective of technical projects in general and software development projects specifically
  • Concepts, techniques, and practices from the fields of Lean process management, organizational behavior, product management, and project management that support or impact agility

The triad’s constraints are mutually dependent.  In other words, more or less of any one constraint influences the other two.  For example, 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.

In this article, we focus on the speed constraint of the Agility Triad.

Accelerating the Pace Agilely

From an Agile perspective, developing software solutions faster is not about   working harder and faster. Agile teams plan and execute work in ways that make working at a sustainable pace the norm. 

Our definition of speed includes two considerations:  the timeframe within which we deliver functionality and ensuring that whatever we release is potentially-releasable.

  • By timeframe, we mean how long does it take to release functionality that addresses customer or end user requirements or needs (i.e., diminishing lead time and cycle time)
  • By potentially-releasable, we mean that the software functionality is ready for deployment and use, by customers and end users, should a relevant release authority decide to release it

Diminishing Lead Time and Cycle Time

Agile software development teams develop more software functionality faster by focusing on diminishing what Lean terms lead time and cycle time.

Lead Time and Cycle Time

Lead time is the time from when a customer orders a product to when the customer receives it.  Cycle time is the time between gaining authorization to produce an order and completion of a deliverable product.  When speaking about software development, we replace the word product with functionality, feature, capability, component, etc.

Thinking in terms of lead time and cycle time brings to light ways to improve how we develop software and the software solutions themselves.  This work is ongoing for as long as the solution exists.  It is a “Continuous Improvement” mindset.

Development teams are not solely responsible for diminishing lead time and cycle times.  Since teams depend on their sponsor organizations for support, sponsor organizations must adopt a continuous improvement mindset as well.  For example, slow customer order approval and product delivery processes add to lead time.  Not having necessary production resources in place adds to cycle time, and by extension, lead time.  The more lead time and cycle time look the same, the better.

Agile teams diminish lead time and cycle time by:

  • Minimizing waste from software development processes
  • Managing technical scope (increasing flow)
  • Striving for high quality through technical excellence

Minimizing Waste

The Lean Enterprise Institute defines Lean as a set of management practices that maximize customer value while minimizing waste.  Lean takes a continuous improvement approach to eliminating waste.  While it is not possible to eliminate all instances of waste, Lean teams take every opportunity to identify and remove wasteful practices.  Waste does not always result from unnecessary or deficient process inputs, outputs, and activities.  Sometimes waste is too much of what is needed, like excess product inventory for example.

Lean identifies seven sources of waste (TIMWOOD):

Lean’s Seven Sources of Waste

Managing Technical Scope

Treating project scope as variable, while keeping cost and schedule fixed (i.e., “Breaking the Iron Triangle”) accelerates software development and releases.  Agile teams define project scope as increments of functionality developed and released throughout a project.  Rather than defining the entire solution at the beginning, the solution takes shape over the course of development.

Agile development is iterative and incremental.  Agile teams break up project scope into batches of functionality to produce (e.g., features, components).  By keeping batches small, teams process each batch faster, thus accelerating the overall throughput of completed work (flow).  Each new batch of functionality works with the aggregate of all previously released batches.  That aggregate of functionality is the evolving solution.  The bonus is that, as long as released functionality provides real business or mission value, users can use the solution as it “emerges” rather than awaiting release of the entire solution.

Quality through Technical Excellence

High-quality software is faster and cheaper to produce and maintain than low quality software.  Development teams spend less time fixing and refactoring well architected, properly designed, well-written, thoroughly tested code.  Quality software is easier to deploy, configure, and upgrade, shrinking the amount of time development teams spend on operations and maintenance (O&M).  The common theme is saving time.  Software development teams have more time to spend developing new functionality and improving how they work, which translates into faster and more frequent releases.

Software development teams achieve high technical quality by striving for technical excellence.  Like eliminating wasteful process activities, technical excellence is a pursuit rather than an achievement.  Technical excellence entails:

  • Adopting technical practices and techniques that improve software development (e.g., DevOps, Test Driven Development (TDD), Feature Driven Development (FDD))
  • Committing to ongoing technical professional development
  • Working effectively as part of cohesive technical teams

Conclusion

While increasing the pace and frequency of software development and delivery are key tenets of Agile’s value proposition, we must do so sustainably. This requires a shift in management thinking from a traditional project management emphasis on managing people and tasks to empowering teams. In an Agile context, empowering teams includes: ensuring they have the right skills; equipping them with the right tools; and giving them enough latitude to define and manage their own work while establishing clear business/mission intent and boundaries. In other words, speed comes from continually improving teams and the solutions they deliver.