Continuous Agile Principles

We use "Continuous Agile" to describe the combination of Kanban Agile task management with continuous delivery code management.

"Agile" traditionally describes task and team management. We get two big advantages from bringing code management into the process. First, we can actually finish a Kanban task by merging, testing, and deploying code. Second, we can bring in a lot of innovations from the rapidly advancing art of code contribution and testing.

Building blocks

There are many successful routes. We will try to break away from the bad habits of people who find one thing that worked for them, and then recommend it for everyone else. This guide describes a set of building blocks to choose from.

Task management: The spectrum of task management tactics begins with roadmapping (making a list) and continues to planning releases with batches of tasks, and then to continuous or Kanban. Users often adopt these in sequence.

Code management: Code management with a repository is the core technology of continuous delivery. We find that practitioners can succeed with a "centralized" process that makes all contributions and tests on one version, or a "distributed' process where contributions are tested on separate versions. This is supported by the rapidly advancing art of contributing, reviewing, and merging code.

Testing: You want to very quickly test a change to prepare it for release, and you want to do this in the most efficient way possible, and you want your culture to support the testing. Testing and test automation is the most important investment that you will make in the move to continuous agile.

Product Management: You will accelerate planning to keep up with your developers, unblock them so they can work and release without waiting, and follow each individual change as it flows to release.

Team leaders should understand all of the options, not just the familiar ones. They should change tactics when they run into obstacles, delays, and new opportunities.

Lean principles

We want to build software faster and with less stress. Continuous Agile uses some "lean" principles to achieve this goal:

  • Continuous improvement. Have a periodic engineering review and happiness survey. Measure results and improve measurements.
  • Make batches of work smaller until you drive the unit of change down toward "one-piece flow"; release every change when it is ready. Do not stop at two-week batches.
  • Use the principle of pull, where each worker or team pulls a task when they are ready to work on it.
  • Limit the number of active tasks - called "Work in Progress." This improves focus, predictability, and speed.
  • Use a "pull what is ready" approach to assembling releases. Releases do not need to be planned in advance and assembled under stress. You can prioritize at the beginning, and "plan" (assemble) releases at the end.
  • Manage code and not people if possible. Code is easier to manage at scale. People (contributors) are hard to manage, but they will contribute code if you give them a path.
  • Automate to increase human productivity by using more machines.
  • Increase productivity by skipping steps and rituals. It is surprising how often you can get the same result with less work.

There is no single correct process or set of tactics. We present a toolbox of task and code management options. Teams select a process and tactics to fit their unique situation.