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.



Looking for an “Agilish” approach to Agile? (pt. 3)

When Agilish is the Only Choice

This is the third and final part of a three-part blog series about:

  • The U.S. Federal Government’s practice of implementing hybrid-Agile/”Agilish” software development projects
  • The perils of Agilish projects
  • How we can make Agilish projects more Agile

“Agilish” software development projects, also known as “hybrid-Agile”, “Scrumfall”, or “Agilefall” projects, attempt to gain the speed and flexibility of Agile while enforcing traditional project management or “Waterfall” project controls. In Agilish projects, development teams engage in Agile “process mechanics” while other project stakeholders and contributors continue working under a Waterfall program construct. This mismatch in project approaches leads to what I call, “the worst of both worlds“:

  • Application of predictive planning and project controls (e.g., Earned Value Management (EVM)) that sap the agility out of Agile while;
  • Lacking detailed program baseline data necessary to measure project progress and apply project controls a la Waterfall

In part one of this blog series, I explained what Agilish projects are and why we should avoid them. In part two, I discussed the reasons why government Agile initiatives tend to move away from Agile principles and towards becoming primarily Waterfall projects with Agile practices added (Agilish). In this article, I discuss how to make Agilish projects more Agile when contractual and acquisition rules make an Agilish project management approach the only choice.

As I stated in the two previous articles, my perspective comes from years of working Agile projects for U.S. Federal Government clients. While many of the references are specific to that environment, equivalents exist at all levels of government, as well as in many private organizations, worldwide.

When Agilish is the Only Choice

In Agilish projects, software developers and other technical contributors are the only people “doing” Agile while everyone else continues working as before.  U.S. Federal Government acquisitions and contracting culture make it practically impossible to “do Agile by the book.”  The question is not whether federal software system projects will be Agilish.  The question is to what degree can we make those projects approximate Agile?

We have two choices:

  • “Tailor” Agile to fit within existing
    Waterfall-centric programmatic processes
  • Change programmatic processes to be more Agile

The first choice is the default for most Agilish projects.  It typically results in failed Agile implementations corrupted by traditional project management biases.  The second choice is harder but more likely to yield success.  It requires acquisitions, contracting, and project management professionals to understand how modern software development practices affect their work and to leverage recent Agile-friendly changes in federal acquisitions regulations and policies.

Break the “Iron Triangle”

Firm-fixed-price contracts can work with Agile as long as we allow scope to “float”.  In other words, keep budget and event milestones fixed while closely managing project scope.  Rather than attempting to define a large number of detailed requirements, define a much smaller set of coarse-grained requirements to flesh out, decompose, and prioritize during development.  Some degree of requirements ambiguity is necessary to achieve the Agile-style flexibility.  This is the idea behind managing a Product Backlog in Scrum.

Keeping the specter of “scope creep” at bay requires two things:

  • Empowered Product Managers and Product Owners
  • Adopting a Minimum Viable Product (MVP) approach
    to defining, developing, and fielding software systems

Formalize Product Management/Ownership

The concept of managing software systems as products is a foreign
concept for government program and project managers.  The U.S. Federal Government treats software
systems development as a management activity for project managers to lead while
Agile takes a product management
approach to software development.

I detail the difference between project management and product management in another blog article.  The main takeaway is that project management focuses on managing people, schedules, and activities while product management focuses on managing the product and its creation. 

In the U.S. Federal Government’s acquisition model, program management offices (PMOs) manage contracts rather than software products/solutions. Requirements definition and solution approaches are left largely for vendors/contractors to figure out from initial sets of requirements developed by a different set of contractors. Developing solutions through active and ongoing engagement between the PMO, other government stakeholders, and vendors goes against how most federal acquisitions and contracting organizations are structured.

In Scrum, Product Owners are ultimately responsible for defining the solutions Scrum Teams develop.  The Product Owner serves as the “Voice of the Customer”, synthesizing the various needs, wants, and perspectives of product stakeholders (both mission and technical) and customers into a coherent and cohesive product vision. Development teams depend on the Product Owner for direction and guidance concerning mission needs so they can define and build valuable software functionality.

This work of defining solutions cannot be outsourced wholesale to vendors in an Agile effort. Ascertaining mission needs and determining how solutions will address them are inherently governmental activities. PMOs must formalize the Product Owner role as part of how they do business. This is a move away from outsourcing the lead systems integrator (LSI) role to vendors and towards assuming a government-as-integrator role. Under this model, government collaborates with vendors as part of the team as opposed to assuming a distant customer stance.

