Introduction: Why I'm Writing This Book
NOTICE: this is a first draft for PragProgWriMo. It’s not polished. Posts may not be in sensible order. Read at your own risk.
Let me explain my motivation for this book with three stories.
First, my advisor at Duke University was known as the guy to have. He was young, bright, a Rhodes Scholar, and the star of the Electrical Engineering department. I went to him during my sophomore year and asked which of two courses I should take to fill a requirement, with the condition: which would be most useful in industry? He said, and I quote exactly, “I have no idea. I’ve never worked a day in industry in my life.” I left that meeting more than a little disillusioned—just what the hell kind of education was I getting here?
Little did I know, the education I was getting was never intended to prepare me for industry. And the more elite the university, the greater the disconnect. My passion, however, was for building products. I wanted to get into “the real world” and build cool stuff, not write papers.
By nothing short of divine providence, a guy in one of my classes had been in industry and decided to come back to school to finish his degree. This guy, Ryan Martell, wasn’t just some guy from some job, he was a master programmer who worked on Bungie’s early games, the Marathon series. (You’ll probably know Bungie better for creating Halo.)
I got to know Ryan and he sat me down several times to explain how C really worked. He showed me how C code compiled into assembly, and it was a religious experience for me, like the Heavens opening up and revealing great mysteries of the world. Over the course of those conversations I finally truly understood how pointers worked, how function calls worked, how loops worked. The mystery was gone, no more guessing about ampersands and asterisks, I got it and saw exactly how the computer was running my code.
I was a passionate PC user in high school, and turned into a passionate Mac user in college. I read all about the development of the Macintosh and nearly worshiped its creators. In my sophomore year I discovered they were creating the “next great thing” at a company called General Magic, and I was determined to get my foot in the door somehow.
There’s a long back story about getting an internship at General Magic, but I won’t burden you with it here. I got out there. It was my first time in Silicon Valley, I was at the hottest start-up in town, and it was like the garden of Eden for a budding, enthusiastic programmer. Those guys that created the Macintosh, like Andy Hertzfeld and Bill Atkinson? They were right there, in cubes with the rest of us. My first hour in the office, I walked past a glass-walled conference room and saw Andy in there chatting with someone. I asked the guy beside me, “is that Andy Hertzfeld?!?”. He casually replied, “yea, that’s Andy.” I felt like dropping to my knees, Wayne’s World style, and crying “I’m not worthy! I’m not worthy!”
My job was in Developer Technical Support. My peers included some of the top players from Apple’s System 7 (operating system) team and the guy who would later found eBay. I learned more about programming in my two month internship than I could have learned in untold years in school. I called Duke and said I wasn’t coming back. And so my wild ride in industry began.
So Back To The Original Question…
Why write this book? I found my education at an elite university nearly useless for what I was to discover in industry. It’s two different games entirely. Different rules. Different purposes. As I see talented young programmers enter industry and experience the same culture shock that I did fifteen years ago, I wish I could ease their transition into industry and get them on the right track. And so this book was born.