Friday, October 2, 2009

"Duct tape" in six minutes vs. "Beauty" in six months

I've read Joel Spolsky's blog over the years and his latest post resonates with me in a big way, it's entitled The Duct Tape Programmer:

http://joelonsoftware.com/items/2009/09/23.html

In short Joel says over-engineering dooms software projects and some individuals have a knack for avoiding this pitfall by leveraging disparate technologies, even if it appears to others as a mish mash.

I could not agree more. 

I have my share of anecdotes over the years but one of the best ones and most telling was when a coworker with a significant affinity toward Java who had been knee deep in applets for quite some time was asked to write a simple utility to show the differences between two files and send the output to a browser. This is a CGI that would take a duct tape programmer a few minutes to write levering the very common  diff utility. However the Java afficionado wanted to build this from scratch, i.e. read two files from Java, write all the logic in Java to compare them. No doubt he would have made a naive tack and his first iteration would likely have shown the first difference in two files not realizing that diff does a very good job of showing other information, not just the first difference. Then he would have spent a considerable amount of time trying to duplicate what the diff utility had already been doing for decades. 

Isaac Newton, the father of physics said it best, "If I have been able to see farther, it is because I have stood on the shoulders of giants." Knowing when to leverage the work of others is an important skill in my view. All too often software developers, particularly early in their career have a propensity to see everything as a nail when they wield their hammer (favorite programming language, tool, etc., etc.).

Joel's missive in The Duct Tape Programmer also strikes a cord with me since it eludes to the reason I named this blog MasterCobbler. Specifically the fusion of what initially would seem disparate technologies to some higher end. As a simple example my bringing up Synergy in a previous post to provide one large virtual desktop when having one Windows XP system and a Mac OS X system is at a basic level a very good example of what I'm talking about. The whole is greater than the sum of its parts.

As for some of the examples Joel gave, some contemporary examples are in order. He and I share one thing - we both spent time at Microsoft. I can tell you beyond Microsoft's walls, virtually no one cares about COM, DCOM and that has been the case for quite some time. Once I left Microsoft, the general market had very few people who had zeal for the subject matter and with the passage of (D)COM's hey day, the examples are that much more likely to fall on deaf ears.

1 comment:

Gas Creature said...

Hindsight is 20/20, my friend.