I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

May 29, 2008

Strong Opinions, Weakly Held

I seldom pause to answer criticism of my blog. If I did, I'd have time for little else in the course of the day, and no time for constructive work. But occasionally I'll encounter a particularly well written critique that gives me pause, such as Alastair Rankine's Blogging Horror. Since I feel that Alastair wrote it out of genuine good will, and that his criticisms are sincerely set forth, I want to try to answer his statement in what I hope will be patient and reasonable terms.

However, Coding Horror has become so popular that Atwood has quit his day job and struck out on his own. To my mind, this raises the bar somewhat. Professional bloggers deserve more scrutiny than dabblers, just as in many other fields.

Not only has Atwood has gone pro with his blog, but has recently started a venture called stackoverflow to collate accepted wisdom from the software development community. It is early days, but from what I can gather there is still likely to be Atwood's editorial hand in the output, despite intentions of adopting community generated content.

In other words, Atwood seems to be setting himself up as an authority figure on software development and, well, I have some issues with this.

I'd like to first answer this with two slides from my January CUSEC presentation, presented here verbatim with no modifications.

What have I really done? Don't own a company. Didn't participate in an important startup. Didn't author a framework or standard. Haven't made a lot of money. Nothing.

There is absolutely no reason any of you should listen to me. But somehow, I have 75,000 RSS subscribers and over 50,000 pageviews/day. It's a mystery to me, too.

Authority in our field is a strange thing. Perceived authority is stranger still.

I've always thought of myself as nothing more than a rank amateur seeking enlightenment. This blog is my attempt to invite others along for the journey. It has become a rather popular journey along the way, which has subtly altered the nature of the journey and the way I approach it, but the goal remains the same.

It troubles me greatly to hear that people see me as an expert or an authority, and not a fellow amateur:

When I got back to Boston I went to the library and discovered a book by Kimura on the subject, and much to my disappointment, all of our "discoveries" were covered in the first few pages. When I called back and told Richard what I had found, he was elated. "Hey, we got it right!" he said. "Not bad for amateurs."

In retrospect I realize that in almost everything that we worked on together, we were both amateurs. In digital physics, neural networks, even parallel computing, we never really knew what we were doing. But the things that we studied were so new that no one else knew exactly what they were doing either. It was amateurs who made the progress.

These people are industry giants, so any comparison between them and myself is accidental. It's the overall point they're making that I want to call your attention to: software is an incredibly young discipline. Everything in software is so new and so frequently being reinvented that almost nobody really knows what they are doing. It is amateurs who make all the progress.

When it comes to software development, if you profess expertise, if you pitch yourself as an authority, you're either lying to us, or lying to yourself. In our heart of hearts, we know: the real progress is made by the amateurs. They're so busy living software they don't usually have time to pontificate at length about the breadth of their legendary expertise. If I've learned anything in my career, it is that approaching software development as an expert, as someone who has already discovered everything there is to know about a given topic, is the one surest way to fail.

Experts are, if anything, more suspect than the amateurs, because they're less honest. Regardless, you absolutely should question everything I write here, in the same way you question everything you've ever read online -- or anywhere else for that matter. Your own research and data should trump any claims you read from anyone, no matter how much of an authority or expert you, I, Google, or the general community at large may believe them to be.

But if, as Alastair correctly points out, I now derive a significant part of my income from blogging, doesn't that make me a professional blogger by definition? I thought Dave Winer had a great explanation that I'll gladly co-opt:

Now if you ask me -- there never was such a thing as a pro blogger. It's a contradiction in terms. It's like calling someone a professional amateur. It's like salty orange juice, a drink whose taste is derived from its acidity. Blogging is an amateur activity. It's users writing about what they do, not professionals writing about what users do.

What Dave's describing here is the difference between a journalist writing about programmers versus a programmer writing about programming. Blogging does not mean observing from the outside; it means participation. I like to think what I do at Coding Horror is a byproduct of shipping software, not some sort of bizarre sociological experiment I'm conducting. Although sometimes, I'll admit, it does feel that way. I am a generalist with a decidedly lowbrow coding background, so I can be a little scatterbrained. But directly or indirectly, everything I've ever written on this blog is a side-effect of my deep, lifelong love of my ongoing work as a programmer.

You could argue that I'm a better writer than programmer. Perhaps that's true. I'll be the first to tell you that I am not an exceptional programmer. A competent programmer, yes. Always. On a good day, perhaps even a decent programmer. But I don't kid myself, either. I'll never be one of the best. But I have an ace up my sleeve that most don't: what I lack in talent, I make up in intensity.

Which means, mathematically speaking, I must be pretty damn intense.

The bite-sized morsels posted to Coding Horror are all very well for bite-sized topics. But things can often go awry if the topic is too complex to be distilled down easily. Oversimplification often ensues, as in the following examples, all recent:
  • An attempted critique of XML ...
  • A similar "it's-too-hard" reaction seems to be at the heart of an article on humane markup languages ...
  • Admittedly Model-View-Controller is an increasingly vague concept these days, but I just couldn't buy Atwood's example of it ...
  • A comment that software forking is "the very embodiment of freedom zero" demonstrates that Atwood has no idea what freedom zero is ...

Common to all of these are a superficial understanding of the topic at hand. In short, Atwood just isn't credible.

Maybe a little too intense, sometimes. It's almost like I'm trying to overcompensate for something, but I can't imagine what that could be.

Rex Kwon Do

I'm Rex, founder of the Rex Kwon Do self-defense system! After one week with me in my dojo, you'll be prepared to defend yourself with the STRENGTH of a grizzly, the reflexes of a PUMA, and the wisdom of a MAN.

Like Rex of Rex Kwon Do, perhaps I'm relying a bit too heavily on the "Smackdown" learning model here in my dojo. I use it because I personally find it incredibly effective, for all the reasons that Kathy Sierra outlines.

But I worry that, for some, it's getting in the way, that it is damaging the credibility of the underlying message. Instead of arriving at the desired learning part, all they're getting is the smackdown. I certainly hope my posts are read and understood as slightly more nuanced than "Everything About PHP Sucks", "Everything About XML Sucks", or my personal favorite, "Everything About (your favorite technology) Sucks. Seriously."

I suppose it's also an issue of personal style. To me, writing without a strong voice, writing filled with second guessing and disclaimers, is tedious and difficult to slog through. I go out of my way to write in a strong voice because it's more effective. But whenever I post in a strong voice, it is also an implied invitation to a discussion, a discussion where I often change my opinion and invariably learn a great deal about the topic at hand. I believe in the principle of strong opinions, weakly held:

A couple years ago, I was talking the Institute's Bob Johansen about wisdom, and he explained that -- to deal with an uncertain future and still move forward – they advise people to have "strong opinions, which are weakly held." They've been giving this advice for years, and I understand that it was first developed by [former] Institute Director Paul Saffo. Bob explained that weak opinions are problematic because people aren't inspired to develop the best arguments possible for them, or to put forth the energy required to test them. Bob explained that it was just as important, however, to not be too attached to what you believe because, otherwise, it undermines your ability to "see" and "hear" evidence that clashes with your opinions. This is what psychologists sometimes call the problem of "confirmation bias."

So when you read one of my posts and hear this:

My name is Rex, and if you study with my eight-week program you will learn a system of self defense that I developed over two seasons of fighting in the Octagon. It's called... Rex Kwon Do!

Please consider it a strong opinion weakly held, a mock fight between fellow amateurs of equal stature, held in an Octagon where everyone retains their sense of humor, has an open mind, and enjoys a spirited debate where everyone ultimately learns something.

Now bow to your sensei! Bow to your sensei!

Posted by Jeff Atwood    View blog reactions
« Designing For Evil
Revisiting the Black Sunday Hack »
Comments

I haven't read the whole critique, but so far I've agreed with everything he said, with the exception of the part you boldfaced. I don't really think you are trying to set yourself up as some kind of super-expert. At least not any more than you did in the past when you had a day job.

I have to say that its rare I don't have some kind of major issue with something you said on a topic I know anything about. That does not bode well for the topics I *don't* know anything about.

However, the comment section fixes that nicely. If he's missed the fact that the comments are typically the best part of any entry here, I think he's missed the entire point of this blog.

...at least that's the way I see it.

T.E.D. on May 30, 2008 6:15 AM

The "strong opinions, which are weakly held" position is fantastice. Words to live by... at least until some better philosophy comes along.

Eric G on May 30, 2008 6:20 AM

We like the way you write.
We like the way you organize your thoughts.

Keep on blogging. I will mourn the day you give it up (as Joel did).

Charles on May 30, 2008 6:20 AM

Nice said.

Even if some people dislike you in a loud way, that 120k on the Feedburner icon can't be that wrong when it comes to you having read-worthy posts :)

guruz on May 30, 2008 6:22 AM

I fail to understand the criticism to be honest. Surely what you do is no different from any other blogger. I don't see it any different to me teaching somebody junior to me.

Paul on May 30, 2008 6:25 AM

Jeff, well said.

Personally I usually disagree with most of your "Everything About (your favorite technology) Sucks. Seriously." posts, but that's exactly why I read this site. I'm a Java developer you're a .Net developer, this by itself makes us sworn enemies, but because of that your posts offer a different view than I can get from my professional Java peers. The discussion on this site is incredible, and the "strong opinion weekly held" is exactly why. Keep up the great work!

Eric DeLabar on May 30, 2008 6:34 AM

I really can't see any reason for writing a "critique" like that without it being motivated by jealousy. He can claim what he wants but it's hard to justify it any other way. He's trying to "enlighten" people to your blogs true value.

Seriously, not learning C has given him a serious hit to your credibility? So nobody can have a credible opinion about programming unless they have learned C. That sounds extremely arrogant, short sighted, and something i'd expect to hear from a "dinosaur" of the industry. Any credibility he would have had with me just jumped out the window with that statement. I don't tolerate arrogant dinosaurs.

It may be fair to say that a so called expert programmer should have C in his tool kit, however an expertly skilled programmer and a programmer with an opinion worth listening to are definitely NOT one and the same.

I found the comment that you haven't had code snippets posted on your blog to be completely irrelevant as well. I don't come to your blog to read code snippets. I come to read you opinion on things like best practices, new technologies, old technologies etc.

I think he is missing the point that a popular blog must be informative AND entertaining. I love this blog because you write about topics that I find very interesting, and I find your writing style very entertaining.

Regardless, I think you just did his blog the biggest favor it's likely ever been done, his readership i'm sure will take at least a huge temporary jump :)

Chris on May 30, 2008 6:43 AM

Jeff,

The reason I read your blog is that you discuss broader issues around programming and you write well. Not enough programmers think about broader issues and of those that do, few can articulate their thoughts clearly. I imagine you're a great programmer, though that's not why I read your blog. I read because you have good ideas.

John on May 30, 2008 6:44 AM

OK. I went and read his whole critique (and another he linked to).

Those 4 examples he provided where he thinks you blew it? Two of them happen to be a couple of the rare areas where I agreed with you completely.

If he's drunk the cool-aid on XML and markdown, fine. But those are both eminently arguable points. If he demands that bloggers he reads agreee with him on arguable points, he's eventually going to write an article like this one about every blog.

One of the remaining two happens to be one of those topics I know nothing. Throwing that one out, that doesn't add up to a very good average for him.

On the Free Software post, yeah you kinda blew it. But you aren't an expert on Free Software, and don't pretend to be. As a Free Software developer (and fan), the meer fact that you are thinking about it I take as a positive thing. There's always the comment section to clear the record. Any chance we have to enlighten someone who is actually going to listen tickles us pink. :-)

T.E.D. on May 30, 2008 6:45 AM