Product Owners need to be government employees empowered to make decisions regarding solution scope and mission-facing functionality and be accountable for solution alignment with mission needs and requirements. Product ownership is a full-time job, not an extra duty for project managers. Government personnel who assume product management/owner positions must receive training, coaching, and support.

Adopt an MVP Approach

The only way to know if a solution is valuable is to put it
in the hands of customers and end users. 
The key to doing so agilely is by releasing increments of valuable
functionality (something people can use to get real work done) iteratively
while ensuring the entire system delivers real mission value as it evolves.  One way to accomplish this is to start with an
MVP.

An MVP is a hypothesis of the minimum functionality required
to provide mission value.  The first MVP
is an initial version of the solution. 
It is “viable” meaning that it is not a crude prototype but is instead a
stable, releasable capability.  MVPs go
through a cyclical process of definition, development, release, usage
monitoring, and adjudication.

The MVP Cycle

MVP adjudication is a process step where we decide whether to add, modify, or remove functionality based on lessons learned from monitoring usage and performance data and from customer/end-user feedback.  We may find that the current solution approach is not viable or will not satisfy requirements and decide to change the approach or abandon the MVP altogether; also referred to as pivoting away from the current solution path.  Each iteration through the MVP cycle results in a new version of the MVP that delivers additional value.  The MVP eventually matures into a solution that maximizes value.

The MVP cycle is an empirical process model that supports adaptive planning.  The combination of empowered product ownership with an MVP-based development approach allows projects to control scope, while keeping within budget and schedule constraints and without engaging in heavyweight, agility-stifling, predictive planning.

Avoid EVM, Use MVPs Instead

Earned Value Management (EVM) is used to determine whether a project is on target to finish (i.e., deliver all planned functionality/scope), within a predetermined schedule and budget. The logic being that the sooner negative cost and schedule variances are discovered, the greater the likelihood the project can be managed back to plan. However, Agile is an empirical practice in which we monitor progress, make decisions, and take action based on what teams have released throughout the project. EVM is a definitive method in which project management predicts progress and works to prevent deviations from established plans. This fundamental lack of philosophical alignment between Agile and EVM prompts the question whether employing them together is reasonable and worthwhile.

An MVP-based solution development approach can help.  MVPs break up the scope of large system implementations into smaller iterations.  This allows programs to stay below mandatory EVM cost thresholds while lowering risk and providing the choice of stopping further development when mission needs are satisfied or when it is otherwise deemed necessary (e.g., bad contractor performance).

Focus on Shortening Program Lead and Cycle Times

Many organizational leaders think of Agile as a way to speed
up software development, and nothing more. 
They obsess over adopting Scrum practices, DevOps pipelines, and Agile
tracking tools because they think in terms of increasing development team efficiency
and productivity rather than on continually improving program lead-time and
cycle time.

Lead Time and Cycle Time

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

Focusing on Agile and DevOps practices and tools affects cycle time.  Developers are able to crank out more code faster, but what happens before developers start coding a feature and after the feature is ready for deployment?  How big a percentage of cycle time is tied up in user acceptance testing, security checks, approvals, and integration activities (things out of the control of software teams)?  How much time do these activities add to cycle time and lead time?

In a true DevOps environment, the amount of time actually spent writing, building, and testing code is a small percentage of lead time.  In government programs, lead times dwarf cycle times and time-consuming project or program-specific processes lengthen cycle times.  Often, organizations narrowly focus on improving the shortest time span within program lead and cycle times while ignoring huge time sinks outside of the work performed by developers.

The actions organizations need to take to lower lead and cycle times are organization-specific.  However, one recommendation applies to any organization sponsoring Agile software development projects:  They should identify and manage dependencies between software teams and organizational, vendor, and customer stakeholders from day one.  

In Scrum, the Product Owner works to integrate stakeholders
in ongoing requirements and dependencies management.  It may be advantageous to include stakeholder
representatives in Scrum Teams if the development teams need their input on an
ongoing basis to develop valuable and compliant functionality.

Conclusion

Getting the most agility out of Agilish projects begins understanding the rules of the chosen Agile approach and the statutory, policy, programmatic, procedural, and technological constraints within which the project must operate. Based on that understanding, some mix of tailoring the Agile approach and changing existing organizational processes is in order.

There is no “cookbook” on how to do this. Different organizations and projects will require different approaches and mistakes will be made along the way.

