Over on 43 Folders, Merlin Mann has posted a thought provoking article Attention & Ambiguity: The Non-Paradox of Creative Work
Go read it. I’ll wait here.
Merlin has written about a important distinction, one that is critical to all creative endeavours - and I include Software Development as a profoundly creative endeavour.
On the one hand, a software developer needs to be able to come up with good ideas in order to develop good software. Many times, the most obvious solution - the one most easily reached - has critical flaws.
A good example of this would be the Bubble Sort, a simple way to order a list of items. Unfortunately, the Bubble Sort has poor performance as the number of items in the list grows.
On the other hand, a software developer needs the discipline to objectively weed out the poorer ideas, and to to turn the best ideas into excellent code.
Both the QuickSort and HeapSort algorithms are good examples of this - once the inventors had the critical (creative) insight, getting the implementation right takes many kinds of attention to detail.
All good software developers I’ve known and worked with exhibit both of these qualities - a great deal of creativity and insight coupled with great attention to the details.
The distinction between these guys and the truly great - those I aspire to emulate - is that the great know when each skill is needed, and how to bring the right skills to bear at the right time.
I guess that’s the real challenge, isn’t it.