What I truly dislike about you going pro, is that instead of increasing the volume of posts, you have increased the length of the posts.

I really liked the way you were able to present the essence of a subject in a smaller post, now I have to set aside time to read your posts.

andreas

andemann on May 30, 2008 6:45 AM

Hey Jeff: I may disagree with some things you write, but you are always worth reading and I find your stuff thought-provoking. Judging by your writing, you are a smart, thoughtful person with opinions on a variety of subject.

One thing I do admire is your courage in standing up and exposing yourself to criticism. That's what happens to popular blogs. I don't care if you are right or wrong, I can judge that for myself. What matters is that you have something to say. I _do_ care when carping and non-constructive criticism discourages genuine debate.

It actually doesn't matter if you "learned C" or not. Since I graduated in 1980 I have never "learned" a programming language systematically - it's all been learning by doing and learning by example then discovering the more esoteric stuff. (Most of my collection of several hundred books about programming have only been partly read by me. Sometimes skimmed though, sometimes dropped after 100 pages.)

It is arguable that I am a better maintenance programmer because of it. That may not be a heroic role, but refactoring is what it is called now and it is almost respectable. I can certainly grok code faster than anyone I know. I think I can pick up new tools, languages and techniques quickly because I am not socked so deeply into the massive amount of library code that most languages develop over time.

There is still a role for the generic "programmer" as a smart person with ideas. Programming is about communication and ideas, isn't it? We are communicating with the machine and to those that follow us.

In short, I think the guy's blog post was a successful troll :-)

Sue W on May 30, 2008 6:51 AM

I agree, I'm still only a student with my minor understanding of c++ and yet I've learned some much from this blog. I've not learned specifics about programming langugues but actually I've learned more about the finished product of programming, like all other professions there is more to programming then writing code, and that is something i think Coding Horror stands for. That said "Coding Horror" is a bit of miss leading title given the lack of actual Horrors (queue some clever remark about how the site is coded). But then a Title is what you make of it and here I think Coding Horrors applies not to bad code but to bad Programming and bad Programming practise, those mistakes that are made after all the codes been put together. Like the recent examples of poor bug reporting etc.

Keep it up Jeff

Duggy on May 30, 2008 6:54 AM

I would like start by saying that I whole-heartly enjoy your blog. I pretty much read your any of your new post whenever I see it on my RSS feed in opera. That being said I don't agree that you made yourself out to be a expert on any field, from everything that I see your doing exactly what you said you meant to do. For instance your post on Open ID opened my eyes to a new login procedure that I didn't know existed. I now know that I have another option other than membership and roles when I'm creating a side project (The company that I work for makes insurance/finance applications so I can't trust OpenID for something like paying your insurance). I find most of your post insightful and if anything opens my curiosity to something that I might've not learned about. I would also agree with the above post that the comments are a big reason to read your blog.

Alfonso on May 30, 2008 6:55 AM

"Strong opinions, weakly held" echoes Nietzsche:

"A common error: having the courage of one's convictions. Having the courage for an attack on one's convictions is truly noble." (more-or-less)

Adam on May 30, 2008 6:56 AM

You don’t know C?!?! GASP!!! THE (CODING) HORROR!!! Seriously… that can be remedied in a couple of months. But why? I know C, but haven’t touched it in years and don’t care to. Just like I don’t use a slide rule, either.

Coding Horror Fan

PaulG. on May 30, 2008 6:56 AM

I read both posts, and also I'm reading your blog for years now. Personally I fed up with heavy tech blogs and looking for blogs which talking about more theoretical stuff, basics etc. I've got lots of disagreement with your posts but this does not invalidate your awesome posts, to be hones not even invalidate posts that I disagree.

In this stage it doesn't matter you are Dr. Knuth or a javascript developer in my high school if you can give me an idea, explain your enlightening opinions clearly that's more than enough.

As someone else already said "Keep bloggin' mate, you are doing it so goood!"

JT on May 30, 2008 6:58 AM

NEWS FLASH! Jeff is human!

Did Alastair just figured out that you're human? Understandably he's upset that he didn't figure this out earlier. Perhaps he's jealous of your success because it could have been him.

If Alastair read (re-read) Personal Character (Chapter 33) of Code Complete I think he'd get "it" - it's about being part of the conversation, promoting discussion, encouraging ongoing personal development, invoking curiosity, and being intellectually honest. Coding Horror covers these bases. If Alastair's blog post isn't a troll, then we can expect him to put his money where his mouth is and take his blogging to the next level - a level that gets "it", a caliber similar to this site.

I find the smack down model effective. This model might upset the odd reader, but when it does it often results in the reader doing more research as they attempt to counter your claims. It's a win-win, people doing more research for themselves contributes to a more enlightened world.

Adam Kahtava on May 30, 2008 6:58 AM

Great post, Jeff.

Being hated by the masses is a true sign that you've made it. Unleash your inner Rex!!

Aston on May 30, 2008 6:58 AM

It probably hasn't sunck in yet, but you certainly have gone professional - "engaged in an activity as a paid occupation rather than as an amateur". As such, perhaps some people expect you to raise your game.

Despite your poor understanding of MVC, Open-Source, and certain programming languages (Java) there is still plenty in your blogs for me to enjoy.

By the way, when I heard you and Joel struggling to work out how OpenID was to make money, I thought of the quote on the OpenId site itself:

"Nobody’s planning on making any money from this...It benefits the community as a whole..."

Jo on May 30, 2008 6:59 AM

Yeah it was definately a traffic bait post.

It might have been a mistake to post it here and give him the traffic. :-)

Ryan C Smith on May 30, 2008 7:04 AM

You might also point out that 75,000 subscribers does not equate to 75,000 disciples who agree with everything you say; only 75,000 people who are interesting in hearing what you say. :-)

Konrad on May 30, 2008 7:06 AM

You have to admit, Jeff, that you *have* reached a certain level of popularity - and with that popularity, inevitably, comes disagreement. (Just be glad you haven't been slashdottted yet!)

I guess I'm just amazed that some people - other programmers, for goodness sakes! - can't understand that this blog is about *your* opinions, and that what you write is not the be-all and end-all of discussion on the topic. Just because you are popular does not necessarily make you authoritative (and people smart enough to read and enjoy your blog undoubtedly already know this). I mean, it's not like you're advocating the One True Brace Style or anything... ;-)

People just need to learn to relax. If they find your posts insightful (as I do), they can learn from your posts and take something away with them and be happy. If they disagree or don't like your posts, all they have to do is ignore them. (Or, if they're feeling brave, write their own blog posts on the subject advocating what they feel is the correct view.) It really is that simple.

Oh, and I agree with Sue W - that guy's post does seem to fit the model of "successful troll." ;-)

Keithius on May 30, 2008 7:07 AM

I really enjoy this philosophy. I too am a member of the "strong opinions weakly held" school of thought, although I didn't have nearly so good a name for it until today. The people whom I enjoy working with the most are the ones who are similarly eager to test out their ideas in the ring, and challenge my overly bold assertions; we challenge each other and advance together.

Jonathan on May 30, 2008 7:09 AM

When it comes down to it: SUCCESSFUL programmers are ALL AMATEURS.

You have to be. If you spend enough time in one area to become an expert, you are focusing on old technology, and are not as useful.

If you are a programmer and call yourself an expert, you are either a over inflating your own experience, or need to start digging into new technology and become an useful amateur again.

As Seth Godin says: Small is the new big. I would say that Amateur is the new Professional. Old school guys will get over it eventually (or die a slow death trying to fight it).

Jeff Davis on May 30, 2008 7:13 AM

"Everything in software is so new and so frequently being reinvented that almost nobody really knows what they are doing. It is amateurs who make all the progress."
Then you should #define 'Expert' and 'Amateur' first, because if I look up both terms in a dictionary, I don't see myself or any other professional software engineer as an amateur. Or did you mean 'amateur writer/teacher' ? Then I agree, because software engineers aren't teachers nor writers. like writers aren't software engineers, as there's no time left to do both.

However how you wrote it, it seems you meant we're all a bunch of amateurs doing things we hardly understand. Well... it of course sounds very arrogant, but I have a feeling I'm definitely understanding what the **** I'm doing when I write my code and design my software :)

Frans Bouma on May 30, 2008 7:15 AM

Jeff: I've been happily reading for 2 years now, but if I hear you echo your recent criticisms that "real" programmers started coding in xx one more time, then I'm never coming back.

I'm a programmer that started with C then C++ then VB.NET then C#... and I'm a hideous programmer. Your critics are obviously wrong.

Don't trash talk yourself. It's stupid and it's not constructive.

Steve-O on May 30, 2008 7:16 AM

By the way, since we've determined that this blog is useful, can we talk about something other than this blog? ;)

Jeff Davis on May 30, 2008 7:19 AM

"When it comes to software development, if you profess expertise, if you pitch yourself as an authority, you're either lying to us, or lying to yourself. In our heart of hearts, we know: the real progress is made by the amateurs. They're so busy living software they don't usually have time to pontificate at length about the breadth of their legendary expertise. If I've learned anything in my career, it is that approaching software development as an expert, as someone who has already discovered everything there is to know about a given topic, is the one surest way to fail."

Amen.

Just keep doing what you're doing. Your writing makes it patently clear where you're coming from, and it is what keeps me (and apparently 100,000+ other people) coming back for more.

RobW on May 30, 2008 7:22 AM

This is what I posted on Alistair's website in the comments section. I think nobody said it before although seems obvious to me:
"
Got here from the Coding Horror blog. Everybody said a lot already so I just will add one note. From time to time, somebody starts to do something for fun (write, create a product/service/program, you name it) and then people like it and pick it up. The creator realizes whatever he created is something people want. So he creates a business on it. Should he now change? I would say no. Whatever made one successful one should continue to do. That is the proven business model. That will work. Change it and you got a new business which might succeed, might not.
So, for Atwood I say kudos for creating something what he can base a business on and being able to just keep doing the same. "Raising the bar" as you said you expect him to do might just mean he would lose all his current readership. I am suprised you didn't get that, it seems obvious to me...
"

Attila on May 30, 2008 7:25 AM

I just figured all the stackoverflow.com references were to artificially drive up the search engine rankings by the referrals coming from this frequently viewed blog. I say artificially because as the site stands now, there is no content to be indexed.

As far as setting yourself up as an expert you do come off that way sometimes, regardless of your intent or your claimed intent. Perception perception perception.

I read your blog for the technical posts and ignore the "soft" touchy feely behavioral based ones completely. But that and 5 bucks will get you a coffee at starbucks. As long as your happy, keep bangin' 'em out bro!

JohnM on May 30, 2008 7:31 AM

Jeff, love the blog. I think you're on the right track.

However, I won't bow to you unless you can kick my butt in the Octagon. Bring it, buddy!

A. Lloyd Flanagan on May 30, 2008 7:35 AM

I like your posts much of the time, it's your fan-base that annoys me!

Steve on May 30, 2008 7:38 AM

The critique of your blog is laughable at some points and strong in others.

Just keep doing what you do and I'll keep reading.

Sean on May 30, 2008 7:43 AM

There's an old adage that an ignorant person thinks they know everything but the wise person realizes they know nothing.

And now it's backup by at least one scientific study:

http://www.sfgate.com/cgi-bin/article.cgi?file=/chronicle/archive/2000/01/18/MN73840.DTL

Mitur Binesderty on May 30, 2008 7:44 AM

I hate to disagree but I think that Jeff /is/ an authority on programming, and that this blog is more than ample evidence that this is not necessarily a bad thing.

Certainly he is not a perfect expert, but noone is.

The content of the blogs is more evidence than any number of owned companies or previous projects worked on in my opinion. In fact none of these later things necessarily imply any expertise in the same way as the content of these blogs do, as they directly evidence his expertise.