The important thing is to treat the shift towards Agile in an agile way. In other words, whenever possible, work in ways that align with the chosen Agile approach first. Only modify the Agile approach when laws, regulations, and policies absolutely require it. Work to become proficient in the Agile approach before attempting to change it to better suit existing ways of working.

This is guaranteed to bring stress and discomfort in the short term as people grapple with how they will accomplish their work under the new paradigm. However, as long as we treat changes as experiments from which to learn and improve and we implement them in an iterative and incremental manner, we will mitigate negative effects while progressively moving in the direction of greater agility, both from a technological and organizational perspective.



Looking for an “Agilish” approach to Agile? (pt. 2)

Why Government goes “Agilish”

This is the second of a three-part blog series about:

  • The U.S. Federal Government’s practice of implementing hybrid-Agile/”Agilish” software development projects
  • The perils of Agilish projects
  • How we can make Agilish projects more Agile

In part one of this blog series, I explained what “Agilish” projects are and why we should avoid them. In this article, I discuss the reasons why government Agile initiatives tend to move away from Agile principles and towards becoming primarily Waterfall projects with Agile practices added (Agilish).

As I stated in part one, my perspective comes from years of working Agile projects for U.S. Federal Government clients. While many of the references are specific to that environment, equivalents exist at all levels of government, as well as in many private organizations, worldwide.

Process over Outcomes

Many government organizations possess process-centered cultures where progress is judged more on process execution than on outcomes achieved. The fundamental assumption being that if people correctly follow processes and procedures, desired outcomes will follow.

It is easy to see why. Governments are much more constrained than private organizations by laws, regulations, and policies (LRPs). Government institutions are ultimately accountable to the public, thus they must abide by extensive oversight rules. Documenting and enforcing processes and procedures help to ensure adherence to the law and to promote fairness and equality in government dealings.

With respect to managing software projects, the issue is not so much about having processes and procedures. They are necessary. The issue is about replacing judgement and understanding with highly-detailed and prescriptive processes and procedures. Much of current U.S. Federal acquisitions and contracting LRPs were written with traditional project management in mind. When carried too far, this urge to codify and template everything results in risk adverse acquisitions and contracting cultures hamstrung by their own rules.

This mentality leads to mechanistic Agile implementations that are at odds with Agile. Agencies “tailor” their Agile approaches to fit within their existing rules, processes, and procedures. While there are limits to how much agencies can do to align acquisitions and contracting processes to Agile, government agencies tend to overlook (and often reject) opportunities to do so.

Blaming Waterfall

For many organizations, years (if not decades) of managing
software development projects through traditional project management coincide
with years of project failures. 
Frustration over the inability to deliver planned project scope on time,
on budget, and at acceptable levels of quality serves as a powerful motivator
for instituting Agile practices. 

While traditional project management is increasingly out of step with modern software development, for many organizations, Waterfall is not the root cause of software project failures.  Many organizations, public and private, lack the programmatic, engineering, and governance maturity necessary to effectively manage complex technology implementations, regardless of approach.

Organizations struggling to deliver under traditional project management processes will likely struggle even more using Agile.  You see, Agile does not on its own fix problems; it makes them plainly visible for people to take action.  Agile is a catalyst for change, not a solution.

When lack of programmatic, engineering, and governance maturity render organizations unable to address problems uncovered by Agile, they often retreat into familiar ways of working more in line with their actual capabilities. This, rather than traditional project management processes and culture, may be the single greatest obstacle to government Agile adoption.

Waterfall-Based Funding Mechanisms

Government builds software systems the way it funds them.  For the most part, government agencies have not done enough to align how they fund software systems development with Agile and DevOps. This lack of alignment is a principal factor in turning potential Agile projects Agilish and is most prominently manifested by:

  • Establishing projects rather than managing services
  • Adhering to outmoded “color of money” funding allocations between new development, test and evaluation, and O&M support

The Trouble with Projects

The trouble with structuring software system development and funding around projects is that projects begin and end.  A lot of coordination, planning, contracts management, and funding allocations happen before project start.  That overhead is costly and time consuming, especially in government projects.  These activities frustrate the very agility organizations try to achieve by imposing a predictive planning approach on software development.

Traditional projects afford one opportunity to get the solution right.  As a result, there is a great deal of pressure to include as many requirements as possible for a wide range of users.  This increases project scope and, consequently, increases project complexity, planning overhead, risk, and cost.  Organizations also lose flexibility to address new requirements, manage risks, and seize opportunities during development.

