An interesting paper from U. of Massachusetts looking at the common ingredients of software developers, with speculation on what that could mean for student education in general:
"What is it about experts that makes this problem-solving expertise possible? The primary difference between experts and novices is NOT in basic intellectual processes, such as IQ, memory, or speed of processing. Rather, the distinguishing feature of expertise is that experts have extraordinary action-based knowledge in their field."
They conclude that education should:
1. Develop procedural skills.
2. Develop metacognition.
3. Develop declarative knowledge.
These ideas are not new, but their discussion of the need for strategic and metacognition provides some useful pearls. Years of experience was not predictive of debugging skill. Students can't just keep plugging away at a subject and expect mastery at the end.
In software design, as well as in chess or music, it wasn't time spent in practice that determined success, it was how skillful individuals were at figuring out how to get better. Time-on-task does improve performance, but if you add reflection and self-critiquing and -improving behavior, you'll do even better.
When looking at software design experts, they tended to approach problems first from a big picture or top-down strategy for analysis. When they discovered an unusual feature, they shifted into a more domain-specific mode that allowed them to analyze details and "go deep".
Expertise in Software Development pdf
Eide Neurolearning Blog: Training Tweakers
Fast Company: Expert on Experts
Technorati tags: creativity, innovation, education, technology, expertise, gifted, metacognition, science