The desire to achieve the things mentioned is mostly independent of the desire to be a skilled programmer. High profile projects and standards are great things to be a part of, but just like everything else there are probably 10 times as many low grade code monkeys involved than skilled lead developers (who need not be very skilled anyway). As for making a lot of money... all that evidences is greed in my opinion, as I'm sure many of the OSS supporters will agree.

What speaks to me more is that Jeff feels so passionately about programming that he feels he must share his views publicly... and while this may be vanity, I do not believe that is his primary motivation, or else what we would see on coding horror would be a ton of self agrandising posts.

Of course, I have never owned a software company and have never held a job in the software industry. Therefore any of my opinions or logic can be immediately discarded without rationalisation, at least that is the impression that I get most of the time.

Don't get me wrong though... I am a very bad programmer. Magic numbers and single letter variable names abound. Not to mention all of the permanently unfinished projects. :)

Jheriko on May 30, 2008 7:45 AM

Why do I read this blog? It's not because you're an expert, or infallible. Heck, I think you are wrong about 50% of the time anyways, which is fine. It's more that you cover a wide range of little topics that gets me thinking, and even if I disagree with you, I'm better off having thought about why I disagree with you. You are a stimulus, not an expert. And that's a good thing to have—it gets the brain working, on a variety of topics.

Shmork on May 30, 2008 7:47 AM

I'll reiterate what others have said here.

I don't always agree with you, but you present your case with reason, you have interesting insights even when I don't agree with your premise, and in general, I find the discussion on your blog interesting and worth reading.

I don't see how he can say you're professing to be some kind of expert, you just discuss things as they come to you, and if thinking about your profession out loud is wrong, then I guess he isn't a very good programmer either. =)

Ranger Rick on May 30, 2008 7:50 AM

This is much better Jeff but, by concentrating on blogging and realising that you have garnered such a large audience, this must make any of your opinions or statements much more considered. I appreciate the dry humour and occasional cheeky swipe at something, but there are too many people reading your articles who could mistake the manner intended or, worse, adopt it as their own opinion entirely! Take more care to research thoroughly before bringing out any articles similar to the XML or PHP ones again! Your takes on development philosophies are more interesting and thought-provoking.

Daz on May 30, 2008 8:05 AM

Well, now that the elephant is in the room. How about some posts that include a bit of code that you are writing for StackOverflow?

Phil on May 30, 2008 8:12 AM

"To avoid criticism do nothing, say nothing, be nothing."
Elbert Hubbard (1856 - 1915)

Keep up the good work!

Monte on May 30, 2008 8:14 AM

I think the idea that learning C should be required is a poor one. Not that I disagree with what I think is its essence: don't forget the fundamentals of computing.

Beyond variables or conditions, I think of the fundamentals being disk storage, memory, processing power, and device communication. There's a strong desire to abstract some or all of this away in high-level languages, which is why I think people romanticize systems-programming languages like C. But at the end of the day, you do still need to deal with these fundamentals, even in high-level languages. Your .NET program can still leak memory, still have file-locking issues, still spike the CPU.

In my opinion, ignore all the lower level languages if you wish. I would suggest that you don't forget you're running programs on real computers, not in abstract black-boxes where everything works just swell. I don't mean that pointedly to you, Jeff, because I don't think you have forgotten, but I think it's a necessary reminder with some modern languages.

Peter on May 30, 2008 8:16 AM

I have to say I like the fact there is very little actual code. I have dozens of other blogs that I read for insights into the more specifics of code, but Coding Horror manages to talk more about the ecosystem around the code rather than the specifics.

Heck, even my girlfriend enjoys and gets something from half the posts here, and she doesn't program (except for a few weeks when I tried to teach her).

[ICR] on May 30, 2008 8:17 AM


How is it that people gain trust and influence as experts without ever concretely proving they are one, by programming, by starting businesses, by really doing what they are expert at?

It's simple really. They are communication experts. Gaining popularity is all about visibility and knowing how to communicate. It has very little to do with technical prowess.

You see this happening at work all the time. Sometimes you meet a fellow, who just climbs the ladder like there is nothing stopping him. Hes not climbing because he's an expert programmer, but because he's an expert politician and communicator.

If you are good at communications and politics, you should be helping the 'real experts' to get their voice heard. If you can be the catalyst to get the great thinking and points out in a way that can be understood, then that's what you should be doing.

I think Jeff is just doing that. And strangely enough, even many of the people we think are the experts, do very little concrete work themselves. They are just in a position to observe what people are doing and then making conclusions about the bigger picture.

Tero on May 30, 2008 8:18 AM

Of course having opinions make other people question you.

Reading an "opinion" blog is like "inviting the vampire in your house". It's an invitation to think "about" the post and "comment" about it.

Reading a "code" blog... well you "steal" the code (copy/paste say thank you) and comment when the guy screwed up.

Code blogs gets lots of traffic but few comments.
Opinion blogs gets lots of traffic and a dedicated "reading/commenting" fan base (read : code monkeys with brains).

And by the way... the fun part about you Jeff is that you "share".

Oh boy do you share say thank you.

Mathieu Paul Le Clerc on May 30, 2008 8:20 AM

The post started out well enough, but...

>In our heart of hearts, we know: the real
>progress is made by the amateurs.

I have no idea why you would think that, and your post doesn't elaborate. In computer science, *applications* are made by amateurs (and note that these apps often lead to progress *outside* of comp sci, but seldomly "inside" of it). Progress in comp sci, however, is made by the pros, by the people who spend their lives researching this stuff.


>If I've learned anything in my career,
>it is that approaching software
>development as an expert, as someone who
>has already discovered everything there
>is to know about a given topic, is the
>one surest way to fail.

Not sure if you're joking. Your description of a person who "has already discovered everything" has nothing to do with the definition of an expert. I studied computer science at ETHZ and had classes by Niklaus Wirth and Bertrand Meyer. I never got the impression that they thought - even remotely - that they had "already discovered everything," yet they are clearly "programming experts" in the best, purest sense of the word.


>Experts are, if anything, more suspect
>than the amateurs, because they're less
>honest.

So somebody complains that it seems you don't know that much about the topic of your blog, and your reply is that yes, you don't know very much, but the people who do know very much are more suspect because they're less honest, the implication being that really, it's good to know little. Wha&#8253;

I read your blog because I find it entertaining, and because I find you likable (simpatico is the proper term, I guess) even though I most often disagree with the points you're making (it's useful as some kind of compass, I guess - agreeing with you serves as a strong indicator that I didn't fully think through something ;-), but I must say that I found this particular post quite hard to swallow; almost insulting, even.

LKM on May 30, 2008 8:22 AM

Fuck Alastair, Jeff Rules!

Dave on May 30, 2008 8:24 AM

OK, since everyone here seems to be supporting you, I think a devil's advocate voice will be useful too. I think you're going too far from the thing you know about. If you do a serious research and provide a "fresh view" on some topic - that's really helpful.

But sometimes you just see something and mention it. There are 10 paragraphs in such posts, many sentences, and almost no added value. I know that I will find a lot value in the comments, and that this is why you write those posts - just to mention something and attract reactions, but really reading you talking in a childish style about some technology (if it's a thing I know better) makes you less credible when you're writing about stuff I don't know (it makes me wonder - if he really knows what he's writing or just guessing *again*?)

If you've built something, stuck on some problem - do write. But please leave some space for others, you don't have to blog about everything that exists. I know you have to keep the pageviews high but the medium value of your posts is declining, and that's not a good thing.

I am not jealous, not even deeply in my heart. I will keep reading your blog - it's worth it as hell.

Jakub "Kocureq" Anderwald on May 30, 2008 8:25 AM

Jeff, well put. I always enjoy reading your blog because of the challenge-response style you use and the reflection it invokes in me. I may not always agree with your opinions but they get me to think about my own, which is the whole point.

In a way, you are sometimes similar to Gordon Ramsey. If you've ever watched the british version of Ramsay's Kitchen Nightmares you'll know that when he comes in to a failing restaurant he never tells anyone what they're doing right, he only tells them what they're doing wrong. He does this for two reasons. First, because the problem isn't what they are doing right. Second, because it usually 'puts a rocket up their ass', to quote the chef himself, and gets them thinking.

<<bows to his sensei>>

Arcond on May 30, 2008 8:26 AM

You still suck. ;)

You should get Jon to make you another badge like your "Works on my machine" one, that says "I can change my mind, can you?" and put that up as a disclaimer on your blog.

Interestingly enough, I find such a simple skill is sorely lacking in this world.

Haacked on May 30, 2008 8:32 AM

One thing that Alastair Rankine's Blogging Horror mentions is that Jeff does not include any code in this blog. As a big fan of this blog this used to trouble me. Then one day I noticed that my very favorite submission on codeproject.com, the one dealing with exception handling was written by Jeff. This is a module that I always include (slightly modified for my purposes) in all my winforms applications. My favorite blogger and my favorite code turned out to be from the same source. This certainly did more for my respect for Jeff then any code inline in the blog would have done.

Thanks Jeff for your blog (and for your exception handling routine)

Martin Ritchie on May 30, 2008 8:36 AM

This quote from Randy Pausch - Last Lecture:

"And the other Jim Graham story I have is there was one practice where he just rode me all practice. You’re doing this wrong, you’re doing this wrong, go back and do it again, you owe me, you’re doing push-ups after practice. And when it was all over, one of the other assistant coaches came over and said, yeah, Coach Graham rode you pretty hard, didn’t he? I said, yeah. He said, that’s a good thing. He said, when you’re screwing up and nobody’s saying anything to you anymore, that means they gave up. And that’s a lesson that stuck with me my whole life. Is that when you see yourself doing something badly and nobody’s bothering to tell you anymore, that’s a very bad place to be. Your critics are your ones telling you they still love you and care."

http://www.youtube.com/watch?v=ji5_MqicxSo

Geoff Dalgas on May 30, 2008 8:39 AM

Even if i am in deep disagreement with a blogger, alot of times they help me get a new view of things so i can actually learn something. We don't need this-is-what-you-like-men we need more you're-wrong-men.

Jeff, i might not consider you a pro, but i do have a great deal of respect for you, i hope that's enough.

Max on May 30, 2008 8:40 AM

Jeff: I am in East Africa, Arusha, Tanzania in my office corner where the internet is on and off, bandwidths are low, but hey, I always manage to read your blog and in one way or another, it helps me on my way to becoming a better programmer. I am one of those true fans, and will always be. Keep the wheels rolling. Forget about alastair. We are looking forward to stackoverflow. Cheers

Nick Masao on May 30, 2008 8:55 AM

It is nice to have some criticism, even if it could be construed as positive, but I'd say take the link to his site and article off. Unless you're down with "allstar's" flagellation. Which is the impression you're giving by even validating his complaints.

Keep up the good work and don't let the PC details bother you too much! :)

John G on May 30, 2008 8:56 AM

Jeff,

I will try to quote 'As Good as It Gets', I know this will sound cheesy, but:

"Jeff, you make me want to be a better programmer"

Haven't got that many geek friends who inspire me, we just hang out, play games, whatever. And currently I am doing most of the development alone, so reading your Blog is a huge inspiration. I don't always agree, but I do respect you for everything you write. You write a terrific Blog, you put up a great service and the community(the comments) here are just fantastic.

Peter Palludan on May 30, 2008 9:01 AM

The underlying assumption of this conversation is that there exists some measure of a minimum bar for "professionals" vs. "amateurs." I see no such line, having met professionals in many fields who fail to produce half the quality of amateurs in the same field.

One of the best aspects of blogging is that it is helping to destroy our arbitrary reverence of professionalism by giving all of us a forum for our opinions. Content can be judged on its quality, with the identity of the author serving only to give us guidance as to its credibility.

