I had an opportunity to audit a computer science class this week at
Washington University, a class that was teaching students how to write
iPhone apps. It was their final presentation, and I got to see a dozen
apps that were very impressive. As I was watching the kids present, I
was thinking back to my college days and the similarities and
differences about my education.
Of course, back in my day real programmers wrote in Assembler, and
maybe Fortran. None of this object-oriented stuff had even been
invented. We also had punched cards, which is probably why I never
became a programmer. In grad school, we had video terminals because
PCs were still being tinkered around inside Silicon Valley garages.
In the Wash U class, most of the students had their own Macbooks, some
better than my own. Each was given an iPod touch to use during the
semester and this session was the moment of truth, where they had to
demo their apps in front of the class. Most of the programming
projects were functional, although there were a few students who had
obviously been putting some long hours trying to get the bugs out of
their apps. (One of the kids was working on his presentation and
actually debugged his app during class — some things never change.)
I was impressed first of all with the apps, whose functions ranged from tracking
what is in your fridge to monitoring workouts for a personal trainer to locating friends on a campus map during free times. One app that taught people how to count cards at
Blackjack –this could have helped one of my dorm-mates who would
periodically make a run to Tahoe where they still used single decks
and come home with enough money to pay for his living expenses.
Another was used to collate and tag photos from Flickr. Each team had
to research and find an app to build that wasn’t yet sold on the App
Store, too.
I hope the kids take the time to finish them and post them to the App
Store. Some of the apps were very polished and could probably be used
as is with almost no additional effort, while a few just crashed with
the slightest tap on the screen. I was also impressed with the quality
of the presentations and how polished the kids were in front of the
class.
This isn’t what I remember of my nerdy classmates back in the
day, where we seldom even spoke to each other, let alone spoke
Powerpoint. Most of the kids put together a few slides that showed
their decision-making and progress during the class. Some of the apps
were built in teams, some solo. There were about 25 kids in the class,
with two women. (This is about the same sad gender ratio in my day,
too.)
These were not beginning computer science students by any means. Each
of them had to have an understanding of a lot of different pieces,
including the graphics interface of the iPhone itself, database calls,
Web services, and the Apple development environment that is used to
build the app itself. That is a lot for any programmer to handle, but
the kids took it in stride. You could tell that they learned a lot
during the semester, and were proud of it too. Heck, I was proud of
them and I didn’t even know them.
One of the things that I was struck with during the class was how
collaborative the kids were. This wasn’t the introverted nerds of my
misspent youth — these kids were calling out suggestions to help each
other and try to remove the remaining roadblocks in each other’s apps.
Some of them had tried to go down a particular path with one tool,
only to change horses and use something else. It was fun to watch them
get all excited about some arcane code fragment. Part of this I think
was because the iPhone environment is so new and so contained that it
makes it easier to collaborate, because there are so many things to
learn that are outside the normal coding process.
They also learned first-hand about feature creep and trying to hit
their requirements on time and how to balance making things work with
making things look pretty.
Speaking of which, most of the students had high standards for the
look and feel of their apps. There isn’t much screen real estate on
the iPhone to fool around with, and you have to make every pixel
count. Some of the kids took the time to find the right icons to
display on screen, and they all took pains to make use of the various
menus and screen controls that make the iPhone apps easy to use with
one or two fingers. That was impressive, and showed me that the iPhone
really has a future and why 100,000 plus apps have been already
created.
You could also see the beginnings of professional computer scientists
here too. A few of them mentioned how they coded in pairs, using
extreme programming techniques. I think that meant that the pair
stayed up all night to meet a particular deadline, but still, that is
how it happens in the real world too. And learning object-oriented
languages is part and parcel of today’s programming world, unlike the
world that I entered after college.
One kid had the funniest line, talking about his mother, who is a
project manager and a programmer. “My mom is very old school and knew
all these Unix shell script commands that she never told me about when
I was growing up.” Oh, youth is so wasted on the young!
If your local university offers a class on iPhone apps, you might want
to stop by and be inspired. I know I was. Thanks to the teacher Todd
Sproull for letting me sit in.
Small self promotions pitch: You can read a review of my ten favorite
iPhone apps for IT workers in Computerworld later this week. I will
post a link on strominator.com when they do. Some of these apps are
instructive in showing how to demonstrate expensive networking
appliances, while others are useful basic networking troubleshooting
tools.