Michael Crichton in his novel Timeline sets the tone for a science fiction by illustrating the difference between the years 1999 to 1899. Definitely people would have laughed if we had mentioned in 1899 that we could cure typhoid by pills, send photographs through air, go halfway across the world in less than a day. It has been more than 10 years since I read that book and now I see that there is a drastic difference in the technology available between 1999 and now. My mobile phone now has far more computing power, memory and screen resolution than the desktop computer I had in 1999.

Engine

Technology advances at such a pace that now we can consider a new generation is available within a few years. Which means that if I am doing something one way now, a few years later I have to change my opinion and find a another way that can make my life easy. What I regard as impractical and expensive now may turn out to be economical and practical. A very simple example is how a smart phone has changed the way I push my day, many recent advancements have gotten into the phone that I hardly need my computer other than programming or creating content. I was thinking it was expensive and impractical to own such a phone few years ago, but that changed completely after I had started using one and the amount of time I was able to save as a result of that.

Many of the advancements in technology are not disruptive, so people don’t easily notice that something new can help them ease their work. Also we tend to stick into our comfort zone and resort to micro optimisations than look outside of that zone frequently for new. One such thing is the level of automation that can go into software development irrespective of the platform/language/tools used. Gone are the days when the automation tools were unreliable, fragile, way too many false positives or needs too much time & effort investment. Ways to automate repetitive tasks have increased in number a great deal. Name the technology and platform, you get the appropriate tools to do that. Most of us who would have evaluated automation at some point of time and would have discarded options as expensive or infeasible but failed to revisit the decision in the next 6-12 months. This will lead to a preconceived notion that we have to live with lots of manual work while in reality it is not, often an external person would be needed to point us to the possibilities the new changing world is to offer. 

The things that are positively impacted by technology are throughput and cycle times. We should have a strong mechanism to periodically question the throughput and cycle times and keep looking for alternatives. Inputs could come from anywhere, any domain, any technology. I recently happened to watch Bret Victor’s talk, it can be found here. He says that when people were not certain on how to do something then they come up with many ways of doing things, but when they find something works then they stick to it without looking for further alternatives.

If we use only tried and tested methods, then may be we would still be using only horse and bullock carts.

Image courtesy of [olovedog] / FreeDigitalPhotos.net.

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?

Reflection

  • 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

“The easy way out usually leads back in” – This is one of the eleven laws mentioned in the book ‘The Fifth Discpline’ by Peter Senge. I have observed this too many times at my work place where a solution was more of an evasive move, trying to avoid the problem or use a clever alternative which hits back at us when we least expect. Last weekend I was reading the newspaper about how cane toads where introduced in Australia to control the beetle population and the result of that after some decades. The people who were interested in controlling the beetle population had a narrow view of the Australian biodiversity and did not know the long term effects of introducing the cane toads. They introduced these toads from South America to Australia.

Stuck inside

What were the results? The cane toads were not able to control the beetle population as the beetles lived at the top of the sugarcanes in the fields. The toads were not able to climb the cane to feed on them, instead the native reptile population went down drastically as they fed on these toads which had a poison sac in them killing the predators. Without the intended effects this move has resulted in altering the biodiversity of Australia at a noticeable scale. Our workplace is no different, simple tactical moves which seemed to be clever choices will result in a bigger problem often for people who succeed in the roles. The only way to not get into these types of traps is ‘Systems thinking’ and to remember that if there is an easy way out then we will usually end up back in.

Image courtesy of [Master Isolated Images] / FreeDigitalPhotos.net