Overall I find Jeff's writing style to be both entertaining and thought provoking. To ask that he be *right* all the time is an impossible bar, even for professionals.

Matt Hempey on May 30, 2008 9:02 AM

FWIW, I keep reading because more often than not you write about interesting things in an interesting way, and I manage to learn something -- despite the fact that I disagree as often as I agree, and despite the fact that you often don't sufficiently understand what you're writing about.

rfunk on May 30, 2008 9:10 AM

I also agree that more code = bad. I see this blog as highlighting the human side of software. There are plenty of blogs full of code excerpts.

In addition I don't think implying a technology is "too hard" affects anyone's credibility. I consider the posts here as opinions of a common 'er competent programmer. There is no "I'm an expert, bow to me" tone so I don't understand the attack on credibility.

MattH on May 30, 2008 9:15 AM

Chuckle, that you're fortunate enough to have detractors at times means simply; you're doing something right. I belive Benjamin Franklin is attributed as saying: 'You can read about life, or you can live a life to read about'. Break-a-leg Jeff.

Michael S. Sanders on May 30, 2008 9:18 AM

Jeff Atwood,

This is the first blog ever that I felt is worth my time to read every day.

As a programmer, I am die-hard suspicious of everything new, social, and that seems like a fad.

I read other blogs now, but I think I gain the most from this one (most of the time).

So. Thanks.

Jeff Davis on May 30, 2008 9:26 AM

I personally love the fact that what you write is your opinion and your take on subjects. While I may not 100% agree with you all the time, I can always see where you're coming from and the new point of view can open up other avenues for learning.

The silly part of this criticism, as with most criticisms, is that someone is taking you too seriously. Your writing style, much like my own conversational style, is very strong. What people don't realize is that that doesn't mean you're firmly attached to your beliefs.

Kyle on May 30, 2008 9:31 AM

but, but, everything about PHP really *does* suck!

Sean T. McBeth on May 30, 2008 9:44 AM

Although I don't know you, I'm a little baffled at the criticism and comments added to the post. All I can imagine is that it boils down to jealousy. I think it is disingenuous to say that giving up your previous software development job to strike out on your own equals that you now think of yourself as a "professional." Others called you clearly a "generalist." However, I don't recall you ever saying you were something special. In fact your self-effacing blog posts more than indicate taht you are expressing ideas as a molecule for discussion to build, rather than expressing that your ideas should hold particular sway.
I am envious of your position (which I firmly hold that you earned) that you can make some form of living from blogging and do something for which you a lot of passion. That does not cloud my judgment about the posts you write. Some ideas I agree with, some I disagree with. That is the nature of things.
To not read your posts because they no longer meet the criteria for blog reading is also fine. However, I am sure that this is not the reason that they stopped reading. I have stopped reading Slashdot except for the headlines. I didn't try to convince others to stop reading because they "suck." Clearly they are jealous of your success, or else they would not have had reason to try to "prove" why they are right in not reading your blog. Don't let that mentality get to you.

Seraphim on May 30, 2008 9:53 AM

An update to Coding Horror is a moment of excitement that I enjoy in my feed reader. Its flavour has to be savoured before the other feeds.

The two most consistent characteristics, apart from excellent preparation and research, I observe in Jeff's work are his humility and his adherence to the birth rather than the end of discussion claim.

Yes, not everyone will find him near-perfect, but then well guided brickbats like 'Blogging Horror' can only help in calibrating the blog writing.

Bhaskar Vijay Singh on May 30, 2008 9:59 AM

In reading this, a logical discontinuity seemed to come up.

First you said you can't really respond to all criticism, and secondly you said you were an amateur seeking knowledge.

If you were really seeking knowledge, I'd love to see a summary after each set of comments saying what you had learned from the rest of the community.

Without some form of feedback like that, you really are setting up a one-way authoritative communication mechanism, at least from our point of view.

Also, remember that even people who reply negatively to a given post still read your post, considered it and felt strongly enough to reply, so that shouldn't be taken as a negative at all, but an attempt to do the same thing you are doing--create a community where we are all students of each other.

Simply not reading or not replying is a much stronger message--just not a very loud one.

Bill on May 30, 2008 10:00 AM

The list of comments on any posting on this blog is usually substantially longer than the posting itself. In my opinion that is a pretty strong indicator of success regardless of their polarity in regard to the subject. This is my favorite blog. If I agreed with everything in here then it wouldn't be.

Stephen McMahon on May 30, 2008 10:04 AM

As a student in computer science, it's all too easy to find professors that act like the know-it-all authorities because of their inhuman grasp of computer and algorithm theory, and yet the same professors haven't coded in years and think C++ is a bad language.

For me, this blog is like my down-to-earth connection. It's a link to the real world of software development and I find myself learning lessons here that I would never learn in class.

An authority figure is probably not what I would consider you on the field, but what I take to heart is your real-world experience and passion for coding done right. From this I get something from this that I wouldn't get anywhere else.

My hope is that you continue to code and work in this business and continue to learn from experience, so those of us with our hands a little less dirty with code can learn something useful from your experience.

So, keep doing what you're doing Jeff. Share your experience with the world. Know that you are making a difference for many of us.

PrimeSonic on May 30, 2008 10:08 AM

keep up the spirit...he is just some fella jealous of u ;)

love codinghorror :))

sdon on May 30, 2008 10:09 AM

So you can't be an expert unless you learn C? Oh please! This is someone's blog and one that allows comments too. It's not like this is a book that purports to be an authority. If you don't agree with the author, post your dissent in the comments section.

And for crying out loud, only fools and unsure morons write in a non-strong voice.

Bart on May 30, 2008 10:11 AM

BTW, how can he critique stackoverflow when the site is not even in private beta yet?

Bart on May 30, 2008 10:12 AM

@ PrimeSonic: Dude, C++ *is* a bad language, and I say that as somebody who had to sit through a lecture by Bjarne Stroustrup himself (which he spent defending C++) :-)

LKM on May 30, 2008 10:18 AM

@Bart: Certainly you can be an expert without learning C. Just not an expert on programming :-)

LKM on May 30, 2008 10:20 AM

I appreciate the explanation of your approach. Things like the implicit invitation to discussion don't always come through as we hope, especially in pure text communication. I for one thought your PHP post was kinda asinine, but that's probably because I like the language a fair bit (while acknowledging it has several flaws), and it made me grumpy. Keeping that sense of humor would have been a good move there.

I like your work even more now. Thanks for posting this.

Edward Finkler on May 30, 2008 10:21 AM

Well, congratulations on resisting going right for the jugular in response. In the same situation I'd have attempted to bring him down in the same way, but then you're better than that - something you no doubt know, considering your 75,000 subscriptions and 50,000 page daily page imprints.

I did just read Alistair's entire posting and the dialog between you in the comments. The one that really got me began with something like 'I don't wish to sound patronizing...' and ended with probably one of the most patronizing criticisms he offers.

If he doesn't like the 'smackdown principle' then that makes his commentary even more disgusting. And as for you not being credible because your posts don't contain any source, well if I want source I'll right click and 'View Source'.

Honestly, some people. Think I may have to go and blog about it myself!

Deb on May 30, 2008 10:27 AM

I think some of the criticism is spot on, in that Jeff is definitely not an authority on programming, in general, or even development.

Let's detail a few specific criticisms:

* As I have seen (and sometimes commented on) many times, Jeff's blog IS superficial. I still remember the "exceptions take a trip through kernel space" statement... sigh.

* Jeff tends towards exaggerations and sweeping generalizations. He just did that again: "...almost nobody really knows what they are doing. It is amateurs who make all the progress...".
I am sure the very professional guys at JPL and NASA are happy to hear that. I guess all that work they did for some of the toughest systems software projects in history is just guesswork...
I also kind of disagree, being the kind of professional who takes quality seriously. Like all engineers, sometimes I have to make do with limited information. But an educated guess is better than just a guess. And if possible, I also try not to guess. I estimate, calculate, think, learn. I am a proud to be professional.

* It is obvious to me that Jeff sometimes forget that web programming and windows programming are only two types of many kinds of software. It's also quite obvious that he knows very little about those other kinds. It seems to me that almost any time Jeff strays from those subjects, he makes mistakes (factual or others).

However, despite everything, I still read the blog.
Why? Because Jeff is usually honest, passionate, a good writer, and seldom engages in narcissism.
Sometimes the blog is superficial, but makes up for it by covering a wide range of interesting subjects. It can teach one a lot, but one needs to be very careful and double check stuff.

As long as Jeff doesn't set himself up as an expert (and I don't see him doing it), it's OK.

M on May 30, 2008 10:28 AM

"Regardless, you absolutely should question everything I write here"

^-- I think that's the Key point here. Just because Jeff Atwood says that XML is not optimum, it does not mean that is is not optimum. Just because Joel Spolsky says that development teams should work without politics, it does not mean that all development teams should work without politics. Just because Raymond Chen says that Vietnamese sandwiches, aka bnh m are good, it does not mean that you have to like them.

Too many people are trying to be like other people and take stuff for granted. If Raymond Chen writes tomorrow "The world is flat", quite a few people would believe it without hesitation.

This game always has two players: The one who is the "leader" - and the one who is following him blindly.

When I stubled across some of these blogs, I was in a similar situation. I first read Joel on Software, and I think he made the biggest impact on me since my parents. What he writes makes sense to me, being as inexperienced as I was some years back. But during the years and during making my own experiences, I have to say that I do not agree on everything. He is the guy who wants to sell stuff, which is of course perfectly fine. But that also means that his vision is somewhat limited to the commercial world - if I would like to learn something about the open Source world, I would not consult Joel.
From you, i learned how cool 3 24" Monitors are :-) and about some other concepts, but I do not agree with all that you write. Take your XML Posting as an example: I see your point, but I do not really care about it because I got another angle: My platform (.net 2.0) has working and well-tested XML Parsers and Writers built in. XML is not the best format for task X? Who cares as long as Parsing and Writing is so easy. If I would have to deal with environment where every byte of storage and traffic counts I might have another point of view.

That was just a long winded way to say: Blind Following means Doom. Question everything, regardless if it's written by some undergraduate student, by someone who works in the industry for 20 years or even by God himself. Take whatever you can from these people but don't blindly follow them.

Oh yes, and don't believe that monkey p** about "You HAVE to know C". No, you don't and you never did in the past. You should know how the Processor and System works generally, how memory is accessed etc., but you can learn all that without wasting a second of your precious time on learning a language that does not even properly support strings. The only reason to learn C or C++ is if you have to write software in it.

Michael Stum on May 30, 2008 10:31 AM

Jeff, what's important is not coming up with the right answer, but asking the right question.

What I see you doing is asking the questions that the rest of us wouldn't think twice about. So keep it up.

Dino on May 30, 2008 10:31 AM

Your Snake kung fu is great, Master, but I've been studying the secret Mongoose style for months. Prepare to fight!

Brian on May 30, 2008 10:38 AM

Not all programmers are amateurs, read a books from Tom Miller about DirectX and think about the amateur statement again

Wolfgang on May 30, 2008 10:39 AM

Your blog entries are getting longer. Maybe shorter would be better. Though it depends on subject and patience / interest of the reader.

Silvercode on May 30, 2008 10:42 AM

"Well, congratulations on resisting going right for the jugular in response. In the same situation I'd have attempted to bring him down in the same way, but then you're better than that - something you no doubt know, considering your 75,000 subscriptions and 50,000 page daily page imprints."

You are deluding yourself.

Jeff has two non-destructive options for dealing with credible criticism.

