Tuesday, May 09, 2006

The Mystique of Software Craftsmanship, Part 5

[Previous Part]

Fifth Discipline : Control Temporal Localization

It has been said enough that psyche is a the key factor of success in human endeavors. One aspect that is worth paying attention to is the way we control how our mental activities are distributed in a time-based manner, or said differently, how we focus our streams of reflection on the past, the present and the future.

In that matter, anything that would not be following a standard normal distribution (also known as bell curve), where the peak of the curve would be the present time, the left side the past and the right side the future, would be damaging for our work and ourselves. This concept sounds pretty obvious and natural, but for intellectual workers, the risk is high to have the shape deviate in one direction or the other and it must be recognized in order to be controlled.

To understand why temporal localization is important, let us examine some potential side effects of deviating from the bell curve.



Risk and Mitigation



This tendency could be the immediate consequence of work habits too much oriented to the past (see part 4). Regrets of a glorious past or a previous technical platform can make a developer unconsciously sabotage his work. It is important to recognize the constantly changing nature of our business (and the fact that a glorious past is a self-made myth) to avoid spending too much focus on the past.


Not having enough focus on the past leaves the developer at risk of ignoring valuable experience. Systematic project postmortem can help turning past experience into useful memories instead of denied and buried ones. Easily built knowledge bases (for example using a Wiki) can also be of great help.



Focusing too much on present can expose developers to the feeling of being overwhelmed by the task they are working on. It is very difficult to reach the right level of detachment necessary to alleviate the emotional impact of technical difficulties that a programmer meet almost every minute. Developing a humorous attitude can be a positive way of shielding oneself!


The consequences of not focusing enough on the present time are well known: lack of attention to the details, unsatisfactory feeling of not seizing the instant... If this escapism is rooted in boredom, talk your manager: you will be surprised by how converging your interests are!



It is very easy to focus too much on the future because software development entails huge prospective mental constructions. The risk is a high mental load that ends up in extreme fatigue and a difficulty to “go off line” (the fourth state in the cycle described part 3). Writing down informal do lists, models or plans as they come to mind can help reducing the amount of prospective concepts manipulated and explored simultaneously by the brain, thus reducing the propensity to excessively look forward.


Not paying enough attention to the future generally translates into ill-designed systems, unable to absorb changes without breaking. Of course, over-engineering is a real risk that must not be ignored, but learning simple non-intrusive techniques (like programming to interfaces) can help to efficiently prepare the future.

Because we are where our mind is, temporal localization is a factor that software developers should be aware of in order to optimize both their work capacity and mental load.