Managing Work Flow: Differential Equations, Agility and Jazz
I like working on problems where I can get into a state psychologists refer to as flow. An important characteristic of being in Flow is a distorted sense of time. I like to think of flow as looking at a problem in the frequency domain. Just focusing on the here and now, listening to the rhythm of different potential solutions bouncing off each other. This is quite different from life in the time domain, where deadlines must be met.
Time vs Frequency
Solving a problem can be thought of as a journey. The journey can be viewed in two different ways – by time or by frequency. The time domain is where deadlines are set, and progress measured. This is where project managers live. The frequency domain is where work is accomplished. The steady rhythm of a each stroke of the canoe paddle, bang of the hammer, or debug/compile/build heartbeat sets the pace. This is where programmers live.
The solution of complex math problems can follow a similar journey. A Laplace transform can be employed to move between time and frequency domains. Once in the frequency domain, the solution can be obvious. There’s a mathematical notion of flow too, but ironically, it is strongly rooted in the time domain.
Waterfall project management seems to be more time oriented, whereas agile methods are more suited to the frequency domain. What is missing is something equivalent to a Laplace transform for project managers that allow them to move easily between time and frequency domains. It seems like this is the same design challenge faced by musicians. I wonder if composers of music could teach us ways to reconcile waterfall/agile forces.
In jazz music individual band members take turns soloing while the rest play a predictable rhythm. In differential equations this is like holding all variables constant and allowing one to vary. I wonder if this suggests an approach for Agile where we might hold hold all components constant within a sprint, except for one. A pair of programmers (or more?) would push the envelope of a solo component as far as possible. Making big changes to more than one component within a sprint gets pretty complicated.
Jazz doesn’t seem to fit well with a big design up front approach. Instead, it relies on faith that if we can just open ourselves up spirtually to what is going on we will arrive at our destination on time. Nevertheless jazz composers must live in the world of time too. Record labels want repeatability. While I can’t picture a jazz band getting ISO 9001 certification, they must go through some sort of process. Like Mussolini, waterfall isn’t a fun project management method to work under, but sometimes it’s needed to get the trains to run on time. Can we have it both ways? Can we Take the A Train and be on schedule?