December 15, 2007
In a recent web search, I found the following comment in a programming.reddit.com thread from eight months ago, completely by accident:
I think prog.reddit will continue to move in phases... a couple of days ago, someone complained about a drop-off in Haskell articles, today there were 4 or 5 ... next time Django or Rails does something worth noting, there'll be a plethora of Python/Ruby stuff. Despite its limb-gnawing tedium, Coding Horror will continue to rank high.
I personally think describing what I do here as "limb-gnawing tedium" is a bit hyperbolic. But it made me laugh.
I can understand where the commenter is coming from; the web is chock full of content that absolutely bores me to tears. If I stopped and wrote a comment bemoaning every boring blog post or web page I've ever found, I'd scarcely have time to do anything else. Such comments would also be a bit of a downer for the author, as I'm sure someone is interested in that particular topic. The whole point of putting content on the internet is to find an audience, however tiny that audience might end up being. Maybe you're not a member of the audience, and that's OK.
I try to avoid blogging about blogging because it's such a cliche. And it's boring. However, after digging a bit deeper in the programming.reddit.com comments, I became concerned:
What I don't like about "Coding Horror": the title promises "Daily WTF" style entertainment, but doesn't deliver. "Coding Horror" ought to be about people coding dynamic web pages entirely in SQL, or having some mission critical system written in a cryptic version of csh.
This is a profound misunderstanding. If you're coming here looking for that sort of entertainment, you're bound to be disappointed. I'd like to think this site is the opposite of The Daily WTF.
I apologize for the confusion. Allow me to explain.
First, the literal explanation. The sidebar of Steve McConnell's seminal book, Code Complete, contains a series of icons denoting particular areas. There's a "Hard Data" icon, a "Key Point" icon, and a "Coding Horror" icon.
I have to talk a little bit about the influence this book had on me as a young developer.
I graduated from college in 1992, and entered the field of professional software development at that point, at least in terms of being paid to do so. I loved it, but I really had no idea what I was doing. I was a young, inexperienced developer working in small business, where there aren't a lot of other developers to look to as mentors. Nor was the internet a factor; the internet didn't really hit until '95 for most people. I was living in Denver at the time, and I frequented the Tattered Cover, a great independent bookstore. Code Complete was originally published in May 1993; I stumbled across it while browsing the computer book section at the Tattered Cover sometime in 1994. I was floored. Here's this entire book about becoming a professional software developer, written in this surprisingly friendly, humane voice. And it was backed by rational research and real data, not the typical developer "my brain is bigger than yours" chest-thumping.
I had found my muse. Reading Code Complete was a watershed event in my professional life. I read it three times in one week. It immediately became my Joy of Cooking. I didn't even know it existed, but it showed me that if you loved food enough, it was possible to go from being a mere cook to a real chef.
One of the most striking and memorable things about Code Complete, even to this day, is that Coding Horror illustration in the sidebar. Every time I saw it on the page, I would chuckle. Not because of other people's code, mind you. Because of my own code. That was the revelation. You're an amateur developer until you realize that everything you write sucks.
YOU are the Coding Horror.
The minute you realize that, you've crossed the threshold from being an amateur software developer into the realm of the professionals. Half of being a good, competent software developer is realizing that you're going to make tons of mistakes. You will be your own worst enemy almost all the time. It's a lifestyle. You're living it right now. You, me, all of us. The problems start with us. We're all coding horrors. This story from the Tao that Reginald Braithwaite posted is as good an explanation as any:
There was once a monk who would carry a mirror wherever he went. A priest noticed this one day and thought to himself, "This monk must be so preoccupied with the way he looks that he has to carry that mirror all the time. He should not worry about the way he looks on the outside. It's what's inside that counts." So the priest approached the monk and asked "Why do you always carry that mirror?", thinking this would surely prove his guilt.
The monk took the mirror from his bag and pointed it at the priest. He said, "I use it in times of trouble. I look into it and it shows me the source of my problems as well as the solution to my problems."
If you're horrified by what you see in the mirror, you are not alone.
I chose that title for my blog – with explicit permission from Steve – because it's a clever in-joke about becoming a humble professional programmer. That's what I try to do here. I write to learn and explore topics that deal with computers and programming, and because I'm easily bored, the topics I find most interesting tend to apply to a wide audience of programmers. Maybe even people who don't know they're programmers yet. To steal a phrase from the talented Rich Skrenta, I blog to help others and also to learn. As it turns out both are aided by getting folks to actually read the stuff.
But that's not the complete story. I'd be lying if I didn't admit that there's an element of selfishness at work here. I love computers and programming. I love it so much it borders on obsession. When I saw the movie Into The Wild, I was transfixed by the final note written into the margins of Dr. Zhivago by a doomed Christopher McCandless: "Happiness only real when shared."
I realized, that's it. That's it exactly. That is what is so intensely satisfying about writing here. My happiness only becomes real when I share it with all of you.
Posted by Jeff Atwood
Jeff: Where is your mirror? Who cares what other bloggers, who don't have as popular site as yours, thinks?
Keep up the good work and coverage of our industry!
"My happiness only becomes real when I share it with all of you."
Aww. You give me the warm fuzzies Jeff.
(First and probably last post)
Great blog: interesting, stimulating, enjoy it. Thanks.
Now get back to writing some more.
I realize I'm always the surly curmudgeon here but anyone who regards this blog as "limb-gnawing tedium" has no business ever trying to program. They have already missed the boat. Code is for people and as you point out: if it is not shared it cannot be enjoyed. Thanks for all the fish, Jeff!
As my job has shifted to programming full time for the web, I really appreciate your Coding Horror blog. Not only do I learn a lot, I also enjoy sharing posts with co-workers when we are trying to decide how to approach classic programming or process challenges. Thank you!
I stumbled across WTF (by which ever name it was using at that point) about the same time as Coding Horror. I enjoy it as well, but as others have noted, it's quite the different sort of blog. Amusing, and a test of my understanding of programming, but not the sort of analysis that would make me want to fundamentally assess how we practice programming.
Back to the code!
Damned critics. What do they know?
I have your widget on my iGoogle page, mentioned you in my own blog a couple of times and Coding Horror is an outstanding blog.
I don't read every post - I skim the first couple of paragraphs to see if it's a post relevant or entertaining to me. I can't fault you on your written style or content, even if sometimes the things you talk about are not of personal / professional interest.
Clearly the critique offered is not worth anywhere near as much as all the appreciative comments you receive day in, day out, but still it's always worth adding another one, just in case you're in any doubt about how popular and successful this blog is.
What I love is how when I finish reading one of your posts, I have about five other links queued to read...and when I down one of those, five more have popped up.
Your blog is a veritable hydra. But thank you very much for sharing this with us. It takes a lot to attain humility and instead of laughing at others' "Coding Horrors" or "WTF" realizing that it's more important to know what you don't know than what you know.
The articles here are a really good read, im no software delevloper or even a programmer for that matter an i still find the content here interesting,
**get the google widget on your iGoogle page, helps you know when there are new posts and what they are.
"You're an amateur developer until you realize that everything you write sucks."
Cool. And to think I misinterpreted it as sucking instead of outgrowing being an amateur.
This blog is excellent. Even spanish people reads your blog. Like me ;)
Este blog es excelente. Incluso personas de habla hispana leen tu blog. Como yo ;)
Keep it with the good work. And sorry for my bad english.
Continua con el buen trabajo. Y pido disculpas por mi ingles malo.
Thanks for sharing... what I read here makes me happy, so mission accomplished! =)
My life changed the moment I read Design Patterns
IT is a good idea, I’ve followed you! Keep us updated the best deals!
One of the three vitrues of a good programmer, at least in PERL, is laziness. However, once code is written, it will have to be maintained eventually, just to keep track of new compilers and new operating systems. That sounds contradictory to me.
To paraphrase another: blessed are the poor in programming skill, for theirs shall be the kingdom of bug-free code.
Of course, _my_ code is all excellent first time! (I wish)
Wait, there aren't any hilarious DailyWTF type articles?
That's four years as a regular reader of this blog wasted.
Long timer reader of your blog, first time commenter.
I've enjoyed nearly every blog posting I've read on Coding Horror. I'm all too often laughing or crying along with what you have to say. So in other words, you've hit a chord with me.
The water from your well never fully quenches my thirst, I have to keep coming back for me.
Thanks keep up the good work.
A great post.
And I agree with you: until the day you realize how horrible your code is, you are not yet a professional developer.
I realized how awful my code was, not by looking at my own code though, but by maintaining and reading other people's code. I guess it was easier to see the speck inside other's eyes rather than noticing the logs that are inside my eyes :)
I've been programming for about thirty years. The terrain has changed significantly over that time. My first programming language was PL/1, which I believe stood for "programming language one", ironically enough. It was a big shift moving from mainframes to PCs, then to client/server apps, GUI applications, and then to web development. I try to maintain relevant skills, and after 30 years, I still have not gotten to the bottom of the pile of trade press books next to my reading chair. (All you programming geeks keep developing new technologies that I have to learn.) The more I learn, the more I realize how much I have to learn.
This blog is a great help in keeping my finger on the pulse of the programming community. For me, it represents the "water cooler conversations" that I wish we had time for at the office -- a place to hang out and mull over all variety of programming-related topics.
Jeff, I relate to and understand what you say when you point out that "coding horror" is a situation that we all create. Some of the scariest code I've seen is stuff I've written. Sometimes my horror is complete the moment the code leaves my fingertips. Other times, it requires revisiting the code again months or years later to truly comprehend the horror of it all.
I've come to realize that even when my code looks good to me today, I'll learn something tomorrow that will make me realize there was a better way. And like many programmers, I seem to have developed a belief that I deserve an opportunity to write better code, and could have done so if not for deadlines and a lack of hours in a day. That's why I'm always desperate to get ahead of the learning curve. Unfortunately, after thirty years I've come to realize that such "programmer nirvana" is a bit like the horizon; it's always within sight but never within reach.
I enjoy the humble tone of your postings, and I've learned a ton from tuning in every morning. Thanks, Jeff!
My only disappointment in you blog comes when I check for new posts only to be disappointed. I love your blog in fact I read it more often then my own... in fact I cant remember the last time I even wrote for my blog...
I'm new to software development blogging. "My happiness only becomes real when I share it with all of you." Now I was enlightened. This is exactly what I feel. Thanks for helping me to find what I really want. :)