One is to simply ignore it, which is the approach most bloggers take, hoping that it'll just blow over. The other is to lob softballs back, wearing velvet gloves, hoping to appear to be good natured and humble while diffusing the criticisms. Jeff chose the latter, as he frequently does. Personally it comes across as completely dishonest and fake.

D on May 30, 2008 10:46 AM

Ohhhhh jeez. I read up to your link to his blog. I went to his blog, I started reading it, I came to this quote early on:

"A comment that software forking is “the very embodiment of freedom zero” demonstrates that Atwood has no idea what freedom zero is. Freedom zero is the freedom to run the software in question without modification ..."

I thought, that doesn't sound right. I googled gnu freedom zero. Clicked first link (GNU freedom 0 definition). ctrl-f modifica. "should be free to redistribute copies, either with or without modifications," Ok. this guy is retarded. keep on keepin on Jeff.

Ian00 on May 30, 2008 11:02 AM

You lost me when you recommended Idiocracy.

No, really.

M on May 30, 2008 11:02 AM

Michael Stum wrote: "The only reason to learn C or C++ is if you have to write software in it"

I think that's quite a sad statement. I started programming because I'm a curious person. I want to know stuff. Over the years, I've learned lots of languages (most voluntarily, some forced upon me while studying). I've yet to find even a single language which didn't teach me something about programming.

And C certainly is a language which will teach you *a lot*. Learning C (or similar unmanaged languages) forces you to understand things about the hardware in your computer which you simply can't grok by learning about how computers work in theory.

Some other languages which can teach you a lot: JavaScript (teaches you stuff like prototype-based object orientation and closures); Prolog (logic programming); some functional language (Erlang, Haskell or Scheme - I had to make do with ML :-); Objective-C (reference-counting memory management); Eiffel (for its pure object orientation, which includes stuff like multiple inheritance) or Oberon (just to see what they did to Pascal :-) - also, Bluebottle is quite an interesting system, with a zoomable interface and other neat stuff).

As a programmer, you should learn new languages regularly, because no matter what you use to write your daily code, learning new languages will make you a better programmer in your language of choice.

LKM on May 30, 2008 11:03 AM

It's funny how your critics state they will no longer read your blog, like if someone actually cared.

Personally, I love your blog. Keep up the good work.

Giancarlo Bellido on May 30, 2008 11:04 AM

@D: "Jeff has two non-destructive options for dealing with credible criticism."

I'm afraid you've committed a fallacy of false alternatives here, however well made your point in the last paragraph is (true or not). If you disagree with the post, you are certainly free to do so, and I would hope that everyone else here is as open to listening to a new idea as I am. If your qualms with Jeff's logic are logical, then present us with the appropriate counter-logic. If they are personal, then state them as they are. It's damaging to the rest of your otherwise valid opinion, however, to masquerade an argument under the banner of a mis-constructed logical argument.

@Jeff:

Whether Rankine's criticisms are valid, he's taken your "intensity" out of context, he ignores the value of this comment section, or if he misunderstands your position entirely, or any combination of the above, I feel that your response was respectfully yet directly designed, and I respect that you DO take the time to respond to the reaction your writing creates every once in a while.

Cheers!

Tonk on May 30, 2008 11:10 AM

>I thought, that doesn't sound right

Your reading skills aren't that great.

GNU lists 4 kinds of freedom, from freedom 0 to freedom 3 **[right on that page](http://www.fsf.org/licensing/essays/free-sw.html)**. Maybe you should go back and look at each of the four points, noting that one of them is called "freedom 0".

And I quote-

> * The freedom to run the program, for any purpose (freedom 0).
> * The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
> * The freedom to redistribute copies so you can help your neighbor (freedom 2).
> * The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.

D on May 30, 2008 11:10 AM

When I was in high school I had writing classes (I'm native portuguese speaking so I do not know how to translate this the way it's meant to be). A dissertation about any given topic is about starting with a point (like "PHP sucks, and it does not matter") and then you start discussing why and how. The best dissertation is the one where you get to a point that other people just can't respond (which is impossible, but can get very close), even if they know that it's wrong. Jeff, you know how to dissertate and that makes other people angry because they can't properly respond to your points, even if they know that you are wrong.

Hoffmann on May 30, 2008 11:11 AM

Oh, and Napoelon Dynamite is not that great of a movie.

Hoffmann on May 30, 2008 11:14 AM

Jeff, I read your blog because I feel I can relate to alot you have to say (as an amateur). I've never considered you to be an expert programmer, but definitely an experienced one. You've been in the trenches for years, and, subsequently, your writing on the human factors is unique and always worth reading. Keep doing what you're doing. People who don't even know you should not critique your opinions based on their misconception of your credibility.

Josh Stodola on May 30, 2008 11:18 AM

I read this blog, because your opinions are in line with what I think. Especially with hardware, energy efficiency, Anti Anti Virus, not needing a 500W power supply...etc.

Brandon on May 30, 2008 11:33 AM

First, I love coding horror.

Second, I'm quite surprised you responded to that posting. If I could take back that unique visit to his site, I would. It really wasn't worth it.

-Kevin

Kevin on May 30, 2008 12:00 PM

I think this blog is great since there's always something new here (Most of the time). I can't see why anyone would criticize it. About the only problem I've had is I've had to look up a word every second entry I read on here, since language is used that I dont ussually see in most places.
Though, I expect that anywere, and dont care since learning new words is always a good thing.

CF on May 30, 2008 12:02 PM

Don't listen to criticism like that, Jeff. You shouldn't even bother with reading it...

I love your blog! Keep up the excellent work.

Arnor Heidar on May 30, 2008 12:04 PM

It just proves that reaching the masses by blogging is way harder than most people realize. If you pander to the people they accuse you of being entertainment, if not they just ignore you. Choosing is tough. If you really believe in what you are saying then you've picked the winning side.

It's unfair, I think to confuse being a popular blogger with being an authority on software development. In a world were lots of our knowledge comes from professional writers contributing to industry magazines, popularity does not automatically equate to "declaring" oneself an authority. To write well is not an act of hubris. (and of course, being an authority in a fledgling discipline like software isn't a particularly high bar to achieve anyways)

Paul.
http://theprogrammersparadox.blogspot.com

Paul W. Homer on May 30, 2008 12:05 PM

Jeff - what is this "dialog" you speak of? You post on your blog, and that's pretty much it. OTHER people talk about it in your comments, but you never give more than one or two responses there. Moreover, it seems like you rarely revisit anything based on feedback from your commenters. I believe you've talked before about blogs needing comments, but my perception is that there's hardly any interaction from you with your commenters.

Maybe if I saw a follow-up post saying "There was some really good feedback yesterday, here's a summary...", or saw more than 2 orange comments per article, or that you had flagged certain comments as "featured" or "high-quality", or witnessed some other evidence that you're actually interested in commenter's opinions, then maybe I'd get the sense that you're actually trying to create dialog instead of orate from the senate floor.

As it is, I perceive your blog as more of a podium than a meeting room. You can call yourself a "fellow amateur" all you want, but that doesn't make me believe you. Your actions do. Kathy Sierra always walked the walk, homie.

John on May 30, 2008 12:06 PM

Getting paid to do anything makes you a professional. It doesn't make you an expert. There's a somewhat fine line between "pro" and "expert."

Anyone can be a professional. It doesn't take much to find someone willing to pay you for your skills, especially in technology, which seems a black art to many. You can be a "pro" and not an "expert."

Experts are forged in time and experience.

As my high school art teacher taught me, you know when you're good at what you do. It's how you go about showing and telling people about it that determines whether you're an "expert" or a "pro."

Or, I often consider this: People seek out experts. Pros seek out people.

Morning Toast on May 30, 2008 12:15 PM

Amen.

I'm an engineering hobbyist: electrical, electronic, structural, civil, mechanical... anything where I can put my hands on some raw materials and make a thing DO a thing.

I barely graduated high school. I haven't set foot on a college campus ever. I had extensive training as a system support monkey, I was pretty good at it.

Along the way I discovered the Code. I would never describe myself as an expert at anything other than making poor financial decisions, and laughing at only moderately funny commercials.

Still, I am a passionate amateur. The second best JS coder I've ever personally met doesn't work in IT at all. Web code has a strong crossover of hobbyists because of its accessibility, so I don't know if you have the same cross-section you would in a C# shop... Still, I write in the "higher" languages as well so I know code-savants (for lack of a better term) have to exist there as well (and as a interpreted-code-guy primarily, I have to say I say "higher languages" with equal parts respect and scorn [more or less]).

I'm currently a Web Dev III... previously I was director of web development, but it didn't pay as well... now I explain how to do things to guys with letters after their names. Many of them are fantastic programmers, some of them WILL be better than me.

The point is, I'm good, and I know I'm good. I know that if you put your mind to it, a decent coder with a degree could make me look like a complete ass. I know someone expert or amateur is always going to be better, or GET better, but I know I can out maneuver "experts" in all manner of fields I'm not qualified to speak on.

As an "amateur," I'm never going to get confused about who I am in the world of code.

I fear the experts, they know everything in their box, and they know that they are experts. Human nature tends to make them horrible jack-holes to work with. D&D rule Nazi's, only you can have the DM "Act of God" them back to their mom's house. We need them, they are critically important to the system, but they aren't the only path.

My only "concern" for Jeff's place in the coding world would be that working on a "job," especially one you don't particularly love, gives you the oppurtunity to work on code you have no drive to work on.

Disassembling somebody else's credit card address verification routine, gives you their power, in the cannibalistic sense, working in a closed shop on my own code all the time would destroy my ability to evolve and stay relevant.

Christopher TruLove on May 30, 2008 12:19 PM

I have certainly been offended at your opinions from time to time, and you are blatantly wrong from time to time, and I've come this close (pinches fingers together) to removing you from my RSS feeds, but like others have said, I do appreciate your critical thinking that is involved in your writing, and I do appreciate provocative writing from time to time, especially when it can be backed up with legitimate thoughts, references, evidence. You're the John C. Dvorak of software development. :-) And I mean that as a complement.

Take care.

Joshua Curtiss on May 30, 2008 12:57 PM

Humor and humility from a code blogger! I guess that's part of the reason why I enjoy reading your posts, sensei. :)

gunther on May 30, 2008 1:02 PM

You know, until I see that Microsoft, Apple, Google or some other tech leader is sponsoring this blog (and until Jeff becomes a mouthpiece for one of these types of companies) I'm going to keep reading this blog as I do with so many others - with a grain of salt. Jeff writes about his opinions. The comments section is where others agree or disagree. Usually, the comments sections can be more informative than the actual blog post, and if the author was sufficiently compelling there will be plenty of comments to read.

All this BS about Jeff bolding phrases in his posts, etc. has practically devolved the conversation into pure silliness.

BradBrening on May 30, 2008 1:06 PM

Haters man, success breeds hate, online or offline, its all the same. What's ironic though, is the traffic boost you get from the critique - fuel to the fire, or, money in the bank depending on how you look at it.

dmose on May 30, 2008 1:13 PM

The very moment anyone begins to think they are an expert at anything is the very moment they become a douchebag. Experts tend to close doors rather than open them. Experts let in ego. Experts stop running and start reminiscing. Be an amateur and always keep learning, building, excelling, with humility and an open mind. Besides, how can anyone be an expert in a field where the technologies and methodologies continuously change?

Kenneth on May 30, 2008 1:16 PM

Keep on keeping on. I'm one of many who enjoys your blog. There are a lot of big egos in the software industry. To me, you present a balanced opinion.

Looking forward to the new website.

Mitch on May 30, 2008 1:20 PM

This is why love the podcasts so much from stackoverflow. Reminds me that Jeff is a regular guy just like all of us.

Terry on May 30, 2008 1:30 PM

