Slice The Work

Work comes in various sizes from the smallest change to the largest taunting feature but there is only so much that one can focus on at a time while delivering a high quality output.

Just like a pizza is easier to eat when sliced, work is easier to perform and the result of better quality, when a though or two is given to how to split the big chunk of work into smaller, more manageable, easier to argue about and understand rather than having it all at once. And like pizza, if one feels like leaving a slice or two out because you have already reached your goal, you can do it.

When looking at a thing as a whole is close to impossible to figure out the inner workings of the system, to understand why some tradeoffs were made. In order to start exploring what are the moving parts that make up the components one has to reduce to First Principles the requirements of the problem in order to really understand what is needed to build the feature. 

For this reason one has to first understand what the feature should do, to dig deep down by asking questions until a clear inventory of all the movings parts has been discovered and surfaced so that one can think about viable solutions for each one of them. 

How the user will interact with it, what the inputs and the outputs are, how the internal system communicates within the different components; these questions will provide a starting point for the exploration required to discover the moving parts.

To make the exploration process easier, there are 6 questions that you can ask interchangeably to dig further down. “What?”, “Where?”, “When?”, “Who?”, “Why?”, “How?” . After answering a question, proceed with asking “And then… ?” in order to keep clarifying the next steps. This is called Second Order Thinking

A pragmatic approach is necessary to determine how much to dig, how much to explore, how many questions to ask because it can go on and on forever. Space exploration is cool but it can be an endless endeavour in the vastness of space. Landing on the moon on the other hand is clear end goal.

While exploring, there will be moments when one realises that some requirements are flawed and / or cannot be achieved and is one’s responsibility to guide the people who defined the requirements through the process of explaining what can be and cannot be done and explain the reasons why so and then negotiate together alternative solutions.

Once we understand the moving parts, the next step is to figure out which moving parts forms which components and how those components will interact among them to perform the final task. This will provide the boundaries of each slice of work which will never be of a regular form but more like puzzle pieces that each have a different shape and ways to connect with neighbours. 

After mapping out the boundaries it helps to identify those components that are critical and those that are nice to haves. When dealing with large features it also helps to identify the sum of slices that will make a good enough version one and then keep improving and expanding the capabilities through iterations rather than deploying a large feature at the end of a very long road.

When it is time to perform the work; work on the moving parts is asynchronous and to be performed individually and the work on the components is synchronous and to be performed by multiple individuals at the same time.

Since the components are the sum of the moving parts, all the work on the component’s movings parts must be done by a single person. In order to speed up things, a team can work on multiple components at a time.

Having boundaries at the slice level keeps one focused on the tasks at hand and provides a north start to know when the work is done and ready to be an increment towards the feature completion.

Slicing the work is the responsibility of the person or team who will perform the work. Never accept the sliced work from some else because they are too far away from the work to known all the details and intricacies.