|The ever-incisive writer, Malcolm Gladwell, has been on a whirlwind promotional tour in support of his new novel, Blink which is about snap judgments and unconscious decisions. In a recent interview, he spread his focus to sports|
JM: Talk a little about tennis coach Vic Braden, the subject of one of your anecdotes. He says, "We haven't found a single (tennis) player who is consistent in knowing and explaining exactly what he does."
Gladwell's words were echoing in my ears when viewing a talk given by Bram Cohen at Stanford. Cohen is the programming wizard behind BitTorrent which is responsible for something like 35% of the traffic on the internet these days and which has gained a life of its own. Listening to him explain the intricacies of his software, I was struck by the number of times he freely admitted that he wasn't sure why things worked the way they did or how he came about to make certain design decisions. He was only able in retrospect to give a hint as to the why and how and oftentimes it was a case of hand-waving or of "magic numbers".
A big part of my job is trying to clearly articulate sofware design and architecture to fellow developers, UI designers, the documentation writers or even to the users of the software. Engineering is all about tradeoffs and pragmatism in the face of complexity. When you have spent time struggling with some coding or design problem and come to some sort of solution, it's often the case that you find it a little difficult to describe the core of your design. I envy those who are able to consistently present great and clear technical rationales for their work and to get at the heart of the matter. Maybe there is a kernel of truth to Arthur C. Clarke's Third Law: "Any sufficiently advanced technology is indistinguishable from magic."
Explaining Software Design
TedStanton 0600014754 699 Views