I was just thinking about this earlier: In some areas, I'm still a newbie, but in other areas I have a lot I could teach people. I realized that there aren't necessarily distinct levels where when you learn everything at one level you move up. But rather you can be at different levels in different programming subjects at the same time.

slapout on May 30, 2008 1:30 PM

@LKM: I noticed that my statement was not what I intended. It should have been "The only reason when you HAVE TO learn C", but i've forget to put in that "have to" when editing the post before sending.

Learning new languages and expanding your horizon is certainly a good approach, but there is not a single language that is a "Must" except for the languages you have to work with. Sure, there is a lot that C can teach, but the same can be said about COBOL, Fortran or Ada as well. There are other languages that teach you the same concepts that are considered important (i.e. Delphi) and allow people to tick off the "Must know" points on their list without HAVING to learn C. If you know PHP, you don't have to learn Python or Ruby or Tcl/Tk, as long as you "get" the concept behind those languages.

Each language has it's advantages and disadvantages, but I for myself do not have a high opinion about people who say "If you don't know language X, i do not take you credible", which is what Alastair said and triggered a "So, who are you then?" reaction from myself.

Michael Stum on May 30, 2008 1:51 PM

Hey Now, Jeff

Some looser trash talks my authority on everything
Srsly not Cool.

Kris Katto on May 30, 2008 2:28 PM

@Michael Stum: I wouldn't say that PHP and Ruby have too many things in common :-)

About C though, it's not as if C was *that* hard to learn, so I'm not sure why people have such huge issues with it. Since most modern languages took C's syntax, you don't even have to get familiar with a new syntax.

LKM on May 30, 2008 2:40 PM

It's easy to criticize a blog. It's like me telling you that your shirt sucks. It's totally subjective. What is more difficult is to read someone's opinions, digest the point and come to your own conclusions. I read this blog for the content I agree with, but the real value comes from the posts I disagree with. I find myself researching and compiling information to refute your points that I disagree with. How can that be bad.

jride on May 30, 2008 2:51 PM

Jeff, I stopped reading your articles for the same reason, right about the "software development = rock climbing" delusion. Now I drop back about once a month or so, or when I absolutely have nothing else to read or do.

I don't know you. I've never met you. I don't know what your goals are with this blog. All I know is what image of you I form from reading this blog, and it isn't the one I want to form. So without further ado, this is what I have to say to the persona writing this blog:

You are the Rush Limbaugh of software development. The Ann Coulter of coding.

The problem isn't that you're an amateur. The problem is that you never rise above being one. You post an article about XML that contains exactly what I'd expect from someone who has just seen XML and recoiled in horror. No understanding of *why* XML is the way it is, and what compromises went into it.

In short, a stunning display of ignorance.

That's ok, though. We're all ignorant in the beginning. Nobody is born an expert. But you seem to just stop there.

Like someone who concludes that "ok, I've spent five minutes with this thing and I am so smart so now I'm an expert and don't have to learn any more". Then you switch to talking about the next thing you dabbled in and got all wrong. You may think you're widening your horizons, but you never put in enough effort to really widen them. You are the guy who reads "Teach Yourself HTML Programming in 24 Hours", concludes that it is way too complicated for any conceivable purpose, the only conceivable purpose for you being "lolcats", and then never bothers to learn more, convinced that you are a CS PhD. Had this been an astronomy blog you would have written an entry about how relativity is too fancy-schmancy complicated and why putting the Earth at the center is the right thing to do, had it been about biology you'd be the ID proponent. In martial arts, you're the guy who has seen a Seagal movie, gone to one lesson, knows enough to get into a fight and have his ass kicked. You learn enough to kill yourself but not more and think that's just fine.

You are the blowhard. You are the one shooting his mouth off about everything and getting nothing even remotely right.

Whether your opinions are strongly or weakly held is of no importance - you are below the threshold where you are qualified to hold any opinion whatsoever. I don't ask that you be an expert, but the motivations for XML, for example, is just a Google away - but you can't be arsed to do even that, now can you? I mean, you know everything already, don't you?

When will I see the next article about XML? You know, the one where you tell us about what new things you have learned and how it modified your previous perceptions? Or is ignorance too bliss?

I don't know if the image I form of you is correct. Maybe I'm "special" in interpreting your writing this way. Maybe the 122k people reading your blog are right and I'm all wrong. I have no idea. But this is my outlier data point for you. Do with it what you want.

Finally, your last two sentences in this article just reminds me of this ad: http://en.wikipedia.org/wiki/Image:Bitchad.jpg

Do you have a katana somewhere?

Sensei?

tcliu on May 30, 2008 3:05 PM

That Alastair has a beef with you because you don't know C speaks volumes about him, not you. You should pick up the K&R book and learn C though. Not because it's any good (it isn't), but because it's ubiquitous, and people still write code in it despite its flaws. Like JavaScript in the Web development world.

Joe Chung on May 30, 2008 3:13 PM


I don't remember any time when you admitted making a mistake for whatever reason. I read blogs like Scott Hanselman's and if the guy got hacked, he would publicly tell the whole story. You on the flip side, would probably pray no one knew!

Just my personal feeling. However after listening to you on SOF podcasts, I feel a 'soft' person.

Abdu on May 30, 2008 3:22 PM

I know C and you don't. I feel, just like many others, that you have no right to preach about software development. But then I read your interesting arguments and keep coming back.

And now I know that I was wrong. You are exactly the kind of fellow programmer I would like to have. Keep going, Jeff.

Sumon on May 30, 2008 3:46 PM

Think that ScottGu is as amateur as I'm...it make me feel so good.

Nikes on May 30, 2008 3:48 PM

I'm not sure what to say, but I feel it necessary to show support to your writing and blog.
As a reader, I enjoy your writing, and as a student it helps expose me to a vast array of information within the computing field.
I endeavour to read your posts every day, and wait eagerly to see what you'll be picking apart. I think the argument of Strong opinions held weakly, is a beautiful phrase, which inspires me to have confidence in my own ideas whilst still being able to listen to the views of others.
From what I’ve read it would appear your critiques resent your popularity. And if you can make money from this blog, which I greatly enjoy, then I completely support it!
Over all, I think it’s important for people to realise that this is a blog that covers topics broadly, as a sort of introduction to different aspects, not as a biblical reference to "Subject of blog post". (note this is my opinionated summary of the blog)

In closing, it takes bravery to stand up in the face of critics, and I respect you even more for it. Keep Posting Jeff!

Alec
(software engineering student, UK)

Alec on May 30, 2008 4:41 PM

Jeff, your self-criticism is what I admire the most about you. You're not using your de facto authority to impose any "weakly held" opinion; rather, you keep your feet on the ground. A breath of fresh air.

Dalton Filho on May 30, 2008 4:46 PM

I wonder how your audience breaks down between professional coders and people who are interested in software and/or need to understand aspects of modern software development.

Be a good survey!

From my perspective, in the latter group, you are a very good writer. Like Cringely, another strong tech writer, you might be off-base sometimes, but I don't care. I'm not using you as gospel. I'm reading you to learn and be entertained. I don't insist all I learn be absolutely correct; I trained in medicine, and much of what we learn is waiting to be proven wrong. It need only be useful.

John Faughnan on May 30, 2008 5:02 PM

Reading Coding Horror is like a trip to Super Walmart. You stop in because you need milk and bread, but in the end you also pick up that cool Indiglo alarm clock and one of those slingshots with the wrist strap.

I can participate in a discussion on versioning one day... and read about a high-intensity flashlight the next.


Michael Debro on May 30, 2008 5:57 PM

The point of Coding Horror is not so much the opinion as the topic. He comes up with an interesting (errr.. well for us geeks anyway) and spins it out for comment. Some people are just boring. Others are interesting. Not always right, but interesting.

MIHondo on May 30, 2008 6:13 PM

There's a word for you, Jeff:

You're a writer. (And a good one.)

Ben on May 30, 2008 7:14 PM

"There's a word for you, Jeff:

You're a writer. (And a good one.)
Ben on May 30, 2008 07:14 PM "

Cheers to that

TrXtR on May 30, 2008 7:46 PM

There's an old saying, "People vote with their feet", in your case, its clicks, or RSS feeds. That's the only barometer you need.

Justin on May 30, 2008 8:27 PM

Jeff, I trust that all the positive feedback from your users will reassure you that Alastair's opinion is not shared by the majority.

Keep up the great work. Try to ignore this elitist crap...

Nathan Bedford on May 30, 2008 8:35 PM

I'll vote with my wallet. *Click advertisment*

Jason P-R (stalepretzel) on May 30, 2008 8:46 PM

Wait a second, this is a BLOG? I thought this was a bunch of articles about self-discovery and a tender coming-of-age story about a boy and his TI-994a?

Screw that, I don't read blogs. ;)

http://flickr.com/photos/skoon/2538011920/?addedcomment=1#comment72157605344456490

Scott on May 30, 2008 8:46 PM

I think that it is reasonable to want the sources you read to address the real-world issues you encounter; but if that's not what's being advertised, there's not much basis for complaint (like buying a cat and being upset it doesn't fetch).

I find less than 10% of my job as a software engineer is about programming. Most of it is trying to keep teams working together, using good processes, and asking the right questions.

What's funny to me is that 90% of the blog content is about the 10% of the job. Jeff's not different from the other bloggers in that regard (Joel is one of a few notable exceptions).

Caveat emptor.

Doug Bodden on May 30, 2008 9:21 PM

It's weird. I find myself agreeing with practically everything you say.

I wonder why, because you're an administrator on StackOverflow, he thinks you are placing yourself as an authority figure in software design. Maybe since I'm a newcomer to your blog, I haven't noticed the change, but I don't see why he would stop reading it.

Oh well, not my dilemma.

Thanks for all your hard work, Jeff!

Joe F. on May 30, 2008 10:16 PM

Is it just me or have there been a manor influx of comments latly.

Arron on May 30, 2008 11:18 PM

I'm sorry Jeff but you will have to learn C to redeem yourself in the eyes of the community!:)

Valentin Galea on May 31, 2008 1:47 AM

what I find a little sad in the comments is that some people find it necessary to bash Alastair Rankine to pieces while they probably never met the guy.

Looks like this threads is about what's better: PS3 or 360, It's similar: blogger X points to blogger Y that Y isn't as good as some people might think, according to X and Y responds that X has no clue.

To all who blindly follow Atwood's labeling and consider themselves amateurs: so, monday you'll go to your team leads and say to him/her that you're an amateur, you call your client and tell them that their expensive project is written by amateurs ? I don't think so.

Frans Bouma on May 31, 2008 2:28 AM

>Jeff, I trust that all the positive feedback from your users will reassure you that Alastair's opinion is not shared by the majority

Majority of what? You think the majority of the software development community reads or cares about Jeff's blog? Isn't the comments sort of self-selecting, given that pretty much the only ones that are reading regularly are the ones (the amateurs) that Jeff panders to?

Comments on Jeff's blog are generally supportive of Jeff. Who would have expected?

D on May 31, 2008 6:28 AM

I like your site for beginner introductions to new concepts, but it generally feels like most of the content on your site lately isnt authoritative information that I could professionally use backed up with code samples, it feels more like a mechanism designed to entertain readers and generate traffic and debate on your site.

pete w on May 31, 2008 6:47 AM

He seems to be complaining that you are wrong sometimes.

A lot of people just can't STAND it when someone bucks conventional wisdom without inserting endless qualifiers and disclaimers.

I think conventional wisdom is far too often WRONG!

French Horn on May 31, 2008 7:05 AM

