May 29, 2008
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.
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.
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
Humor and humility from a code blogger! I guess that's part of the reason why I enjoy reading your posts, sensei. :)
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.
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.
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?
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.
This is why love the podcasts so much from stackoverflow. Reminds me that Jeff is a regular guy just like all of us.
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.
@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.
Hey Now, Jeff
Some looser trash talks my authority on everything
Srsly not Cool.
@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.
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.
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?
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.
Think that ScottGu is as amateur as I'm...it make me feel so good.
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!
(software engineering student, UK)
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.
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.
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.
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.
The "strong opinions, which are weakly held" position is fantastice. Words to live by... at least until some better philosophy comes along.
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).
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 :)
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.
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!
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 :)
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.
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. :-)
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.
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 :-)
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
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.
"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)
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
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.
As someone else already said "Keep bloggin' mate, you are doing it so goood!"
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.
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..."
Yeah it was definately a traffic bait post.
It might have been a mistake to post it here and give him the traffic. :-)
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. :-)
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." ;-)
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.
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).
There's a word for you, Jeff:
You're a writer. (And a good one.)
"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 :)
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.
By the way, since we've determined that this blog is useful, can we talk about something other than this blog? ;)
"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."
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.
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...
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!
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!
I like your posts much of the time, it's your fan-base that annoys me!
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.
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. :)
"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
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.
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. =)
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.
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?
"To avoid criticism do nothing, say nothing, be nothing."
Elbert Hubbard (1856 - 1915)
Keep up the good work!
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.
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).
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.
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.
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
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.
Fuck Alastair, Jeff Rules!
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.
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
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.
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.
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...
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)
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."
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.
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
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! :)
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.
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.
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.
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.
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.
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).
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).
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.
but, but, everything about PHP really *does* suck!
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.
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.
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.
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.
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.
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.
BTW, how can he critique stackoverflow when the site is not even in private beta yet?
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!
@ 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++) :-)
@Bart: Certainly you can be an expert without learning C. Just not an expert on programming :-)
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.
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!
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.
"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.