Time is arguably the most important input to manage to create high performing software teams. To deliver successfully, a software team needs to correctly leverage time, scope and people.
- Time is the total time your team spends on a problem.
- Scope is the functionality of the completed work.
- People are a combination of the number of people and the skills they bring to the table.
What teams do with their time is the primary factor in determining its output. Even if you hire the best engineers, if they spend all their time on the wrong things, or they’re constantly interrupted while trying to do the right things, the team won’t succeed.
Because software engineering is a creative task, total time spent is not enough to ensure efficiency or success. Fragmented chunks of 5 minutes may mean that the project never gets done. For most engineers, that’s not even enough time to make meaningful progress on a simple bug fix.
Software projects typically require engineers to have several concepts and context in their memory to make forward progress. A task might require you to read a ticket with requirements, look at log output, read related code before you're able to start making changes. Any interruption causes an expensive context switch that forces you to start this whole process over.
Flow state or being in the zone means having no worries about imminent interruptions - you’re fully in the moment and at your most productive. Fragmentation and interruptions kill flow state because context switching is so expensive for engineers. This state is typically where the most work gets done and it’s when the hardest problems can get solved.
Because it takes time to get enough context to make forward progress on a task, we’ve found that the minimum unit of time that allows for flow state is 2 hours. Two hours of uninterrupted time is called Maker Time. It is certainly possible to achieve flow state in shorter periods of time but that’s typically an exception. Periods longer than 2 hours can also lead to higher quality flow states.
Fragmentation is when you have a poorly organized calendar or work schedule where you’re not able to create long periods of open space to do work.
A day where you have eight 30 minute meetings spread equally once an hour is going to be significantly less productive than a day where those 8 meetings happen from 8am-12pm and you have the rest of the afternoon to do focused work. Maximizing the percentage of Maker Time in a week is an important priority for software teams.
We’ve found that the best teams are able to achieve 70% or higher maker time during a work week for their engineers.
As a manager, it can be hard to remember what it was like to need primarily Maker Time to succeed because a manager’s role can be significantly more interrupt-driven. Paul Graham summarizes the differences between manager and maker schedules. To be most effective engineers require large blocks of uninterrupted time and for them any interruptions are disproportionately costly.