All of this predictive planning relies exclusively on estimates against a plan or program baseline.  If the plan turns out to be sufficiently wrong, a new plan is formulated (the program is re-baselined).  Changes to traditional project plans are highly disruptive, so project managers work mightily to avoid them.  In many cases, this effectively prevents projects from acting on empirical reality, until it is too late.

As I described in part one, software systems evolve for as long as they are in operation.  We cannot accurately predict what customer needs and priorities will be months or years from now.  Requirements are highly perishable, sometimes to the point that software systems are obsolete or irrelevant by the time they are fielded.  A funding model that aligns with Agile and DevOps treats software systems as long-standing managed services rather than as serial “one-time” investments.

“Color of Money” Concerns

As stated in part one, Agile and DevOps compress planning, analysis, design, testing, and release activities into short, fast, and frequent iterations or cycles.  Under DevOps, software development and operations teams share development and production support duties.  Development and maintenance work are included in the ongoing flow of work done by teams.  Traditional discrete project phases for these activities, performed by separate teams, no longer happen under Agile and DevOps.  Thus, it does not make sense to segregate funding and related planning along the lines of Waterfall project phases.

The US Federal Government and the Department of Defense (DoD) in particular, are coming to this realization.  Unfortunately, it will take changes in law and policy to move away from “color of money” funding mechanisms and that moves slowly.

Earned Value Management (EVM) Requirements

Applying Earned Value Management (EVM) to Agile projects imposes a vastly different definition of value on Agile. Agile does not attempt to quantify value in terms of dollars and cents. Instead, the focus is on delivering capabilities that project stakeholders, customers, and end users consider most important to mission accomplishment.  Imposing EVM requirements on Agile projects tends to subvert Agile practices to accommodate the needs of EVM.

Vendors Switching to Agile while Government Lags Behind

Agile software development is the new normal in IT.  Each succeeding batch of newly minted software development professionals entering software development is increasingly less likely to work on Waterfall projects.  This reality is now a forcing function on government agencies to change how they work with vendors to support agility.  Some agencies are doing better than others, but organizational cultures do not change overnight.

Conclusion

Recognizing the driving factors behind Agilish projects helps us understand the organizational environments within which we attempt to institute Agile approaches. Such understanding is invaluable to successful Agile adoptions/transformations, specially in the government space. Success depends on leveraging existing LRPs to align processes with Agile. While “textbook” Agile may never be realistic in many government settings, achieving the benefits of Agile requires us to understand the trade offs involved and strive to move towards greater organizational agility whenever possible.

In the third and final article of this series, I’ll cover ways to make Agilish projects more Agile.



Looking for an “Agilish” approach to Agile? (pt. 1)

Don’t! But if you must …

This is the first of a three-part blog series about:

  • The U.S. Federal Government’s practice of implementing hybrid-Agile/”Agilish” software development projects
  • The perils of Agilish projects
  • How we can make Agilish projects more Agile

You are likely reading this because you are looking for a way to make Agile work within the byzantine world of government/public sector Information Technology (IT).  My perspective comes from more than a decade of working with the U.S. Federal Government implementing software systems using Agile.  I have spent a good portion of that time working in “hybrid-Agile”, “Scrumfall”, “Agilefall”, or “Agilish” projects.  My advice: Do your best to avoid Agilish projects.

Reasons to Avoid Agilish Projects

Look, I get it.  You
are likely getting conflicting direction from your government agency or
client.  They want Agile’s speed and
flexibility with traditional project
management or “Waterfall” project controls. 
They want end users to have greater say in shaping solution features
during development, but award firm-fixed-price contracts and require adherence
to inflexible program baselines.  Even
when agencies use “Agile-friendly” contracting rules, contract language and
oversight requirements often impose Waterfall processes and reporting
requirements.

The problem is that you can’t have your cake and it too.  There is no free lunch. <Insert another hackneyed phrase here> In trying to be both Agile and Waterfall, most Agilish government projects toss agility aside to accommodate established project management processes.  I now discuss concrete reasons why Agilish projects are a bad idea.

Agilish isn’t a Real Thing

Hybrid Agile or Agilish is not a recognized software development approach.  It is an project management approach to Agile without roots in proven Agile or software engineering practices.  There is no standard framework (like Scrum) or body of knowledge (like SAFe or PMBOK) for Agilish implementations.  Without standards or best practices, you’ll be making up your own Agilish implementation as you go.  The same goes for contract firms that claim expertise in hybrid-Agile.

