I’m not here.
This isn’t happening.
According to Steve Yegge, I should write blogs. Except that he doesn’t. Not really. Indeed, the very thing about Stevey’s Blog Rants that keeps me glued to my RSS reader, waiting desperately for new articles, is that his entries are written in essay rather than blog form.2 [2 He actually uses the terms ‘essay’ and ‘blog’ more or less interchangeably. I suspect this is because his writing process most closely resembles blogging.] Not coincidentally, all of the writing on the web that I find similarly compelling—other examples include Paul Graham’s Essays and filmmaker Errol Morris’s Zoom—shares the same form.
This seems to have caused Yegge quite a bit of trouble though, culminating in his recent announcement that he will shutter his blog, in part because of people leaving tl;dr–style comments on Reddit in response to it. For a guy who likes to talk about how engineers should learn marketing, he sure seems to have a big marketing problem.
I’m no marketing expert, but a good candidate for my first rule of marketing would be to know who your audience is.3 [3 The second might be something about not believing your own press.] The Reddit trolls are not Yegge’s audience, but they insist on complaining about the length of his posts as if they were. Still, his site is called ‘Stevey’s Blog Rants’, and it’s hosted on Blogger at blogspot.com. It’s easy to see how people might become confused.
Hence this essay. To avoid making the same mistake, my first task is to hose down any expectation that this is a blog; that entries will be short, posted frequently and appearing in reverse-chronological order. It’s not, and they won’t.
The advantage of the essay form (at least in Paul Graham’s definition of it) is that it seeks not to espouse a point of view but to discover one. The blog world, by contrast, is primarily reactionary. Blog posts are generally spawned from other blog posts. In short, blogging is to ideas what accounting is to money. I do not seek to further inflate the blogosphere; others are clearly better suited to that task than I.
Rather, my purpose here is to develop a philosophy of software engineering. I must do so because I presume to seek the wisdom that can come only from a deeper understanding of how the world works. There will be no original ideas here, of course, but the particular combination of ideas is likely to be unique.
It would certainly be possible to attempt to develop such a philosophy without publishing it on the web, or even without writing it down, but nothing focuses the mind quite like the prospect of doing so. I already consider this strategy a success: even before setting fingertips to keyboard, no single act in my career to date has changed my thinking about software so much as embarking on this project has. It is also my hope that by pursuing it I may become a better writer than I otherwise would.
Almost as importantly, the web represents an opportunity to receive feedback more efficiently. Explaining ideas about software engineering to people one at a time is hard work; if I can write them down once and convince more than one person to read them then I can potentially discover my errors and omissions much faster.4 [4 In service of this goal, the concept behind the comment system is borrowed from Descartes via Morris.]
Any benefit that readers may gain remains a secondary motivation—necessarily so, as I do not expect any readers. Nonetheless, were such a hypothetical reader to exist, I hope that they would find something of value here. It is my intention to provide as many references as possible, such that even someone who disagrees with everything I say may, at least, discover new avenues of thought to explore. In my opinion, the great literature of our profession is too well hidden; anyone who helps bring it to light does us all a great service. I would be pleased to make a modest contribution toward this goal.
Finally, I address myself to those who intend to set out on the same course. There is a particular disease among software engineers that compels some of us to attempt to build our own publishing platform rather than to select one from the multitude already available. If you are so inclined then you need not look far to find sage counsel against this course of action, directing your efforts instead toward producing content. This is fine advice and I can find no fault with it.