At the beginning of a recent class, I asked my students if any of them ride a snowboard. When just a single hand went up, I added, “how about skiing,” which garnered another outstretched arm or two. I then asked if any of them played sports at the college—or had in high school. How about playing a musical instrument? Eventually, virtually every hand had been raised. I then went on to explain how learning computer science has at least one thing in common with learning those other activities.
Software development isn’t like history or geography, or any number of other, primarily cerebral disciplines. One can learn the theory behind programming from a book or an instructor; but in order to truly understand it—and just as importantly, excel at it—one needs to get on the figurative snowboard and ride!
There’s nothing like putting your fingers to the keys and tapping out some code. Both the laboratory and the real world are at your fingertips. And unlike snowboarding, there’s no risk to putting theory into practice.
Many years ago during a consulting gig, it became clear to me that an employee on the project feared that her code could be seen by others. She was right that it was viewable—the source control being used recorded each and every save of a method or other change in a class (for the curious, we were using VisualWorks Smalltalk and ENVY). Her fears were otherwise unfounded, however, because no one was looking. Her own corner of the code repository was not unlike the bunny hill of the ski resort: everyone falls there; no one looks. We’ve all been there.
Point the board down the hill. Put most of your weight on your front foot. Be a little bit aggressive if you want to stay upright. That’s how it’s done; ask any snowboarder. And ask any successful software developer—he’ll tell you the same thing.