There are a lot of methodologies to get things done (GTD). Pareto (80-20), Eat the Frog First, Important Thing First, Agile/Scrum, Active Delegation etc. While each of these have their pros and cons, one of the most important decisions people and companies get to make is what needs to be done in a batch process and what should be more of a flow process.
Firstly, what does a batch approach vs. a flow approach look like?
Batch approach means that you are waiting for some capacity of requests to build up and then you do all of them together. For e.g., you are a t-shirt manufacturer and instead of manufacturing one t-shirt at a time, as and when orders come through, you wait to get a minimum batch order of 50 or 100 t-shirts and then you start producing.
Typically, in a batch process, with the idea of division of labor, you wait for a person or a team or a machine to do a part of the t-shirt for all t-shirts and then move over to the next part. For e.g., a tailor may cut the right piece of cloth for all 100 t-shirts before the next person attaches a collar for all 100 and then another person subsequently makes sleeves and so on.
Flow approach is about getting ‘one thing done’ and then going to another. Flow is typically tied to orders, which means you start producing a t-shirt as and when an order comes in. See picture below for a basic illustration of Batch vs. Flow processes.
So, the question is when to use what? Most things are done in batches. Moving away from the analogy of manufacturing, for companies that are in services or make software, people are executing on multiple things at a time.
The symptom of this is that your day is full of disparate tasks. You are writing a piece of code, training your team mate, doing a technical interview, QAing someone else’s code, having a discovery call with an external vendor etc. You get the idea.
So, what is the issue and is there a different way?
The focus of most companies is to maximize efficiency or workload. The theory goes like this – I have a resource and I need to keep them productive since I am paying for it. Need to maximize my ROI. This means that I will do everything I can to fill out their time with various things. See a free time slot, give them something to do. The problem with this is that while you do maximize productivity, the most important objective of a business, which is to develop value-added products or services in the fastest time possible, gets ignored.
In this case, efficiency is the enemy of effectiveness. It is not always the case, for sure. Take a look once again at the picture below. If you are the kitchen of a cruise ship, you definitely want to batch produce the food and not wait till 5000 people show up and start ordering food.
However, what if you are a software company that is developing multiple features for release. In the batch mode, all features will be released in 9 months rather than each feature being released every 3 months, which is the flow process. Isn’t that better? As and when a feature gets released, it brings incremental value to your company. So, while the second feature is released, the first feature has had 3 months of value-add to show for. When the third feature is released in month-9, the first feature has added value for 6 months and feature two has added value for 3 months.
That is huge for a company, especially smaller companies whose entire existence depends on capturing the value-add from various features in their products. Needless to say this does not happen in most companies.
The hard part is to have your teams align on the fact that someone’s priority will not be getting addressed at any one moment. That won’t be easy to negotiate but needs to be done. It is better for the company.
What do you do if you indeed have multiple features to release and can’t pick one. Convert from batch to flow by having dedicated teams to each feature. See illustration below.
There are a few things you will need to think differently – Company Focus and Budgets.
Focus of companies – instead of productivity focus on lead time of feature releases to maximize the ability to get value from customers. Companies exist to farm the economic benefit in the future and bring it to the present. The faster you do this, the better your chances of success.
Don’t worry about productivity, focus on lead time and getting value-add things out to the market quickly. In other words, focus on the fastest Go-To-Market approach rather than maximizing productivity. You will notice that, when you focus on speed to market, you will become inefficient and that is how it should be. You should have people waiting for the prior workstream to get finished so that they can push it out as quickly as possible rather than being so busy that they find the next open slot on their calendar a few weeks on.
In other words, Redundancy is the name of the game, not efficiency. In one of my roles as a Consultant, where there can be a tremendous focus on efficiency, bill rate, time utilization etc., the most successful long-term approach was to have enough redundancy in the team so that you can react to everything a client throws at you. Efficient teams don’t work in a complex and uncertain environment.
Here is a rule of thumb: If you need 5 full-time resources to do something, get 6. That extra resource will save your butt when something inevitably goes wrong or if people call in sick.
Now you ask, what if the project went without a hitch. Isn’t the 6th person a ‘waste’. No. Task that person, in their copious free time, to do things that allow you to go above-and-beyond. Task them to do something innovative and something that was not part of the scope but will delight the customer. On that project, it may still look like overhead but over the long run your customers will love you for it. Here is another crazy idea…it is OK if that person is not utilized as much. It is better for their work-life balance and in a crazy world like ours, that is not a bad thing at all.
It is the only free lunch in business, if there was ever one but you need to have a long-term focus. Leaders who optimize the day to day only will eventually realize that there is not much to lead over the long-term.
How to think of a budget – many companies have fixed budgets. The thinking goes like this – we want to put $X towards product development and we have a runway for 18 months. Hence you divide $X by 18 and then whatever that affords, the company produces that much. This will almost ensure that you are value-add that you need to farm from your customers will be spread out over 18 months. If you want to win, you need to front load your releases because your customer is not going to wait for 18 months.
Use the majority of the budget to hire people early and teams to get the releases out very very quickly. This is where you can get contractors, consulting firms, freelancers so that you can work with them as long as you really need to.
1. Do more things in a flow rather than batch approach to bring the future economic value forward faster
2. Focus on speed to market rather than productivity.
3. Plan for redundancy and downtime. This will ensure you can always deal with an uncertain environment
4. Budgets don’t need to be spent linearly over time. Do things quick and have agile teams that can come in an out as needed
Remember, a company is there to farm economic value from the future and bring it forward. Their success depends on how quickly they can do that. So, focus on speed to market on things that are designed to add value to the customer and in term drive economic value to the company. Nothing else matters.