Guide to Flow in Product Development – How to Create More Value

Optimize product development in your organization by focusing on flow instead of traditional resource optimization. That way, you can accelerate the fulfillment of customer needs, and focus on quality instead of quantity. Here are 7 good tips on how to do it.

Traffic flying by, signifying flow in a value stream

Kristian Vesterbo Brønner

Consultant

kvb@syndicate.dk

9

min read

April 19, 2024

“We need to get more out of one end, so we just throw some more into the other end, right?!?”


It is a widespread tendency that you try to optimize processes by optimizing resources, and in many cases, beginning to throw more resources at the problem. The need we are trying to solve with resource optimization, however, is not necessarily related to our colleagues' degree of utilization, but perhaps more to do with wanting to create flow in our development process. Or, as it is often addressed – We would like to see more results, and in a shorter time too.  In this article, I am going to argue why resource optimization is not necessarily the way to go, if you would like to ensure fluid flow in your product development.

In order to focus on flow, however, we have to understand the difference between resource optimization and flow optimization.

The challenge in doing that, is that we forget about the primary customer need that we are trying to fulfill, and instead focus on getting each cog in the machine to go full throttle.

A song of resource and flow optimization

As mentioned above, many organizations focus on resource optimization, which indicates that we devote a lot of energy to ensure that we utilize our resources to their maximum potential. However attractive that thought is, it is not necessarily an ideal to strive for. The challenge in doing that, is that we forget about the primary customer need that we are trying to fulfill, and instead focus on getting each cog in the machine to go full throttle.

Paradoxically, an excessive focus on resource optimization actually creates more work, longer throughput times, and loss of control. This is also known as the Efficiency Paradox, which exactly describes how resource optimization looks attractive from a business perspective but can create bigger problems from a customer perspective.

In opposition to this, flow optimization is not about our resources, but our ability to optimize the throughput time for the customer value that we want to create with our development process. In other words, flow optimization concentrates on customer value. Think of a customer need as a flow unit that has to go through our development process. In flow optimization, we focus on how we fulfill a customer need in the shortest possible amount of time. So, it is not about making sure that all of our co-workers have enough to do, but that we ensure a fluid flow in delivering value for our customers. In other words, we focus our attention on optimizing the throughput time for a flow unit in our development process.

Of course, there is a certain balance between resource optimization and flow optimization. We don’t want our colleagues to just sit on their hands, but we also have to make sure that a flow unit actually reaches the finish line. It is a delicate balancing act, that we have to attend to continually when we develop products.

A product team’s ability to create flow in a development process is highly dependent on their ability to stabilize a process in an unpredictable environment.

7 good tips for achieving flow

Product development is complex, and typically involves taking many different people, practices and surrounding dependencies into account. A product team’s ability to create flow in a development process is highly dependent on their ability to stabilize a process in an unpredictable environment. Below, you can find a number of initiatives that can help you and your development team in creating flow.

1 | Explore your value stream

The value stream is made up by all the actions, that are taken based on a perceived need, that are registered until the need is fulfilled. It can seem superfluous to explore one’s value stream, because we all know it. But something magical happens when we invest some time into it. Suddenly, we are made aware of unnecessary actions in our development flow, that we really would rather discontinue. In some cases, we are also made aware of actions that actually should be there, in order to fulfill the requested needs. Here, the exercise is about creating some insight that makes us capable of optimizing our flow.

From a purely practical standpoint, the exploration of value streams can be worked out in workshops with representatives from the entire value stream. Keep in mind, however, that this is not necessarily just a “one-time thing”. It can be valuable to revisit value streams continuously since our world is constantly changing. You should always strive for ensuring that no unnecessary variations occur in our development teams. For instance, by changing the make-up of the team “just because” it looks good on a piece of paper, where it says that we have ensured a high degree of utilization of our resources.  

2 | Avoid too many unnecessary variations in the development process

Variations are factors that either affect our service time or our delivery time. The number of causes for variations can be almost infinite, and almost impossible to predict. Variations occur, especially, when there are people involved, since we all think and act very differently. At the same time, variations are very difficult to avoid when you cannot predict what is going to affect our development flow.

An example of a variation during product development could be a significant rotation of expertise within your development team. Every time a member either leaves or is added to a development team, new dynamics, knowledge, and practices must be established, all of which affects the throughput time of the customer value we aim to deliver. Another example of something headache-inducing is external dependencies. It is close to impossible to avoid this type of dependency, but we can make sure that we avoid unnecessary external dependencies.

So, explore your value stream to find the places where you might have unnecessary external dependencies.

3 | Create a stable environment that can handle variations

As mentioned above, it is almost inevitable to be hit by variations in the development process, no matter how good we are at reducing them. In these cases, it is about our ability to handle whatever variations might come, and safeguard minimal effect on our flow. To ensure an absolute minimum effect of variations, it is very important that you establish routines.

