The Importance of Practice

9 views
Skip to first unread message

Jason Gorman

unread,
Dec 21, 2008, 3:45:07 AM12/21/08
to software_craftsmanship
There seems to be quite a few people musing over the need for ongoing,
long-term practice in programming techniques at the moment.

http://radar.oreilly.com/2008/12/hard-work-and-practice-in-programming.html

Jason Gorman
http://www.parlezuml.com

Mark Needham

unread,
Dec 21, 2008, 3:54:33 AM12/21/08
to software_cr...@googlegroups.com
I'm currently reading Talent is Overrated which so far has spent a lot of time explaining how the best at any activity are those who have deliberately practiced the most. I'm still trying to work out what the best way to create yourself a curriculum which allows you to achieve that is although I think Ade/Dave might be writing about the idea in their Apprenticeship Patterns book.

2008/12/21 Jason Gorman <goo...@parlezuml.com>

David Patton

unread,
Dec 21, 2008, 7:37:54 AM12/21/08
to software_cr...@googlegroups.com
Practice makes permanent. So make sure you are practicing the right thing!

David
http://softcraft.blogspot.com/

Adewale Oshineye

unread,
Dec 21, 2008, 7:09:41 PM12/21/08
to software_cr...@googlegroups.com
Hi Mark.
Good to see you around here.

We're certainly including the ideas behind both Colvin's Talent Is
Overrated and Gladwell's Outliers. This is mostly the work of K.
Anders Ericsson. The best introduction to his work is:
http://www.psy.fsu.edu/faculty/ericsson/ericsson.exp.perf.html

However I like to think that we're less interested in how to become
the next Tiger Woods or whatever the equivalent would be in software
development. After all there's a lot of value in merely helping people
gain access to the tools that will let them make themselves better.
There's also the problem that Ericsson's research seems to suggest
that being world-class requires a supportive (some would say
oppressive) family environment which provides you with access to high
quality coaching and training materials from a young age.

I tend to think that practice itself is not enough. You have to be
able to maintain multiple levels of awareness whilst practicing. On
one level you're solving the same problem in 7 ways in 7 languages in
order to find the optimal implementation according to various
objective metrics. But on another level you're watching yourself to
identify which techniques flow more naturally and which cause you
difficulty as well as trying to understand the relationships between
all the solutions.

In an ideal world we'd have someone around who understood this stuff
on a much deeper level and was able to measure your progress, spot
deficiencies and set new exercises designed to correct your
weaknesses. Sadly the world we live in is one in which the only book
that actually attempted to explicitly bring the notion of practice to
mainstream software developers (Charles Wetherell's Etudes For
Programmers: http://www.amazon.com/Etudes-Programmers-Charles-Wetherell/dp/0132918072
) has been out of print for several decades. It took me several years
to find a copy but it was definitely worth it. Here's the opening
paragraph:

"The difficulty with teaching programming is that it cannot be taught.
The difficulty with learning programming is that it is so much work. A
teacher can help, lecture, criticize, guide, smooth the path. A
student can take notes, memorize, read, pass tests, discuss until two
in the morning. All this effort will be meaningless if the student
does not practice by actually writing programs, because programming,
like other skills can only be acquired by practice. Furthermore, the
practice must be on "real" programs and not on the simplistic material
found in most programming language manuals. Noodling away at
Chopsticks will not make one another Rubinstein--no more will noodling
at APL make one a master programmer. So we provide this book of
sizable problems that are suitable as training projects for the novice
programmer who wishes to become first a journeyman and then a master."

Wetherell wrote those words in 1978. But very little has changed. His
etudes range from calculating the yield on an investment to maze
building to finding patterns in primes to playing the game of Owari.
All that's changed is that exercise he thought would take a couple of
weeks are now the work of hours because we have more powerful
languages, sophisticated libraries and faster computers.

One of the tangible things I'd like to see come out of the software
craftsmanship movement would be sets of exercises designed to
strengthen particular facets of a developers skillset. Then when we
meet at conferences we'd be the folks who gather for a couple of hours
to practice our skills and gain feedback from each other on our
progress. Identifying those facets and the exercises that can
strengthen them is likely to very rewarding.

I think that, to paraphrase Richard Sennet, we'll find that there's a
lot we can learn from problem-finding as well as problem-solving.

There are some existing books that provide interesting material we
could use to derive exercises. Even if we don't yet have ideas for
exercises I'd like to collate source material:
- Wetherell's Etudes For Programmers
- Mark Jason Dominus's Higher Order Perl is even more valuable if you
don't know or like Perl because you'll have to reimplement his
examples in your favourite language in order to deeply understand
them.

Are there others?

2008/12/21 Mark Needham <m.h.n...@googlemail.com>:

Denny Abraham

unread,
Dec 24, 2008, 3:20:26 PM12/24/08
to software_craftsmanship
I think practice is essential for a craftsman and even moreso for an
aspiring one. At the summit we talked about the struggles everyone had
to go through in their professional lives and how apprenticeship can
be a safe venue to encounter those travails. I know I've benefited
from Project Euler problems and I could gain so much more from
targeted exercise.

Project Euler projecteuler.net and Ruby Quiz rubyquiz.com are two
problem sets I exercise with, though they are fairly general.
> 2008/12/21 Mark Needham <m.h.need...@googlemail.com>:
>
> > I'm currently reading Talent is Overrated which so far has spent a lot of
> > time explaining how the best at any activity are those who have deliberately
> > practiced the most. I'm still trying to work out what the best way to create
> > yourself a curriculum which allows you to achieve that is although I think
> > Ade/Dave might be writing about the idea in their Apprenticeship Patterns
> > book.
>
> > 2008/12/21 Jason Gorman <goo...@parlezuml.com>
>
> >> There seems to be quite a few people musing over the need for ongoing,
> >> long-term practice in programming techniques at the moment.
>
> >>http://radar.oreilly.com/2008/12/hard-work-and-practice-in-programmin...
>
> >> Jason Gorman
> >>http://www.parlezuml.com
Reply all
Reply to author
Forward
0 new messages