Predictive vs. Adaptive Planning

In traditional project management, the bulk of project planning happens before and immediately after the start of a project.  This is a predictive planning approach.  Predictive planning assumes the next project will be similar to previous projects.  Thus, it is possible to estimate (predict) the amount of work (scope), necessary resources, timeframes (schedule), and cost (budget) of the next project based on historical data and experience.  This assumption is fine for routine and relatively simple projects but breaks down for more complex, technically challenging, or innovative projects. 

Agile planning is adaptive planning.  In Agile, planning and management of risks and opportunities occur throughout the entire effort.  Decisions are based on lessons learned and insights gained during development.  This allows Agile teams to, “Welcome changing requirements, even late in development.”

The Worst of Both Worlds

Mixing Waterfall with Agile yields the worst of both worlds.  You introduce predictive planning and project controls (e.g., Earned Value Management (EVM)) that sap the Agility out of Agile while lacking detailed program baseline data necessary to measure project progress and apply project controls a la Waterfall.

Table listing the negative results on Waterfall and Agile when mixing the two approaches.
When Waterfall and Agile Mix

Agilish from the Start

In government institutions, the shift away from traditional project management to Agile is rarely, if ever, a bottom up initiative.  Most likely, your agency or government client decreed Agile as its preferred or official software “project management” approach.  Such pronouncements usually mark the beginning of Agilish projects.

Agile, and its most popular implementation, Scrum, are not “project management” approaches at all.  Agile is an umbrella term covering multiple approaches (e.g., Scrum, XP, Kanban, Crystal) to building and delivering complex technical systems.  These approaches share the tenets of the Agile Manifesto and its foundational 12 Principles of Agile, which I paraphrase and distill below:

  • Teams develop and deliver system capabilities
    iteratively and incrementally within short timeframes
  • Empowered teams manage their own work and work
    at a sustainable pace
  • The measure of progress is delivery of valuable
    capabilities rather than alignment to plans
  • Direct and ongoing collaboration between and
    among technical, organizational, and customer stakeholders largely replaces
    formal documentation

Agile is a vision for a way of working, not a way of
managing work or workers.  Scrum is a
lightweight framework of roles, rules, and best practices that embody the
tenets of the Agile Manifesto and the principles of Agile.  Characterizing Agile or Scrum, or any other
flavor of Agile, as a “project management methodology” virtually guarantees
Agile adoption failure.

Software Development Has Changed

Most enterprise software solutions are complex systems that change and evolve for as long as they are operational.  Agile and DevOps enable this ongoing evolution by:

  • Decreasing the time it takes to develop, test, and deploy new software capabilities
  • Increasing the frequency of new software capability deployments
  • Automating Operations and Maintenance (O&M) activities

Agile and DevOps allow organizations to move away from deploying
large software releases periodically or infrequently towards continuous flows
of software feature releases.  A strong
DevOps culture fosters:

  • Close collaboration between developers and
    systems operations personnel
  • Automation of system deployment, monitoring,
    alerting, and troubleshooting activities

Agile does away with discrete Waterfall phases for planning,
analysis, design, testing, and deployment followed by a long O&M phase.  All of these activities happen in Agile, but
occur continually and in rapid cycles, thanks to DevOps.  Information and insights gained during these
cycles inform how solutions evolve and how teams improve technical quality and team
processes.

Agile and DevOps open the door to a different way of
working.  DevOps enables software
development teams to deliver increments of valuable functionality sustainably
and when needed rather than on a set schedule.  
As the speed and frequency of releases increase, scheduled project start
and end dates lose their significance.

We move into what some call a “Software Development as a
Service (SDaaS)” model.  Instead of
standing up new projects, agencies augment available software development teams
or form new ones.  The additional
software development capacity adds to the existing software development flows.  Agencies have the choice of adding technical
contributors as agency hires or contractors. 
By treating software development as a service capability, organizations
are able to ramp software development capacity up or down depending on mission
needs and budget constraints.

Conclusion

Acquisition of software systems by the U.S. Federal Government is transitioning from a traditional project management approach to Agile. Over the last five years, the Federal government has enacted significant statutory and policy changes to align acquisitions and contracting processes with Agile and DevOps. Unfortunately, this transition will take time due to the complexity of Federal acquisitions and contracting and the resulting decades-old predictive planning culture.

In the part two of this series, I’ll talk about the reasons why Federal software systems projects become Agilish and the resulting problems. Part three will cover ways to make Agilish projects more Agile.