I get a chance to meet lots of people who have a good exposure to the manufacturing industry either by work or education. If we take a look at the Cynefin framework, manufacturing industry fits in the ‘complicated’ quadrant. In this context if we are to create a wrist watch then there will be a clear design on how to create the parts and standard instructions on how to safely assemble the watch. This works in most of the cases and people will gain dexterity over time and will be able to assemble watches at a much faster pace. What is necessary here are the design and the standard instructions to assemble; incase someone else finds a better way then the standard instruction is updated with the new method.
Software work on the other hand is knowledge based and fits in the ‘Complex’ quadrant. There are some good practices for basic things like clean code, continuous integration etc but there is no defined way to approach it using the methods which apply to tasks in the ‘Complicated’ quadrant. If I am assembling a watch or a similar task, it is possible for me to split my work into 1 hour increments and produce output at a predictable pace. I can also stop doing the work in between, attend a meeting and resume work later on without much impact to productivity after resuming work.
Knowledge workers such as software developers cannot do this, their time increments are more like 3~4 hours. A break in the flow of work is bound to cause rework from scratch. Concentration of task at hand is of prime importance and if plans are made such a way that there is a meeting scheduled in between the 3~4 hour stretch of window, it will impact the productivity for sure. Also the power of context is too pronounced, the productivity will be much lower earlier in the development cycle and will progress much faster as common understanding of the system emerges. Plans usually consider only linear throughput and that adds pressure on the team to be at peak from the initial phases of the project.
What should we consider if we are dealing with knowledge work especially if we have been exposed to manufacturing or similar sector which fits the ‘Complicated’ quadrant in Cynefin framework?
- Plan for a progressive increase in throughput
- Standard instructions and processes will not fit and may prove to be counter productive
- Work requires thinking time, concentration at task comes with unbroken attention, plan for developer time in chunks of 4 hours
- Reflection is as necessary hands on coding. Tasks like staring outside of the window, enjoying the coffee or doing nothing with eyes closed are not unproductive, it helps reflections which helps innvoation
- A degree of autonomy is required, it is better to let the team evolve the design based on their experience than forcing an expert’s opinion on the team
- There has to be avenues for continuous learning and sharing the learnings
Image courtesy of stock images / FreeDigitalPhotos.net