Although I agreed with some of what he said, his credibility was shot with me when I read his Developer Essentials list ( http://girtby.net/archives/2008/5/11/developer-essentials ). That list is so ridiculous I don't know where to begin (Makefiles?!)

steve on May 31, 2008 7:54 AM

Jeff, I like your blog because it forces me to think about what I do (and don't do) in my profession. The fact that I agree or disagree with the post is not the point. Even if the posting itself is weak (don't worry, this is rarely the case), it forces competing arguments to come out in the open. In the end, everybody ends up learning something. That's the most important point. Cheers,

Paulus on May 31, 2008 8:07 AM

Unfortunately, I don't have time to read all of the comments, but here are my thoughts:

1. You can quote Dave Winer all you want, but when you decided to use your blog to generate personal profit, you became a professional blogger. There are no clever linguistic tap dances you can use to get around that point.

2. If you want to be a responsible member of the programming community, you have to accept that a great many people see you as an expert, precisely because you have not told them otherwise. You write in what you call the "Smackdown" style, but to many people, all they see is a professional blogger stating something as categorically true. If you are the first influence they receive in whatever area you are discussing (which given your own analysis of your audience seems likely), then you could be leading them down the wrong path.

You can have strong opinions without stating them as fact. If you don't want people to see you as an expert, then you have to tell them you are not. Preaching "truth" and then using Dave Winer as a shield is a cop out, its unprofessional, and its irresponsible given the level of visibility you have in the community.

David Nelson on May 31, 2008 12:02 PM

@David By that definition, every blogger who slaps an adsense ad on their blog is a "professional blogger". In other words, something like 80% of bloggers are pro bloggers. At that point, if everyone is a pro blogger, the term "pro blogger" loses its meaning. So what?

Haacked on May 31, 2008 12:08 PM

Jeff, I read your blog for content. I don't know your background, and while I'm sure it's interesting, I don't care to know it.

It is obvious that you know a lot about our field because I learn -- facts -- when I read you. Your thoughts and your writing are clear and informative. Your arguments are cogent and balanced; you rarely, if ever, go off the deep end.

As a sentient human being, I will decide for myself every day if you enrich my thinking on my chosen profession, or if you are full of shit. NO ONE else -- not Moore, Gates, Torvalds or otherwise -- is going to tell me what I think of you. Anyone who thinks that an intelligent professional in our business will judge you on *their* authority is a lot dumber than either you or I.

So please do me one favor. Stand above the inevitable criticism you will attract in ever greater amounts (both reasonable and riduculous), and get back to blogging actual content.

With much appreciation,

John Pirie on May 31, 2008 1:42 PM

So it seems that while Jeff can take a bit of honest criticism with humour and good grace, many of his fans can't.

Alastair Rankine on May 31, 2008 5:28 PM

Jeff, I always look forward to your posts as I have for the year or so that I've been reading. I learned programming with BASIC way back in 1978, and went on to some FORTRAN and PASCAL at Purdue University. These days I stick with some Perl, PHP and JavaScript as I produce web sites. I don't consider myself to be a professional programmer, though I do receive monetary compensation for the code that I write. I don't consider you to be a huge "authority" on programming, as I don't think you present yourself as such. I like to "tinker" with my programming, and find new ways to do things on my home linux network, and keep up with what's going on in various aspects of the computer world. Your column helps, whether it be with specifics, or general ideas.

Like others here, I don't always agree with every one of your opinions, but like gentlemen, I'm sure we can agree to disagree on some things and leave it at that. In the same way, I disagree with Alastair's opinion as stated on his blog regarding Coding Horror, but I still find his posts interesting and will visit his site again.

Dan on May 31, 2008 6:48 PM

"Everything About (your favorite technology) Sucks. Seriously"
truly does apply when the technology is used outside its domain of strength: the domain it was designed for. Don't blame the technology for solving problems poorly or not at all outside the domain it was designed for. Consider that something that is great as both floor wax and desert topping isn't necessarily good as hair conditioner.

I have abused technologies, doing bit twiddling and sliding structures in COBOL, all kinds of ridiculous stuff with spreadsheets, and figured out how to convert a procedural QB application to well behaved VB with trivial pervasive changes (and adding a few functions MS should have provided).

I'm proud of these hacks. The point is I admit they are hacks. It doesn't make the tools I've done them with bad because they aren't meant to be used in the domains in which I abused them. It just gives me points on the Hackers Test.
"0142 Ever tried to improve your score on the Hacker Test?"

David

DAKra on May 31, 2008 8:18 PM

"So it seems that while Jeff can take a bit of honest criticism with humour and good grace, many of his fans can't."


so now you attack the fans? weak. just that, simply put. weak.

BTW it wasn't honest criticism, it was an unwarranted attack to self-aggrandize yourself. atwood seems healthy and hale, maybe you should try a byte of his humble pie.

Geekstrada on May 31, 2008 11:54 PM

> it was an unwarranted attack to self-aggrandize yourself

Jeff doesn't think so (as per his first paragraph), so why should you?

Alastair Rankine on June 1, 2008 12:07 AM

hmmmm

"I seldom pause to answer criticism of my blog. If I did, I'd have time for little else in the course of the day, and no time for constructive work. But occasionally I'll encounter a particularly well written critique that gives me pause, such as Alastair Rankine's Blogging Horror. Since I feel that Alastair C, and that his criticisms are sincerely set forth, I want to try to answer his statement in what I hope will be patient and reasonable terms."

"well written", "sincerely set forth", compliments both. "patient and reasonable terms"... hmmm I am patient and reasonable with children and animals when they err, although that does not mean I agree or disagree with them, they just need to be corrected. I never meant to imply that Jeff thought you were self-aggrandizing through a trollish post. ;)

Geekstrada on June 1, 2008 12:58 AM

I just re-read that and I apologize. I came across as an a$$. Sorry Alastair, you didn't deserve that.

Geekstrada on June 1, 2008 1:10 AM

This is ridiculous. The smackdown model Kathy suggested is based on an in-depth presentation of multiple viewpoints based on familiarity of the subjects. What I've seen instead are Rex Kwon Do aggressive postings that give the reader no quarter. Rex would never tell people he's an amateur or ask for advice from his students. It's a bogus metaphor you'd do well to discard.

The perfect example here is the Rainbow Tables post, and Thomas Ptacek's quite brutal reply. But if you're the novice and he's the expert, why the hell are people telling me to read your site and not Ptacek's? So we can all watch a good WWF blog match?

For some reason, I'm reminded of an old theory: when you don't know something, aggressively state an opinion and wait for the contrary to come in. This is an internet lemma that's probably been independently discovered by hundreds of people but immortalized <a href="http://bash.org/?152037">in a bash.org entry</a>.

I felt that the articles on usability, especially large screens, were interesting and valid. But more and more, I wonder whether even those were valid.

jldugger on June 1, 2008 2:37 AM

I think you have to be very careful with the "strong opinions, weakly held" approach.

1. In my experience the best possible outcome is a strong argument where both sides come away with an even better approach than the one they stepped into the ring with.

2. But if the "strong opinion" party is dominant, charming, etc, and the lesser party is accomodating, or just confused, than the strong opinion (which admittedly may be completely wrong) will win the day, while the lesser personality is just trampled. Listening and searching for understanding has got to be the larger responsibility of the dominant person, however most dominant people are wired for shouting others down. Very tricky.

3. Having a leadership role makes this even more complex. Nothing worse than arguing a case with a superior, doing it their way because you couldn't come to consensus, and then having the superior realize two weeks later with new data that your position was the correct one.

I think this translates well here. Jeff is a star in the blogosphere and at the very least is more articulate than the rest of us troglodytes. And much like Steve McConnell, Jeff actually takes a stand on what might be right or wrong. I don't know how many of my mentees have come to me asking: Should I do it this way or that way? I'm fundamentally a devil's advocate, so I always come back with "It depends, In your situation I'd do x". But when you're desperate for direction and fundamentals, you'll take anything that seems consistent. So I'll hand over Code Complete. I'd rather run in the wrong direction than no direction, at least you learn something that way.

I think Alastair's followup was valid, if Jeff does change his strong opinion, he should probably update the original post so that when we come googling along 3 years later we don't all hate xml because Jeff said we should, but has since joined the religion of angle brackets.

SteveJ on June 1, 2008 8:35 AM

Jeff,

I hope you take the haters in stride. I have been developing professionally for 20 years, and your blog is usually the first one I hit during downtime. I like the wide variety of topics you cover and I think your writing style is interesting.

I don't take your opinion (or anyone else's) as the final word. Instead, I use your articles as a jumping-off point to read more on the subject at hand. Even when you get "smacked-down", it's still useful for learning, and I consider you the catalyst.

I think the biggest indicator of you *not* acting like the final authority on eveything is how you have said that blogs are useless without comments. That is a fantastic attitude to have.

By the way - I know C, and I don't care if you don't. :)

David on June 1, 2008 10:17 AM

You and Alastair Rankine are both completely wrong in every regard. I can't say this loudly enough ( but I'm not attached to it )

Quinn Wilson on June 1, 2008 10:25 AM

@Phil,

Did you just make up that 80% number? Because the majority of technical blogs that I read have no ads of any kind.

David Nelson on June 1, 2008 12:56 PM

Personally I find it odd that unsubscribing from a blog requires a post (on a blog). I read the 'critique' of this blog and to me, it seems like a big cry. Sorry if I break into 'fandom' here but damn, does the 5-10 mins a week it takes to read this site justify the response?

This is how I read the the Critique;
Waah: Jeff can quit his job and live off his blog
Waaah: Jeff is starting his own website
Waaaah: Jeff can make interesting posts on random topics
Waaaaah: Jeff's blog is generally more popular
Waaaaaah: Jeff does not post code snippets
The Final Waaaaaaaah: Jeff does not know C

Case in point;
http://girtby.net/archives/2008/5/11/developer-essentials
"It’s partly based on experience; specifically the experience of surprise I felt when a colleage[sic], or random stranger on the internet, expressed ignorance at one of the items on this list. ... I’ll leave it to you to guess which is which, and who is who. Or at least skim the headings. Read on."

Skim down his list;
"5. C"

I could go on but I will leave it at this...
Seems we are all fanboys for something.

Tyro on June 1, 2008 5:54 PM

I remember reading your posts in that Blog entry. I happened to beat you to it, being the third person to comment on that article after I found it on Reddit. My comment was:

"I’d be lying if I said that I didn’t disagree with him from time to time, but as a Blogger all you can really expect is a viewpoint, not concrete fact.

As a student I use these Blog’s to give me an insight to what I have not experienced before, and to give me advice on what ‘could’ be worth learning. "

In all honesty, if I were to believe everything I had read on the Internet I would know very little. What a lot of people need to realise is that anyone can write anything on a web page, meaning that no one has any ultra powers that make their opinions count. Along with your Blog I read those by people just starting out on forums like SitePoint, not because they may know what they're talking about, but because they have an opinion!

Later on in the comment I had written:

"That being said, I do agree with you when you say that with his own website he could be propping himself up to be recognised, but with the fame his Blog has given him why shouldn’t he? Whilst from what I know of he hasn’t built anything spectacular that I use on my desktop or online (i.e. Newsvine, YouTube, Digg, etc) I still believe him to be a great developer and a very smart man. He does deserve criticism, just like everyone else that places themselves in the public eye. However, I think even he is aware of his placement in the industry now after leaving his job, and with the popularity of his Blog it’s up to him to prove any critics wrong and provide a fantastic resource in stackoverflow.com."

I still stand by what I say. You have a popular Blog and you are in the public eye within the developers' circle. As far as not building anything spectacularly well-known goes, so what? I mean, who honestly looks up to what Kevin Rose has to say?!

