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.

The Advisor

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.

The Programmer

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.

The Job

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.


Good luck! I am wrapping up my first book for Pragmatic Bookshelf and am headed towards my second, and I'd love to help you any way I can, because I believe in your topic. I mentor college students all the time at the university where I work. I supervise a group of student interns and often our discussions focus on your topic. If you'd like to talk about your ideas, get some advice on the writing process, or even just have a conversation about your topic, I'd love to help any way I can. Email me or hit me on Twitter at @bphogan.

I wish you the best of luck on your month of writing and hope you can take it further!

I went to a very un-elite college, which added frustrations of its own, but I can definitely vouch that a programmer's brain is still ill-served by the higher education system. I think this book would be quite helpful to its target market.

OK, so this will be interesting. You mention in your posts (or somewhere) the sort of concept of Computer Science as a range from art/craft to engineering/science. So what is the endeavor of writing a book? Is that thinking about thinking?

I believe when you are embarking on an artistic endeavor, you are FEELING more about what you are doing than thinking about it.

When you are performing science, then you are thinking about something specific.

When you are practicing philosophy, you are thinking about thinking.

And here I am wondering about how you're going to think about thinking, which reminds me of a Richard Feynman quote. "I wonder why, I wonder why, I wonder why I wonder."

I would also submit that there is an entirely different class of 'software engineer' that neither thinks nor feels about their craft or endeavor. They simply type. Can your book be written with a subtle hint that those types of engineers might better be served with learning the great language of: "Would you like fries with that?"

You should have a blog for a 'call for war stories' of the most hideous debugging experience ever' (I have a candidate). Is there something to be learned at looking at the outliers of people in the business of software development? Those folks so far on the fringe that they defy reason? Or is the target better served closer to the +1 standard deviation above the median? That's the top 16%

BTW, it looks like the poster doesn't like it if I leave the URL blank...

Post a comment