es. Further, very few of these designers
had ever taken a course on programming or scripting as part of their secondary, post-secondary, or even professional development activities. An
intriguing (but admittedly anecdotal)
observation was that our participants
appeared considerably more gender
balanced and ethnically diverse than
most demographic data reported for
computer science.
Obviously this diversity poses a
number of challenges for efforts to address the educational needs of these
designers in the future. That aside, we
took away two important lessons about
current informal learning practices:
IlluSTra TIon By FraZer HuDSon
˲ ˲example-Driven Learning. The
main driver for our participants to
learn something new about program-
ming derives directly from the needs
of the designer’s current project. With-
in that context, the designer actively
seeks out examples related to the end
goal in a somewhat piecemeal fashion.
Ideally, the designer learns as he or she
sees examples that make use of new
programming features. Unfortunately,
this doesn’t always happen due to the
unavailability of relevant examples,
differences between the current goal
and that of the example, and the lack of
explanation accompanying examples.
The explanations found rarely draw
out the computer science ideas used,
instead favoring specific practical de-
tails. Despite the inherent problems
and inefficiencies in learning this way,
the designers we interviewed consis-
tently preferred learning from code ex-
amples to more general resources like
books. Of utmost importance, then, is
the instructive quality of the examples
being used (that is, with good explana-
tions) and how obviously relevant the
examples are.
the educational and
training needs of this
significant group
of learners appear
largely underserved
by academic
institutions today.
looking for information. However,
search results related to programming
questions can be difficult to interpret.
When asked to read and modify a piece
of program code, participants often
spent significant amounts of time
studying search results that pointed
them to irrelevant code written in other
programming languages. Sometimes a
search might lead a user to a conceptually correct algorithm for their problem
but implemented in an unfamiliar language. This dissimilarity may cause the
example to be discarded altogether, or
cause the learner difficultly in making
the necessary adaptations to the current context. The primary issues in using the Web as a resource for informal
learning about programming can be
tied to difficulties in devising appropriate search terms and judging the relevance of the resulting examples. 4
One underlying cause for these
difficulties could be tied to our participants’ lack of sufficient general,
abstract knowledge of the computing
and/or programming structures at play.
When a search based on purely syntactic constructs fails, an expert would
fall back to a more general conceptual
term (such as “exception handling”).
The ability to see similarities between
algorithms implemented in different
languages often requires an ability to
abstract away from the concrete syntax. A recognized problem of highly