The Principles of Product Development Flow book bring many benefits of working in small batches, and I will bring the gist for you in this article.
A batch is a way to group some actions/tasks/things together, like a package.
When doing product development, you can have small batches or large batches sizes. The small batches have many benefits over the large ones.
Cycle Time
The first benefit is reducing the batch size you reduce the cycle time. The cycle time is how long does it take to go from product to be usable for a user in production. The small the batch the faster you ship to production, the faster you fix bugs and make new improvements.
Flow
A small batch reduces the variability of flow. The flow is the rhythm you deliver new value to your user. Using a small batch it is easier to keep the same cadence of delivering as the deviation is also small.
Feedback
You get faster feedback using small batch sizes. This will avoid bigger errors/failures, like building the wrong thing or having the wrong assumptions. It will also improve your product much faster.
Risk
You have to deal with less risk when you use a small batch. It is much safer to deliver small changes than big changes. Your users also won't feel your product changed it all from day to night. It is much less probable to introduce big bugs, and it is easier to roll back if something goes wrong.
Overhead
A small batch also reduces overhead. In a large batch, you are more probable of having many more bugs, and every time you find a new one, you need to retest the other ones to check if there is duplication. Every time you fix a bug, you need to retest everything again to avoid regressions.
Efficiency
Working in a large chunk of time alone feels more efficient, but it is only local as it reduces feedback loops and overall efficiency. After working the large chunk you can figure it out that you made the wrong assumptions and have to redo all the work.
Urgency
A small batch brings more urgency as there are few items to delay, so you need to finish your task at the right time to avoid delivering the next release.
Motivation
A small batch also improves motivation, as you can get feedback on your work in a day or two. It feels good to see how your work impacts your users.
Cost and Schedule
It is much easier to estimate the cost and schedule of a small batch as it has few items than a large batch. The interactions from one item to another in a large batch makes the cost and schedule grow exponentially.
Worse Element
Your cycle time is the time of the slowest element in the batch size if you use a large batch one slow item will delay all of the others.
Coordination
If everybody in the team works in a small batch themselves it makes it easy to coordinate and avoid someone doing the same work of someone else.
As we can see small batch size has many benefits.
How can we enable them to happen in our organization?
You should invest in automation and in tools that hold the line
Good infrastructure (test coverage, type coverage, bundle size, perf metrics, .etc) make sure that you don't need to keep testing the same things over and over, reducing the batch size and the cycle time.
A CI/CD that automates all these kind of tests, and also automate releases, make it easy to use small batch and do many releases on a daily basis.
Feature flags can reduce your batch size, as you can merge unfinished work in your main branch, getting feedback from other developers and internal testing before releasing the final version.
You can also reduce the scope to reduce your batch size and deliver faster and on time.
Doing design and code incrementally also let you reduce the batch size and converge faster to a better solution.