Monday, June 16, 2008

Lesson for software engineers from a filmmaker


Picture from: Shekhar Kapur's Website


What could a filmmaker say to CEO’s attending a software conference?

Probably very little, unless you are Shekhar Kapur and unafraid of opening up your thoughts to scrutiny by strangers.


Giving up Control

Mr Kapur started by asking how a symphony is created? Does it happen by exercising control or by giving it up?

He didn’t provide an answer but rather hinted at it by asking more questions and describing his own experiences.

For instance, he recalled body surfing—something he did in his younger days. And he cited the experience of filmmaking, for which he is acclaimed now.

He says he prefers to work from loose scripts because the rigid ones leave little room for creativity. How do you create anything, when all you do is follow instructions?

His method is to be obsessed with the subject, and to do all the hard work and research in the preparatory phase. And then to panic!

This serves to disrupt the stranglehold of earlier preparation and frees him to live in the moment and make his decisions on the fly. It’s not unlike being in the zone, which is what breathes life into his work.

Just like with body surfing, his other example. You need to learn how to control your body in water. But you really surf only when you give up control.  It happens in the moment when you allow your body to follow the wave, rather than controlling anything. That’s when you cease to exist because you’ve become one with the wave.

It is, perhaps, also how symphonies are created. Beethoven’s fifth (my example), has a very precise structure in terms of group theory. But no mathematician has created a comparable work following the discipline of mathematics. And Beethoven, who created the masterpiece, is no mathematician and wasn’t following a mathematical procedure. 

We all know that Beethoven never really studied advanced mathematics. Yet he incorporates a surprising amount of math in his music, at very high levels. The beginning of his Fifth Symphony is a prime case, but examples such as this are legion. He "used" group theory type concepts to compose this famous symphony. In fact, he used what crystallographers call the Space Group of symmetry transformations! This Group governs many advanced technologies, such as quantum mechanics, nuclear physics, and crystallography that are the foundations of today's technological revolution. At this level of abstraction, a crystal of diamond and Beethoven's 5th symphony are one and the same!

Source: Chapt. One, IV.4, Mozart, Beethoven

Yes, the mathematics is there. But it was formed into the symphony when Beethoven let his imagination discover its structure, unfettered by any control. If there was discipline, it was went into training the musician and composer that Beethoven was, not in the actual act of creation of the symphony.

Okay, so what is the lesson for the software engineer?

Here, it is (and I hope Mr Kapur agrees):

Great software doesn’t come from following the detailed SRS that you or someone created. It is more likely to emerge when you do an obsessive amount of preparatory work, but respond to the requirements as you see them when the action begins.


No comments: