Recently, I started to imagine a one-piece flow in software delivery/development:
The team should be small, maybe two to eight people.
It starts with everyone working on looking for one story that has value-adding work.
It can be value-adding work to end user.
Or be value-adding work to our goal/vision.
We analyze the story together:
We can start with a group discussion about what we want to do or achieve.
We draw our ideas.
We have agreement about the following questions:
Outcome: what we will build, what we can learn.
How we measure the outcome.
We work out how everyone can start work on the story immediately.
We may validate our ideas by building various prototypes with different tools.
We develop the story together.
We can start user-testing to get early feedbacks.
We write code and deliver changes.
We have a regular standup meeting to revisit what we’re doing and what’s next.
We start exploring test once we have changes delivered.
We start marketing the new feature.
We look for users to be early adopters.
We may still carry on the analysis work to make sure we are on right track when we get new information.
We test the story together during development.
We don’t do anything that does not help deliver the story unless it’s not avoidable.
There are no queues for work to be in ready status
No ready for development
No ready for test
No ready for deployment/release
There are backlogs or something similar, but we have it to help us focusing on the story we are working on.
We have retrospective regularly.
It seems not really a one-piece flow: it actually is one piece in the flow. It seems hard to have everyone working on one piece of value-adding work. What if we have too many people in the team? What can we do when developers are still working on code? These are all hard questions and I don’t have right answers. The team needs to address these questions. Then why do I want to try this approach? It’s all about eliminating non-value-adding waste during software delivery/development process.
A one-piece flow needs to be designed to bring problems and waste to the surface. It is not designed to keep everyone busy or working. Instead, everyone in the team needs to look for work that needs to be done for delivering the story.