That being said, I am looking forward to what stackoverflow can provide developers that want to learn, regardless of their backgrounds or knowledge. The reason why I follow your Blog is not just because you know more about this subject than me, but because you have an opinion, and in many ways opinions are stronger than facts.

Mike on June 1, 2008 6:35 PM

This goes on and on, and there's one simple solution. Jeff, you have to learn C. There is no way around it. You must know C.

You are not a programmer until you know C. You can write (well) all you like, but all roads lead to C. C is the language. Knowing it is not optional.

Learn C. Stop writing about how you don't need to know C. You are wrong. You must know C. That is the simple, final statement of fact. You must know C.

After you know C, you can then post all you like about how useless it is to know C, because you'll know C.

steve on June 1, 2008 6:38 PM

Yeah Coding Horror sucks terribly - everyone should go read some boring whiny-arsed nobody blog with code snippets and lots of C. Keep up the good work Jeff, you write about programming in an entertaining way that communicates your passion for the subject and that's what counts for me. I'm a bit worried your head will explode though.

Matthew Smith on June 1, 2008 8:57 PM

Jeff, you desperately need to implement voting up and down of comments. I just can't sit here and read through them all to find the gems.

"Smackdown" is just a new name for hyperbole. It's been a literary device forever.

Many have echoed how helpful "strong opinions, weakly held" is. However, I hope your other message of humility is not lost. Just the other day I had a small victory with my codeset. It got me thinking about how I should feel when I succeed. This tweet is what I came up with. http://is.gd/pfH

mattflo on June 1, 2008 10:57 PM

"an expert, as someone who has already discovered everything there is to know about a given topic"

That's a pretty weird definition of an expert. An expert knows **more** about a particular topic. There are plenty of experts who are very open-minded and constantly learning - I would argue that was how most of them got to be experts in the first place. They might also have been lucky/driven and had particular experience in a given area that most people don't.

And some people are just plain smarter than the rest of us.

Of course, just because someone *says* they're an expert... :-)

Jim Cooper on June 2, 2008 3:22 AM

7 years, it takes 7 years to become an expert at ANY field.

Assuming of course that you posses a brain and know how to use it...

Mac on June 2, 2008 5:04 AM

I learnt a long time ago that it doesn't matter how much I know, there's always someone who knows more. That makes me an amateur, and I'm a happy one at that.

Jem on June 2, 2008 6:51 AM

Not much to add to all these wonderful comments you are getting.

Don't change what you are doing. What I see you doing is sharing yourself with others to help foster discussion.

AC on June 2, 2008 7:11 AM

...but I don't just read your blog for what you say .. but for the comments on what you are talking about ...
.. you seem to be (mostly) very good at starting a discussion on topics I am interested in and weather I agree with you or not, the comments will always contain interesting points of view ...

.. and I too like the fact that you have been known to change your mind, or be persuaded, on occasion...


Jaster on June 2, 2008 7:42 AM

Fan boys unite!

The Incredible Edible Egg on June 2, 2008 8:39 AM

LOL. I would never view a VisualBasic programmer as an expert. And yet, my first language was C-64 BASIC, my first language on a PC (actually, the IBM PCjr) was Cassette BASIC, and my first compiled language was QuickBASIC.

I've moved on, dropped the toys, gotten graduate degree in computer sicence etc.

But, argh!, I STILL read your STUPID BLOG! ;-)

Posco Grubb on June 2, 2008 12:00 PM

The value of a blog: to me, when I navigate the web waters for items of interest, and captain google sends me here--rightly so--time and again, well that's a good sign.

It's _the voice_, yes, but really it's the voice + the voice talking about code living in the real world (and yes, by that I imply it's akin to old school reality TV a la MTV in the early post-music vid era).

When you read a post like 'designing for evil' (001123.html) and think, that's what **I** would write about if only I had time to pull together all those geek-tasty info tidbits out there, then throw in a semi-coherent thesis to glue-em together ... and, um, if I were a riveting essayist (which a comment like this clearly dispels), well that's more than a good sign; that's nifty-swell, verging on fantastic-majestical.

And regarding "Pro" or "Amateur", I just want mandatory drug testing for *all* bloggers.

Micah on June 2, 2008 9:10 PM

salty orange juice? whaaa?

Anyway, this is a great example of why you don't and probably should continue to NOT answer criticism of your blog. It's not a strength for you. You write entertaining pieces highlighting interesting facets of what are otherwise often dry topics, and *that's* why you have readers.

And, uh, yeah. This isn't a discussion. The folks who believe blog posts are discussions either spend a lot of time talking to themselves, or also believe that politicians holding "town hall" meetings are engaging in "discussion" with their supporters/constituents. This is a bully pulpit, pure and simple - you talk loudly, we disagree quietly. That's what blogs have always been; discussions happen in forums, mailing lists, newsgroups... venues where merely being able to present an idea fails without a complimentary ability to also defend it. Bloggers follow in the footsteps of John C. Dvorak, not Socrates. And there's no shame in that. Keep up the good work...

Shog9 on June 2, 2008 9:42 PM

Jeff, just to reiterate many reiterations in the comments: Keep up the good work.

The great value and the reason I regularly read you blog is exactly that you do not put yourself up as an absolute authority in everything. You blog about your opinions and most of the time, I actually (mildly) disagree with you. From reading the comments on other posts, so do many of your readers.

There is nothing more boring than reading one of those self-important bloggers that only blog whatever opinion is popular at the moment. Typically these people have nothing but fanboys commenting, making the comment system close to useless.

It is also very refreshing to listen to Joel and your discussions on the stackoverflow podcast. They make it absolutely clear that you are just two guys with opinions, trying to make sense of it all...

Oh, and please take no heed to Daz:
"Take more care to research thoroughly before bringing out any articles similar to the XML or PHP ones again! Your takes on development philosophies are more interesting and thought-provoking."

I like the "freshness" of your posts. Sometimes you "get it wrong", but that just spurs interesting discussions in the comments.

Keep up the good work, Jeff!

dovetalk on June 3, 2008 3:09 AM

Jeff,

I can only commit to a few minutes a day to reading blogs - I've got a lot of work to do! I choose your site because you listened to your 8th grade teacher when you wrote your first report!

I'm amazed at the content you put out over a short amount of time...

You've even e-mailed me back when appropraite!


SheRa on June 3, 2008 6:31 AM

Jeff, I just want you to know that I do not share his opinion. I enjoy reading your opinions. I have learned quite a bit and even use your site for reference material. You do not know everything, neither do I, and neither does Alastair. Keep up the great work!

Aaron on June 3, 2008 6:58 AM

I have to admit that i mistook you for Steve McConnell with your blog's title and icon.... but the posts were very interesting. Although they seem to be less interesting these days.... getting to the bottom of the well? Still your a part of my daily read so it can't be that bad.

andy on June 3, 2008 4:21 PM

I personally enjoy your blog. As I am also getting my own blog off the ground at wandercoding dot com, I'm running into similar feelings. No, I'm not a guru by any means. I'm just a guy who has had a good career in software and wants to share my thoughts and opinions about it. When someone has a test that can be taken that elevates one to the level of guru in a particular field, then we'll have some interesting times.

As far as what makes someone qualified to be a good programmer, why is C the benchmark? Everyone knows that you don't really have a solid foundation in software unless you wrote FORTRAN on punch cards for a mainframe. Since nobody does that anymore, shouldn't everyone write assembly code for their platform so you REALLY understand what's going on under the hood? What about object-oriented programming? C doesn't touch that either and while C++ does, it's a PITA to develop in it. Pick a modern language and get your work done. Use some existing toolkits and stop having to reinvent the wheel.

Keep up the good work, Jeff. Stir up a little controversy now and then while you're at it.

Bill on June 4, 2008 7:57 AM

Jeff-

Like it or not, you have put yourself on the blog pedestal. This is because you blog is popular. Look at your readers and the number of people that have come to your defense. Because of this, the things your write influence people. I guess you might not be a so called "expert", but you are affecting the way people think about coding and programming in general, which is a good thing.

Now other bloggers may take note of some of your pieces, and now since we all know you don't know 'C', I can see how some of them may be thinking:

How can Atwood say the PHP sucks, he doesn't even know C!!! He's just a VB programmer convert. Humph!

So, there will be jealousy among other things with other bloggers, especially because you are popular. But, last time I checked, saying PHP sucked was an opinion, rather than a fact.

About the C thing.

Here's a statement I have a good chuckle with: You need to C to be adequate programmer.

Wake the f up people! It's not 1970, 1980 or 1990, it's 2008. C is a niche language, a dinosaur, especially for web development. If your a web developer, pick a framework like Ruby on Rails or ASP.Net and write your web application. No C experience required. Now there may be instances where C is appropriate, but it certainly isn't for web development and most applications in general. Modern framework(s) and languages have replaced this language.

Do yourself a favor to silence the critics and take the C course. You will learn a few interesting things like memory addresses and pointers. Things that modern frameworks hide. One of your homework assignments may be the Tower of Hanoi problem. You will be able to see a real "Stack Overflow" if you increase the number of disks in the tower and use recursion to solve the problem.

Jon Raynor on June 4, 2008 9:39 AM

this is probably the first time i am commenting here. i was introduced to the world of software blogging by joel and jeff. i cant remember how and why , but i happened to stay hooked. there are surely other bloggers but no one has been able to keep me interested the way these 2 have. sad that joel doesnt write a lot nowadays.
I will probably read the other bloggers ( with code snippets) when I am looking for something specific but for day to day reading and introducing me to newer areas everyday , i prefer j&j anyday.

I probably agree that someday i may graduate on, move on to other readings but I am sure I wont regret spending time reading jeff's blog. thanks for writing, jeff.

guys, why do we have to agree any article at all. We can form opinions, debate -- thats the way to learn.

There's a interesting quote I read a colleague's mail -- If you have an apple and I have an apple and we exchange apples, then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.

rahul on June 4, 2008 9:48 PM

@Bill
Yes everyone should write code in assembly. Trying to solve a complex modern problem in a completely masochistic fashion catapults you farther down the road of programming nirvana (read: insanity) than any other method I've tried. If you can survive the experience and still like cutting code - you've passed as extreme a hazing ritual as our little nerdy developer butts can handle. Stand tall codemonkey, you're one of us now.

SteveJ on June 12, 2008 11:35 AM

By the pompous tone of his article one must assume Alistair is lacking in genital mass.

Just thought I'd throw that one out there..

Mike on June 24, 2008 10:49 AM

Rankine is one of the most abrasive elitist jackasses on the interwebz, don't dwell on it duder.

Adam on July 10, 2008 8:36 AM

Wow these comments have gotten off topic!

My enhancement to this otherwise excellent description of the right attitude is that the "weakly" in "weakly held" should vary based on the amount of effort that went into the opinion.

Here's 500 words describing what I mean as applied to a real-world story: http://blog.asmartbear.com/blog/strong-opinions-somewhat-weakly-held.html

Jason Cohen on November 20, 2008 7:23 AM

Hi guys. I hope that when I die, people say about me, 'Boy, that guy sure owed me a lot of money.'
I am from Cameroon and too bad know English, give true I wrote the following sentence: "Ultimate place to look for cheap airfare."

With best wishes :P, Nevin.

Nevin on April 15, 2009 1:54 PM

Good morning. Where facts are few, experts are many. Help me! I can not find sites on the: kitchen islands. I found only this - <a href="http://kitchen-islands.info/Buy-kitchen-islands/Kitchen-islands-legs/">Kitchen islands legs</a>. Compare cheap flights and research airline tickets and travel prices to worldwide destinations with cheapflights. See the world famous zoo, sea world, the hotel del coronado, the coronado bridge spanish missions, and more. Thanks :-). Arnie from Africa.

Arnie on April 17, 2009 6:46 PM
Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.