At work, I am a manager, and the truth is that I’ve always been a little bit embarrased that I don’t really know how to do so many of the things that the people for whom I work do–especially, program. I’ve been working with computers since my Dad got me my first Zenith Z-148 (an IBM XT Clone) The catch is that I’ve always been content to be a user–working with the programs that others created–learning them, getting a sense of what’s possible. And even many programs are worlds onto themselves–feature upon feature–tapped and untapped potential. But somehow I think I am capable of being more than a user–I think I can learn how to program. I don’t expect it to be an easy road, but I’ve taken the first step of asking for help and my friends Anders, Eric, and Jonah have all responded enthusiastically. Why am I undertaking this project?
I was inspired by a recent post
where Anders outlined an ideal curriculum for new computer science
students at an area high school. The curriculum recognized that the
audience is multi-level–some kids will become programmers and others
won’t. Anders took the position that computing need not be "arcane,
complicated and boring," which was the impression I got after I took my
first and only programming class back in high school. (Then again I
thought just about everything in school was boring back then.) But
Anders’ post makes clear that programming is about a) solving complex
real-world problems and b) eliminating dull, repetitive tasks. From my
years of working in the industry, it’s also clear that programming can
be lots of fun.
And so I begin. I have 2 assignments that I am working on because this
effort in programming is going to culminate in a final project that
will help triathletes (especially this one) plan their training and
help them become better athletes. The first task is to identify the
data structures that I want to track. Eric’s tip for this step is to
focus on the nouns–I’m still working on the list, but to start my
nouns are: date, duration, focal point, type, level, intensity,
description and debrief. The second assignment is to start working my
way through How To Think
Like a Computer Scientist to master basic terminology and
concepts. I’m also going to be looking at Structure
and Method of Computer Programs as a point of comparison. I’m warned that the latter
is a bit more dense, but I’m encouraged already by the introduction:
"What’s in your hands, I think and hope, is intelligence: the ability
to see the machine as more than when you were first led up to it, that
you can make it more.” – Alan J. Perlis (April 1, 1922-February 7,
1990)
We can make it more. Part of what’s so exciting about the web these
days is how it facilitates learning by empowering people to
collaborate. What’s even more exciting is that I think we’ve only just
scraped the surface of what’s possible for learning, for knowledge, and
how we work together.