There’s a great essay at http://online.wsj.com/article/SB10001424052748703989304575503730101860838.html describing how great ideas often don’t come from “momentous ideas transcending their surroundings, a gifted mind somehow seeing over the detritus of old ideas and ossified tradition”. Instead, many great ideas come from a process of tinkering with the materials or ideas at hand and combining them in interesting and novel ways.
We often describe our opportunistic developer persona in this way (see http://p.einarsen.no/programmer-personality-types-and-why-it-matters-at-all/). The opportunistic developer is one who excels at taking existing code and components and combining them in some way to accomplish a task. They don’t invent brand new solutions, classes or frameworks. Instead, they stitch together existing components in creative ways to solve their task.
Sherry Turkle and Seymour Papert wrote about something similar when they observed female students be more succesful at programming tasks when they could build their program by modifying a working program bit by bit, ‘sculpting’ a solution together (http://www.papert.org/articles/EpistemologicalPluralism.html). Turkle and Papert refer to this as bricolage.
The good folks at Stanford have done a ton of great research on opportunistic programmers (http://hci.stanford.edu/research/opportunistic/). They have come up with tools to enable this kind of bricolage or tinkering approach to programming.
This is all very good work, but there is potentially some social bias in the terms used. Both bricolage and tinkering are very much associated with males. Think of the man tinkering away on an old engine in the garage or garden shed. Alan Blackwell and colleagues point out that in informal French, bricolage is a synonym for a DIY enthusiast (http://www.cl.cam.ac.uk/~afb21/publications/Bricolage.pdf), which is a hobby predominated by males. In their paper, Alan Blackwell and co. demonstrate the differences that exist between males and females in terms of their confidence in being able to complete a given programming task. An ex colleague of mine, Laura Beckwith, also made very similar observations in her PhD (http://academic.research.microsoft.com/Paper/2420968.aspx?viewType=1)
According to Alan Blackwell’s paper and Laura’s work, if we think of succesful programming practices in terms of bricolage or tinkering, it’s possible that the inherent social biases will still make females feel less confident that they could complete a given task, since it’s seen as very male oriented. This could prevent us from coming up with models of programming that will benefit both genders. Alan Blackwell’s paper proposes an interesting idea which I haven’t really seen being taken up. Read the paper and let me know what you think.