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
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.
Your Snake kung fu is great, Master, but I've been studying the secret Mongoose style for months. Prepare to fight!
Not all programmers are amateurs, read a books from Tom Miller about DirectX and think about the amateur statement again
Your blog entries are getting longer. Maybe shorter would be better. Though it depends on subject and patience / interest of the reader.
"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.
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.
You lost me when you recommended Idiocracy.
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.
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.
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.
@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.
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.
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.
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.
Oh, and Napoelon Dynamite is not that great of a movie.
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.
Is it just me or have there been a manor influx of comments latly.
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.
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.
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.
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)
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.
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.
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. DD 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.
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.
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,
I'm sorry Jeff but you will have to learn C to redeem yourself in the eyes of the community!:)
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.
So it seems that while Jeff can take a bit of honest criticism with humour and good grace, many of his fans can't.
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?
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.
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.
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!
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,
"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?"
"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.
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 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?
I just re-read that and I apologize. I came across as an a$$. Sorry Alastair, you didn't deserve that.
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.
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;
"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;
I could go on but I will leave it at this...
Seems we are all fanboys for something.
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.
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.
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.
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.
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. :)
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
it was an unwarranted attack to self-aggrandize yourself
Jeff doesn't think so (as per his first paragraph), so why should you?
Did you just make up that 80% number? Because the majority of technical blogs that I read have no ads of any kind.
"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. ;)
"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... :-)
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...
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.
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.
...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...
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.
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...
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! ;-)
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!
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.
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!
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!
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.
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 jj 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.
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.
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..
Rankine is one of the most abrasive elitist jackasses on the interwebz, don't dwell on it duder.
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.
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.
Great post, Jeff.
Being hated by the masses is a true sign that you've made it. Unleash your inner Rex!!
keep up the spirit...he is just some fella jealous of u ;)
love codinghorror :))
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.
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.
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.
I'll vote with my wallet. *Click advertisment*
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 )
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.
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
I totally agree with you that the very moment anyone begins to think they are an expert at anything . Experts tend to close doors rather than open them. .Be an amateur and always keep learning, building, excelling, with humility and an open mind . be prepared to learn knowledge from cradle to grave. Anyone can't be expert of a thing because technology is changing,time is changing .knowledge is so vast that we gain a little bit of it in our life ..thanks
I totally agree with you that the very moment anyone begins to think they are an expert at anything . Experts tend to close doors rather than open them. .Be an amateur and always keep learning, building, excelling, with humility and an open mind . be prepared to learn knowledge from cradle to grave. Anyone can't be expert of a thing because technology is changing,time is changing .knowledge is so vast that we gain a little bit of it in our life ..thank you so much!
To build or establish any thing we need constructive thoughts.Be an amateur to learn knowledge .wisdom from life .I agree with you open minded person learns a lot ..i really like this blog.keep up the work!
craigslist san diego
Just ran across this post and it's absolutely brilliant. This is sort of attitude we need in this industry in order to make it better. _Thank you_ Jeff.