This article is the second in a five-part series.
A healthy, lean, modern application team has a strong and consistent Development Rhythm.
Developers who apply modern principles, practices, methods, and tools to software are able to add new features and fix existing issues faster, safer and more sustainably than ever before.
If you are a developer new to Agile concepts, and plan to work with Tanzu Labs on an upcoming engagement, continue reading this article, then go read the reference articles and do the workshops so that you are ready to be productive on your first day of work.
What you will learn
In this article, you will learn how to:
- Describe the Agile developer’s workflow.
- Describe the inputs to and outputs from the Agile developer flow.
- Explain the importance of developer discipline and the use of feedback loops in the developer flow.
Background
Before explaining the development workflow, it is useful to highlight principles found in modern Agile or Lean practices:
- Pull-based work model – downstream consumers pull work from upstream.
- Batch sizes are small.
- Use of short, feedback loops to iterate on the work.
- Integrate work with the team at least daily.
It is necessary to understand how the Agile developer’s flow fits into the overall software delivery cycle.
Let’s talk about upstream dependencies to the developer flow next.
Backlog
The Backlog is a curated list from which the developer will pull their work. Before a developer starts work, the work must be specified and prioritized in a backlog.
The work is specified as discrete Stories that are:
- Specifications of what to build (or fix).
- Estimated by the team.
- Independent of each other.
- Prioritized.
- Sized small enough to be integrated daily.
Product teams typically organize work around features or fixes. Either may comprise work that is not small enough to fit in the confines of a single story.
Agile frameworks specify course grained work as an Epic or as a Theme, but neither the Epic or Theme directly specify the work done by the developer. Stories may be tied to Epics (or Themes) to keep the work to a specific feature or fix.
Outside the scope of the developer workflow, use of Epics and their relationships to stories are important when specifications are not well known, or when refining in-process work.
The input for an Agile developer workflow is a single story.
Software Delivery
The output of the Agile developer’s workflow is functioning software that is pulled into a downstream Continuous Delivery Pipeline for purposes of being able to deliver features or fixes to production at any time.
The Continuous Delivery Pipeline may involve various manual and/or automated steps for testing, verification, oversight compliance, staging, or perhaps a secure pipeline towards production.
Note: There is much more to this topic that is outside the scope of this article.
The Agile Developer Workflow
While the story provides a form of specification or requirement, it is up to the developer to translate the specification of the story into the design, tests, and their associated solutions.
The Agile development workflow compresses design, construction, and a substantial amount of testing into a story’s implementation work.
This places more burden on the developer and shows there is a need for discipline in the developer workflow.
Flow Summary
An Agile developer’s daily flow is similar to this:
- Take the highest priority story from the backlog.
- Review the story details, including its desired outcome. The story may be for building new features, fixing defects, or for an investigation if the problem/solution domain is not well known. If the story is investigative, the developer may use a Spike as a way to timebox effort to better understand a problem and/or its solution.
- Iterate on a series of steps using one or more feedback loops to achieve the outcome of the story. Developers spend much of their time writing code, using methods such as Test Driven Development, Refactoring and/or the Mikado Method.
- Document the work as appropriate and merge it to the source control repository once you complete all the steps.
- Verify the work is successfully integrated.
This entire flow should be run at least once per day, and ideally multiple times per day to satisfy the goals of Continuous Integration and Continuous Delivery.
Developer Discipline
Although there are only five steps listed in the developer flow, there are many activities going on within it. It is important for the developer to keep focus during the workflow to work efficiently and effectively, yet also with the flexibility to change directions, as needed.
Even though the stories curated in the backlog are small, they do not specify the design. Agile approaches compress the design, construction and part of the test scope into the development flow by the same developer. This places a burden on the developer to be more focused and disciplined to craft quality software quickly and safely.
Discipline requires a set of clear, repeatable processes to be sustainable.
Feedback Loops
A common theme in modern application teams and their practices are use of feedback loops at varying levels in the application development lifecycle.
You can read more about it in the following articles:
The developers daily workflow also includes a series of fine-grained feedback loops. A single story might have hundreds of steps spanning multiple feedback loops to complete the story outcome.
While some of the steps are identified up-front when building and estimating the story, many of the steps are discovered during the workflow process in the form of multiple feedback loops that include a hypothesis and an associated experiment to verify that hypothesis.
It is necessary to keep each step in a feedback loop small in duration, measured in minutes, at a maximum, to run.
There are two reasons for this:
The overall work batch size remains small.
Humans work more efficiently doing small, well-defined tasks than large ambiguous ones.
The idea is to use evidence-based approaches to change, and that changes are easy to define, implement, and measure the outcome.
Development Inner Loop
As container and container orchestration technologies are becoming mainstream, development, testing and deployment become more complicated.
Another term you may see that relates to this subject is Development Inner Loop.
The idea is that the developer will iterate in their development environment (the Inner Loop), and then integrate their work in a DevOps Cycle (the Outer Loop) for continuous integration automated verification, and automation to support Continuous Delivery or Continuous Deployment.
Summary
In this article, you learned how to:
- Describe the Agile developer’s workflow.
- Describe the inputs to and outputs from the Agile developer flow.
- Explain the importance of developer discipline and use of feedback loops in the developer flow.
In upcoming articles, you will learn the key principles, practices, methods and tools to help implement your workflow.