Routines ensure stability in our environment and processes, but we have to make sure that our routines come in a format that can handle variations.  The good thing about process framework tools, such as Scrum, is that they form a natural routine in our flow, but at the same time, allow the handling of variations. Scrum, for example, gives the team the opportunity to work with team dynamics and team practices continuously, so you get a strong foundation that can handle any alterations in the make-up of the team. One of the perhaps most well-known variations in product development is changes in the scope of the tasks we have committed to from the start. Additionally, Scrum can help ensure that sudden changes in scope is handled appropriately, without any greater influence on our flow. This is because of the iterative nature of the framework, and therefore, being able to change direction within short intervals.

Whether you are doing Scrum, Kanban, or something entirely different, flow-optimization is about creating a stable environment for your development team, that can handle any unforeseen variations that might arise, at the same time. The ultimate framework for a stable environment is one in which we are able to continuously learn as we handle unforeseen variations, so that it has even less impact on our flow in the future.

4 | Avoid having too many balls in the air at the same time (you’ll just drop them)

It is a widespread tendency that we are too ambitious with our time and focus. Funnily enough, it isn’t just the managers who want us to have a lot of balls in the air at the same time – we ourselves can also be pretty bad at it. We should try to focus on a limited number of tasks at a time. In the end, it is just easier to juggle 3 balls than 30. A nice side effect of keeping our focus on few things at a time, is that we actually get to finish what we started – thereby ensuring the flow in our value stream.

One initiative to start working on, could be a Work in Progress (WIP) Limit. A WIP Limit makes sure that your development team does not set too many tasks into motion, before finishing the already started tasks. If you want to read more about WIP Limits, I can highly recommend this page: Work in Progress Limits.

5 | Create pull instead of push

For some profiles, it is almost a part of their DNA to expect someone to come and tell them what to do. And for many managers, it is seen as one of their most important tasks to delegate assignments to their development team.  In reality, this form of ‘pushing’ of assignment is wildly inefficient when we are trying to create flow in our development process. With a push mentality, we create bottlenecks, silos and unnecessary waiting periods – or put in other words: It creates inefficiency. Push fosters a culture where the employees become indecisive and are scared to think for themselves. Instead, you should pursue a culture and a routine where the teams themselves are taking in tasks – pull-based development.

An efficient way of doing this in practice, is by setting up a Product Backlog where the team is responsible for creating and refining their tasks, based on the customer value they are trying to fulfill. When it comes down to it, the team members are the best candidates for exactly that job, since they are the specialists, and are the ones who have to do the work. As managers, you “just” have to make sure that the priorities are sorted out, and that the prioritization and direction is clear to the team. When a team member is done with a task, they will just pull in the next task from the product backlog into the development process.

And do you know what? That is going to feel completely natural for the team member, because they are the ones who helped create and refine the task, so they know exactly where and how to start.      

6 | Create cross-functional product teams

One of the greatest obstacles, when we talk about flow, is handoffs or dependencies between different proficiencies. Often, organizations are made up of different silos with different areas of expertise, which naturally create handoffs and dependencies between them. And if the organization is focused on resource optimization at the same time, these dependencies can become dangerously fragile. If the degree of utilization is 100% for all employees, there is a great risk that the different proficiencies are not even capable of handling handoffs.

Instead, you should strive for putting together the necessary skills needed to deliver a wanted customer value. It is not enough, that we build strong relations between those proficiencies. We have to make sure that the proficiencies are part of the same product team – working together on a value stream. At the same time, you will create synergy between these proficiencies, ensuring that the development will flow more naturally.

7 | Make the development tasks visible & initiate them

One final tip is to make our tasks visible, so it is completely clear what we are working on, and when. This type of transparency makes it possible for the development team to coordinate continuously about initiated asks, and making sure that the initiatives are always going. The easiest way of ensuring the progress of development tasks is by using a Kanban board. This makes the tasks visible and makes us capable of tracking the throughput time. At the same time, it is suddenly possible to work very actively with a Work in Progress Limit. And let’s face it… It feels pretty amazing to move a task to ‘done’, when it is finished.

Now, I would like to challenge you to try at least 1 of the abovementioned initiatives.

An experiment or two doesn’t hurt

Now you have read a little about different initiatives that can help you create flow in product development.  Now, I would like to challenge you to try at least 1 of the abovementioned initiatives. You don’t have to start all initiatives at once, but perhaps you could try one that fits with your current situation, and then evaluate whether it provided value.

But make sure to get into a routine with these initiatives – then it becomes a natural part of your development and mindset. You will only see the full effect of the initiative, when it seems natural to you. And remember, an experiment or two to optimize your flow will rarely be seen as a bad idea.

Fuel for your career