From the perspective of an individual, increasing productivity comes down to a few things:
- Increasing Focus (reducing multitasking, reducing interruption);
- Frequent Customer Feedback;
- Reducing Friction.
Multitasking feels more responsive and is guaranteed to slow completion times
Let’s say you get 4 requests.
In order to appear responsive, you work on all of them at the same time. In reality, given it’s just you working on them, you’re not actually working on all of them at the same time so much as switching between them.
In the end, every requester will feel like you responded to their requests and, assuming similar sized requests, all of the work is completed at roughly the same time at the end.
Alternatively, if instead you focus on completing one request at a time, every request except the last one is completed significantly sooner.
ASIDE: In practice, a single request might not take up all your time
Sometimes, when working on a single request, you’re waiting on a machine, a process, a dependency, etc. So you might use the down time to work on a second request, general improvements, learning, etc.
The cost of context-switching makes multitasking even worse
Context-switching has a mental cost to humans and it makes the cost of multi-tasking even worse. This means the last item when single tasking might complete before even the first item is complete when multi-tasking.
See also The Multitasking Myth (codinghorror.com) which includes a chart by Jerry Weinberg proposing some heuristics on the cost of context-switching as the number of simultaneous projects increase.
Context-switching also applies to interruptions
The cost of context-switching applies not just to switching between requests but also applies to all forms of interruption, for example meetings.
Not every part of a request has the same level of priority
What if you broke up the 4 requests and prioritised the smaller parts? It may not be the case that every part of a request has the same importance. You may want to do this breakdown and sequence them to optimise the completion times of the different parts.
Without feedback, building the wrong thing feels productive
When do you want to know that what you’re building is wrong?
An interruption that helps you detect that you’re building the wrong thing is generally a useful cost.
Friction is everything around a task that makes it difficult to complete
Any variant of “I spend 10% of my time productively working and 90% of my time fighting with X” is an expression of friction.
Friction is how I describe what happens when your attempts at progressing a task is hampered due to tooling, environment, the technology you’re using, lack of knowledge and the ability to acquire it, etc.
Multi-tasking and lacking feedback generally have significantly larger impacts on productivity than friction but if you’ve addressed multitasking and feedback already, reducing friction can still provide noticeable improvements over time.
- DevEx: What Actually Drives Productivity — ACM Queue which identifies 3 core dimensions of Developer Experience (aka individual productivity): feedback loops, cognitive load, flow state.
- Team productivity (not the same as individual productivity)
- Organisational productivity (not the same as either individual or team productivity)