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.
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.