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

Aug 24, 2009

That Means It's Working

We may kid ourselves into thinking we're writing out of some sense of public good, or to create connections, or contribute some small bit of knowledge to the world. But let's face it. Most of us blog because we're raving egomaniacs. We not only love to hear ourselves talk, we're incredibly eager to hear other people talk about us, and the more the better. I think Dale Carnegie put it best.

Nothing is sweeter to someone's ears than their own name.

So it should come as no surprise that I have an automatic Google ego search set up for my name. Nothing special about that. It is considered neighborly to have your ear to the ground (within reason), and to politely comment on relevant articles mentioning you and your "stuff". All very standard, banal, ego-fluffing stuff.

But of all the mentions I've gotten, nobody has utterly nailed it in the way that Brian Gianforcaro has.

I've come to the realization that everything I hate about Jeff Atwood, is also something I hate about my self

Right on. That's one thing you and I have in common, burny.

As a software developer, you are your own worst enemy. The sooner you realize that, the better off you'll be. In fact, that's the tipping point between amateurs and professionals in our industry: the professionals realize everything they write sucks.

So, to the extent that I can become a conduit for other programmers to have that same epiphany in their own programming careers, that means it's working.

[advertisement] Interested in agile? See how a world-leading software vendor is practicing agile.

Posted by Jeff Atwood    View blog reactions
« The Only Truly Failed Project
Have You Met Your Dog, Patches? »
Comments

Hey Jeff, you missed this link to one of your previous entries: http://www.codinghorror.com/blog/archives/000297.html

R. Bemrose on August 25, 2009 2:11 AM

Oh, and you forgot this one too (particularly #10):
http://www.codinghorror.com/blog/archives/000834.html

R. Bemrose on August 25, 2009 2:13 AM

@Developer Dude

A professional needs to be aware that they can make mistakes, and know how to mitigate them. For example, with unit tests and code reviews. Believing that you are infallible is certainly an unprofessional attitude.

But a professional does also need to be good at their job, and have the confidence to use their expertise. I feel that constantly saying, “I suck at everything”, however tongue in cheek the intention, does not inspire confidence, either in yourself or others.

Phenwoods on August 25, 2009 3:04 AM

It's called the Dunning-Kruger effect.

http://en.wikipedia.org/wiki/Dunning-Kruger

Eagan on August 25, 2009 3:08 AM

Phenwoods,

I have confidence in what I know I have done before. I have confidence in knowing I can learn to do new things. I have confidence I can improve on what I did before.

But I think it is more important to know that what I did before was most likely (at the very least) not optimum and quite possibly 'sucked'. Do I go around and tell potential clients that my previous solutions 'sucked'? No - of course not. Do I tell potential employers? No - I tell them that those solutions could have been improved, and any employer worth working for would understand - the really good ones would understand if I said they sucked (my current employer does).

Personally, I would rather employ/work with someone who knows they 'suck', isn't afraid to admit it, and works hard at improving - rather than someone who thinks they are God's gift to the world and the rest of us 'suck', or even someone who doesn't know they suck (BTDT, both - a number of times).

Developer Dude on August 25, 2009 3:30 AM

Oh, and BTW, it takes a lot of confidence in ones self to admit they 'suck', even if it is only self-deprecating humor.

Developer Dude on August 25, 2009 3:51 AM

You know, kind off of the subject here, I read something interesting on the back of a lighter pack:

"No lighter is child proof."

No language is programmer proof either. Anybody can do anything stupid in any langauge in any IDE.

Just one more way every programmer, of any level, sucks.

Adam on August 25, 2009 3:56 AM

Meta-blogging (which he claims to hate)
Regurgitating the same stuff up again (this is the umpteenth "All my code sucks but so does everyones" post)
Increased time between posts
Less real content per post.
Contradicting himself between posts (good code = code that gets used, followed by even dead projects are useful)

I never got before people saying Jeff has a poor blog, but this post has caused me to look back and see, yes he does (at the very least as of late)

Also captcha is T"Many delan0: WTF? Bad scan?

Macha on August 25, 2009 3:57 AM

Am I the only one who realize what Jeff is up to? A while back he made a conscious decision to perform an experiment, "Let me see how many irrelevant, ego-centric and self-projecting blog posts I can write and *still* have people slobber all over me about how smart I am in the comments".

He has pushed the boundary pretty far lately but there is still 80-85% comments in the 'me too' category. In this blog post Jeff says that you are only a professional if you know that the code you write suck and in the responses people are falling over themselves proclaiming that they suck at least twice as much as the next guy. Hilarious.

I am looking forward to the posting in a couple of weeks when Jeff will proclaim that you are only really smart if you are really dumb. The comments to that post will provide some serious entertainment.

And perhaps Jeff's experiment will end at that point so he can go back to writing about interesting topics.

Ergo on August 25, 2009 4:31 AM

then you didn't read his post about surgeons a few days ago


quoting Phenwoods on August 25, 2009 5:34 AM
[quote]
"In fact, that's the tipping point between amateurs and professionals in our industry: the professionals realize everything they write sucks."

If that were true then it would be a very sad reflection on our industry. I cannot think of any other industry that would regard knowingly being incompetent as a definition of professionalism.[/quote]

james L on August 25, 2009 4:49 AM

"He has pushed the boundary pretty far lately but there is still 80-85% comments in the 'me too' category. In this blog post Jeff says that you are only a professional if you know that the code you write suck and in the responses people are falling over themselves proclaiming that they suck at least twice as much as the next guy. Hilarious."

Did you see his Windows 7 post a while back? That stirred up some real controversy with the comments, and plenty of people were completely against Jeff.

Adam on August 25, 2009 4:56 AM

@james L

"then you didn't read his post about surgeons a few days ago"

You mean the quote from this article?

http://www.newyorker.com/archive/1999/08/02/1999_08_02_057_TNY_LIBRY_000018760?currentPage=all

Don’t see anything in that about neurosurgeons knowing everything they do sucks. There’s the quoted part that says that the best surgeons are those that admit to making mistakes, and not blaming them on outside factors. As I've said before I agree completly that professionals need to admit they make mistakes, and try to avoid them. But the article then goes on to say, “What this attitude drives you to do is practice over and over again, until even the smallest imperfections are ironed out.”

Note, it doesn’t say it drives them to try to suck a little less next time.

Another quote from the article,

This is the hard part about understanding physical genius, because the source of that special skill—that "feel"—is still something of a mystery. "Sometimes during the course of an operation, there'll be several possible ways of doing something, and I'll size them up and, without having any conscious reason, I'll just do one of them," Wilson told me. [...] When he talks about his extraordinary success as a surgeon, he gives the impression that he is talking about some abstract trait that he is neither responsible for nor completely able to understand. "It's sort of an invisible hand," he went on. "It begins almost to seem mystical. Sometimes a resident asks, 'Why did you do that?' and I say"—here Wilson gave a little shrug—" 'Well, it just seemed like the right thing.'

Phenwoods on August 25, 2009 5:32 AM

Denny Crane

Denny Crane on August 25, 2009 5:59 AM

Be careful clicking on those links in the Google Alerts. The URLs don’t appear to be vetted against the blacklists, and I found many sites word spam to become traps for malware.

Josh on August 25, 2009 6:19 AM

>automatic Google ego search set up for my name

You means that you have a bookmark for that search or you have some kind of software that look for what's new on the search result from Google?

Louis-Charles on August 25, 2009 6:20 AM

"In fact, that's the tipping point between amateurs and professionals in our industry: the professionals realize everything they write sucks."

If that were true then it would be a very sad reflection on our industry. I cannot think of any other industry that would regard knowingly being incompetent as a definition of professionalism.

Phenwoods on August 25, 2009 6:34 AM

In my experience writing something that doesn't suck is usually not practical :)

nattebums on August 25, 2009 6:45 AM

So now you're blogging about other people who might be blogging about your blogging?? META explosion :-)

Callum on August 25, 2009 6:47 AM

@Phenwoods

I don't think it's about being knowingly incompetent- it's about being critical of your own work and continuously striving to improve.

Charlie

Charlie on August 25, 2009 6:48 AM


Done with this blog... these posts are getting truly painful!

Marky on August 25, 2009 6:48 AM

If as programmers we come to the realization that everything we build sucks, how is it possible to remain happy with our profession? Wouldn't the constant self criticism eventually lead to a what's the point attitude?

Ryan on August 25, 2009 6:50 AM

"Nothing is sweeter to someone's ears than their own name. " Honestly, I just wish people would stop calling and would stop emailing. Everyone is too damn needy and needs to learn how to get things done on their own.

TJ on August 25, 2009 6:50 AM

@Phenwoods That's not how I read Jeff's blog. He's not glorifying his incompetence, he's saying in a tongue-in-cheek way that you need to learn from your mistakes and realize that not everything you code is perfect.

I heard a similar story on an NPR podcast yesterday. They said that neurosurgery residents who admitted they made mistakes and tried to correct them ended up staying in the program whereas those who blamed their failures on bad luck, others, etc. ended up dropping out or getting asked to leave.

Todd on August 25, 2009 6:55 AM

I try to tell junior developer this, but they scoff. They believe they're brilliant right out of college. You can't tell them anything...they'll learn.

MarketGarden on August 25, 2009 6:57 AM

@MarketGarden: That is why we do not hire programmers unless they have 5 years of experience. Its money well spent as we do not have to deal with any snot-nosed punks who think they know it all, but obviously do not.

TJ on August 25, 2009 6:58 AM

@MarketGarden

I'll admit that I'm fairly fresh out of college, but I still believe elegant programs can and should be written. As others have stated, this typically isn't done in an organization as it isn't "cost effective". Why spend time planning a nice solution when you can start creating *today*.

Unfortunately this is the world the managers that deal with the bottom line, so it becomes ours as well. I think if true maintenance costs could be gathered using accurate metrics, this would be the point elegant programs would be found back in the spotlight.

Then again I'm just a "college grad". Perhaps I'm only dreaming.

Russ on August 25, 2009 7:04 AM

@MarketGarden
"I try to tell junior developer this, but they scoff. They believe they're brilliant right out of college. You can't tell them anything...they'll learn."

Amen brother.

Jeff R. on August 25, 2009 7:10 AM

Another WTF post.

David Dawkins on August 25, 2009 7:12 AM

i can see that alot of you have become dedicated to "not getting it" with regards to Jeff's writing. is it really so hard to understand the use of sarcasm, hyperbole, and self-deprecating humor? these are pretty low level literary devices.

dbg on August 25, 2009 7:22 AM

I've previously blogged about the how much comments on this blog irratate me, but I have to admit, that even with the negative comments, the fact is people are READING the blog and adding to your popularity since someone else will at some point BLOG about it. Good or bad people still follow, if only to continuelly complain. Isn't that what readership is all about in the end?

Now if only all of us can learn this important lesson :)

Captcha: yahoo erably

Diago on August 25, 2009 7:24 AM

This shouldn't be narrowed to software development. It's generally true that a personality attribute you dislike about someone else is because it's something you hate or despise about yourself.

Think about it.

Alex Angas on August 25, 2009 7:26 AM

Just like a crap restaurant, you will still come by once it a while and see if it improves. Unfortunately, it didn't today and just more self-egoistic crap.

sg6 on August 25, 2009 7:41 AM

This post is mostly about psychology than anything else. When you make, it implicitly says you make mistakes. This is true for any profession. The only difference is that in programming everything is new, there is no production phase and the errors stay in the product.

And yes, people who read your posts start to think and maybe open their mind.

Blog on system engineering
http://design-to-last.com

daniel on August 25, 2009 7:44 AM

Classic quantifier error here: the post linked as 'everything you write sucks' actually makes the point that 'everyone [sometimes] writes stuff that sucks', which is a related but actually completely different assertion.

Larry Lard on August 25, 2009 7:54 AM

I agree in the sense that as I mature as a developer I’m much more critical of my work than I used to be – but don’t go as far as thinking my work sucks. Maybe I’m not there yet. Maybe I’m not quite the ‘Professional’ I think I am.

Anonymous on August 25, 2009 8:05 AM

I'd like to personally invite those with nothing worthwhile or positive to add to the conversation to quit wasting my time with your "this sucks" posts.

Today's amusing captcha: nice $11.2-million
-- yes, $11.2 million would be nice, thank you.

A. L. Flanagan on August 25, 2009 8:06 AM

I don't know why I keep coming to this site and reading these articles, so now I shall stop.

Andrew Phillips on August 25, 2009 8:07 AM

@TJ: And that is why I as a software engineer coming out of college can't find any good jobs, everyone needs 5 years experience, now how am I supposed to build such an experience when I am unable to get a job in the field?

It becomes a chicken and egg problem.

Now, I will tell you right now that not all of us think that way; not all of us believe that our shit doesn't stink, and to be honest, I think most of my code absolutely sucks. There are a few gems hidden under all of the crap that make me proud and make me feel like I have accomplished something, but they are so uncommon that it makes me sad.

Feel free to click my name to see my portfolio website- it contains the projects I am most proud of that I have completed in the last three plus years while at the University I am currently attending.

Bert JW Regeer on August 25, 2009 8:08 AM

Professionals realize everything they write sucks? Really? That's the end result we're all working towards??? I would think becoming a professional means learning to recognize when your code sucks and also knowing how to make it better.

I've been reading for some time now and you played a part in my decision to just start writing; not to become a raving egomaniac, but to share information with others who might somehow benefit from it. Popularity has a funny way of changing motives, so I guess it's just a pitfall to guard against.

Jeromie Walters on August 25, 2009 8:08 AM

Paul Graham just release on essay that has something to do with this. "The idea that we're the center of things is difficult to discard" -> http://www.paulgraham.com/randomness.html

Anonymous on August 25, 2009 8:12 AM

@Phenwoods "I cannot think of any other industry that would regard knowingly being incompetent as a definition of professionalism."

Have you not ever met a Politician?

Peter on August 25, 2009 8:16 AM

@Bert JW Regeer
What you learn after 5 years of experience is that 5 years of schooling means absolutely nothing. And it's chicken-and-egg in the same way learning to ride a bicycle is chicken-and-egg: How do I attempt to ride the thing if I don't know how to ride the thing? Slowly, wobbly, and with trial and error. (Though networking, bullshit and sheer blind luck are more effective in the job market)

Peter on August 25, 2009 8:21 AM

Oddly, I often cringe when I see people talking about me. Far from being an ego maniac, I was quite happily avoiding the limelight for most of my life. It's just that as I got older and I understood more, I felt more and more guilt about just hording that knowledge. Some foolishly out-dated notion about trying to give something back drives me forward, but there are far too many days lately when I think that I'm just deluding myself. You can lead a horse to water, but you can't keep it from creating spaghetti code ... the systems we build are quite possibly the ones we deserve.

As for code and professionalism, you eventually pass through that period were you realize that your code sucks (and even more importantly that it will disappear within a remarkable short period of time). The next step is in trying to figure out the qualities that actually allow it to survive beyond its normally limited lifespan. After that comes learning how to drive larger and larger efforts. Then possibly a quiet "early" retirement :-)

Paul.

Paul W. Homer on August 25, 2009 8:21 AM

This is actually true in all professional careers.

It is usually stated as "The more you know, the more you realize you don't know."

In other words, it takes a significant amount of experience to realize how much there is to know, and then to realize there is no way any one person can know even a significant portion of that. Realizing that, you become much more effective as you are always open to a better way (with the experience to know that not every way that claims to be better actually is).

Practicality on August 25, 2009 8:29 AM

Yes, of course, Jeff never means what he says. Yes when he says that he knows that everything he writes sucks, he really means not everything he writes is perfect; it’s just a slight exaggeration for comic effect (or trolling, I’m never sure).

But in this case, it doesn’t matter. It’s not what Jeff intends that is the problem, it’s what it implies about our industry. The problem is that most people outside the industry already think that everything we do sucks. Anybody can claim to be a professional developer, and most of them do suck all the time, and as long as we emphasise our incompetence (however tongue-in-cheek we know we are being) it’s difficult to convince anyone that there are developers who take a pride in their work, and are capable of writing code that does not suck, I cannot see this attitude changing.

Again, I cannot think of any professional who would say that they suck, even as a joke, because such jokes are not professional.

Phenwoods on August 25, 2009 8:33 AM

I think it helps if you read Jeff's posts with a pinch of salt and a healthy dash of sarcasm. I doubt very much that he goes home at the end of the day and whips himself too bad for being responsible for such shoddy workmanship, rather recognizing the fact that there are so many possible permutations on how to write a given code segment that arriving at the optimal solution is unlikely and if by some miracle of dump luck you did write the optimal solution it would be unlikely that you would recognize it as such.

May 'sucks' is too gross a generalization for some readers, the same readers probably don't think kittens are cute and don't 'get' comedy.

Analogizing the code we write to aircraft; we're unlikely to build an SR-71 on any given day but we can make a brick fly easily if we strap a big enough engine to it.

Steve on August 25, 2009 8:48 AM

@Practicality
'It is usually stated as "The more you know, the more you realize you don't know."

In other words, it takes a significant amount of experience to realize how much there is to know, and then to realize there is no way any one person can know even a significant portion of that. Realizing that, you become much more effective as you are always open to a better way (with the experience to know that not every way that claims to be better actually is).'


Truer words have never been written, yet no matter how hard we try to get it across, the young'uns won't hear it.

Related:

Grad school makes you dumber
http://www.phdcomics.com/comics/archive.php?comicid=374


Jeff R. on August 25, 2009 8:48 AM

Well at least we all know how Jeff Atwood really thinks. He thinks if is all might ego god blogger ... I think he is just being sarcastic and couldn't careless really.

We all do what we do. Most programmers have so much crap running through their heads, most the time not programming at all, blogging is a sort of therapy.

So, why put yourself down?

Matt Kukowski on August 25, 2009 8:49 AM

@Phenwoods:

The problem as I see it is it is a relative scale.

Although I believe that *all* code sucks on some level, and I have *never* witnessed /any/ code that was magically flawless, produced by anyone. ( People who think they have are the ones who are deceiving themselves into a false sense of security, and are likely to be the ones who write the worst code ).

The thing is, that all though all code sucks, all code that sucks is not created equal. Its quite plain to see some code sucks more than others, some code sucks little enough to be tolerated in use on a regular basis, and you can cope with it sucking that much.

And moreover, if you can join the above 2 stanzas together, then you can conclude that it is only ever possible for code to be aspired to to suck less. Then you, by assuming your own code sucks, enter a progressive iteration of constant improvement, where, hopefully, your code sucks less and less over time.

Contrast with the person who doesn't think their code sucks: They don't have any reason to seek improvement, so their code is likely awful and they will always write awful code thinking it awesome.

Captcha: preps 25 # Damn.

Kent on August 25, 2009 8:54 AM

Have you ever noticed how chickens don't really like anal sex?

Ibod Catooga on August 25, 2009 8:57 AM

@Peter:

I already realised that schooling doesn't matter; mainly because I've had to sit through the classes and I haven't learned a thing from them, yet in the real world, that piece of paper stating I graduated is worth money, so for that reason alone it is acceptable for me to sit through classes that are worthless, and pay thousands of dollars a semester.

C'est la vie!

Bert JW Regeer on August 25, 2009 8:59 AM

@Louis-Charles

>>automatic Google ego search set up for my name

>You means that you have a bookmark for that search or you have some >kind of software that look for what's new on the search result from >Google?

In case it got missed when mentioned by the first commenter, he is probably referring to a Google Alert that is setup as "Jeff Atwood."

n on August 25, 2009 9:20 AM

This is not specific to our industry. If you sit and write down your 3 least favorite people and the 3 qualities in each of them you most disdain, and really sit and analyze yourself afterward, you'll probably find that those 9 traits make up most of your dark side.

Matt on August 25, 2009 9:37 AM

Yes, yes, critical commenters ... Jeff deliberately overstates, exaggerates, trolls for traffic, stirs the pot, etc.

But in one very important sense, I would argue that it's literally true that "everything you (or I) write sucks": the state-of-the-art in software development is so abysmally bad, so horribly backwards, so lacking in any solid foundations, that none of us can help but write crap ... at least, compared to what it SHOULD be, and compared to other genuine professions, such as the traditional engineering fields of civil, electrical, and mechanical.

Don't agree? You're too close, and can't see the big picture. Consider:

Have you ever heard of a bridge in beta? Continual version upgrades for a passenger airplane wing? Security problems in a transmission? Ever had some of your appliances quit working because the power company upgraded their generators?

Do you see where I'm going with those analogies?

Real engineers get it right the first time, know exactly HOW to get it right the first time, meet specs, successfully work within time and budget constraints, satisfy the customer, and build things that last a long time PLUS work exactly the way they should. At least, they do most of those things most of the time.

We software developers hardly ever manage to consistently do ANY of those, much less all of them together.

We're in the stone age, fellow software developers. ALL the languages, tools, OS's are crap, relative to what they should be. So, it's not necessarily our fault, as individual developers, that everything we produce is junk; we don't have the technology to do any better. But yeah, it all sucks.

However, if we compare code to other code, it's certainly the case that some is much better, i.e. "good," and some is much worse ("crap"). In that sense, not everything sucks. But we, claiming to be "professionals," should never, ever lose sight of how crippled we really are. If most of us forget that, then it'll never get better.

Jeff R. on August 25, 2009 9:38 AM

Holly crap, its nice to hear our names when they are saying good things about us, or when someone is criticizing us too which means popularity, but I do hate when people at work say may name ... this means MORE JOB DAMN.

I skimmed through the comment and some guys where asking how Jeff could send his ears around to know who is talking about him... it could be done using Google Alerts, a free service from google, there are other services around to know who is talking about you.

by the way I have wrote an article about this issue (Do people talk about you?) in my blog, you can read it here ....http://omarkababji.weebly.com/1/post/2009/08/do-people-talk-about-you.html

Omar Al Kababji on August 25, 2009 9:43 AM

> So, to the extent that I can become a conduit for other programmers to have that same epiphany [that "you are your own worst enemy" and "everything [you] write sucks."] in their own programming careers, that means it's working.

There are a couple of problems with this.

First, it's possible to aspire to a higher level of quality than that. You don't get there without lots of self-criticism, but you can get there. Wietse Venema, Dan Bernstein, Edsger Dijkstra, Alan Kay. It isn't always practical, but it is definitely possible.

Second, Jeff, you're so cartoonishly idiotic that it's hard to identify with you. Brian Gianforcaro is some kind of Zen Master of humility. If you want to show people that they should criticize themselves, I think writing total bullshit the way you do is the wrong way to do it. Instead, people congratulate themselves on their intelligence: "I thought I wasn't very smart, but compared to this guy, I'm a genius!"

Kragen Javier Sitaker on August 25, 2009 10:08 AM

You're blogging about blogging again.

Mike on August 25, 2009 10:34 AM

I wish I could go back in time and not click this so I wouldn't add to your view count...

Bolt, the Super Dog on August 25, 2009 10:35 AM

Too much humor, I prefer substance and something that I actually find useful.

Daquan Wright on August 25, 2009 10:48 AM

EGO Check: How many have their name as the URL of their website or blog?
+10 EGO points!

blabla on August 25, 2009 11:13 AM

Bla Bla Bla all the talk about the engineering stuff is bla bla bla ... Software is crappy because its meant to be Soft not like other sensible thing, if you start asking civil engineers to make building that fly then lets see if they will get it working fine from the first time, if you ask mechanical engineers to make a CNC machine using only wood lets see if they can do it from the first time, or lets see if another civil engineer can build a building of 100 meters length with wood only.

Software is out there for one reason, because all other engineerings are not flexible, and to be able to adjust this deficiency comes the role of software, where there are no limits, and since there are no limits real programmers really overpass their capabilities, and things with all the limits of budget, material, and especially time.

but I don't know if you feel that you are building crappy stuff ... then why did you choose this road? is there anybody who likes to build crappy stuff?

Omar.

Omar Al Kababji on August 25, 2009 11:25 AM

"Have you ever heard of a bridge in beta? Continual version upgrades for a passenger airplane wing?

Sure: http://www.icivilengineer.com/Failure_Watch/

A street not far from me was under major reconstruction, 6 months into the project they hit a water line that shouldn't have been there, they then proceeded to tear up everything they had done up to that point and redo it.

"Security problems in a transmission?"

Sure: Bridgestone/Firestone Announces Voluntary Recall of 3.85 million RADIAL ATX and RADIAL ATX II Tires, and 2.7 million Wilderness AT Tires.

I had to replace the shifter belt in my car, I found out afterwards that my model car made in that year very often has that problem.

"Ever had some of your appliances quit working because the power company upgraded their generators?"

Not long ago a backup generator caused a power outage where I work, because it had a design flaw, the power would not have gone out at that time if there had not been a backup generator.

re: electrical engineering

http://en.wikipedia.org/wiki/Pentium_FDIV_bug

re: surgeons

Many procedures in the medical field don't ever leave beta, they just give you a estimated percentage chance that it will work for you, or not, or kill you.

Pharmaceutical companies release products to limited user beta testing all the time: Clinical Trials.

glengarry on August 25, 2009 11:35 AM

WTF? My code sucks? But it WORKS. :)

PaulG on August 25, 2009 11:48 AM

Okay... that article is egocentric, again blogging about blogging, but most annoyingly very Toll like.

"Hey - why not insult an entire profession? That's sure to get lots more comments and comments = visits, and visists = $$$"

Umm... Trolling much???

I'm sorry, but I don't buy the argument that it's not blatant trolling because there is self-deprecation involved.

No… it’s still trolling because it’s a broad stroked insult against an entire community who are very likely to be emotive about the point raised.

Most importantly – I’ve only come here to keep informed about broader IT issues. That hasn’t happened in a long while, so I’ll check out for now, delete the entry from my bookmarks and come back once in a blue moon to see if anything changed.

It was good while it lasted.... well... not bad anyway.

Philip on August 25, 2009 12:06 PM

Fun new game – see how long a path of Coding Horror links you can make before coming to a dead-end or cycle. For example, starting with this post, we get:

1.That Means it’s Working (August 24, 2009): “everything they write sucks” ->
2.On The Meaning of "Coding Horror" (December 15, 2007): “everything you write sucks” ->
3.Sucking Less Every Year (March 3, 2006): “We all write shitty software” ->
4.We Make Shitty Software.. With Bug! (October 6, 2004): “the best programmer in the world” ->
5.Why I'm The Best Programmer In The World* (August 14, 2004): “better than we were a year ago” ->
6.Sucking Less Every Year (March 3, 2006)

So that scores 5. Can you do better?

Loki on August 25, 2009 12:08 PM

So true. I used to take criticism seriously. Ha.

Steve on August 25, 2009 12:09 PM

I once saw that engineering is a process of doing something moor poorly the first time and doing it less poorly the second, it's not much different for other related industries either. Companies shouldn't be looking for people with degrees if experience is really all you need to get the job (college does cost money after all and time). Although the huge amount of sarcasm within some of these articles isn't really all that helpful to me, not sure how long I'll be subscribed. lol

Daquan Wright on August 25, 2009 12:25 PM

Jeff, this may be a little OT, but I saw in the September issue of WIRED that you once wrote a Craigslist app that Craig Newmark shot down--perhaps it didn't suck enough?

Pete S on August 25, 2009 12:37 PM

Everything I write seems like legit code, normally I have an awakening months after and I'm ashamed.

It's the main reason I opensourced http://resourceblender.codeplex.com/ and http://resourceblendernet.codeplex.com/ . Hopefully someone who's had more of these embarrassing realizations will enlighten me more.

Harry Jennerway on August 25, 2009 12:38 PM

Jeff:
"In fact, that's the tipping point between amateurs and professionals in our industry: the professionals realize everything they write sucks."

Phenwoods:
"If that were true then it would be a very sad reflection on our industry. I cannot think of any other industry that would regard knowingly being incompetent as a definition of professionalism."

Actually, from what I have read (a number of different studies, including one IIRC on neurosurgeons who had a high incidence of malpractice?), one of the distinguishing characteristics between the competent and incompetent professionals in any domain is that the competent pros *know* they don't know everything and consider that there is a lot of room for improvement in their work, and strive for that improvement.

Indeed, I seem to recall at least one 'scientific journal' article about this being a major distinguishing characteristic of intelligence in general. Most people wouldn't word it that way, but most of us are intelligent enough to know what Jeff meant.

I know that I look at code I wrote years ago and cringe. I look at code I wrote last year and notice what I did wrong. I look at code I wrote last month and see where it can be improved. That is what I love about my profession; is that I am learning something new almost every day and improving my skills and understanding. A major part of that is looking back on past work and noting just how much it sucked. Some of it didn't, but much of it did.

But then if you think everything you did smells of roses, well that says something too - doesn't it?

Developer Dude on August 25, 2009 12:58 PM

Jeff R: "Continual version upgrades for a passenger airplane wing?"

Boeing 787

'nuff said ;-)

Developer Dude on August 25, 2009 1:02 PM

Lighten up, Francis.

Sergeant Hulka on August 25, 2009 1:09 PM

If you can't look back on your code (or life) without any regrets, you either didn't attemp anything meaningful or you're a fool.

Guinness Fan on August 25, 2009 1:30 PM

"Real engineers" don't always get it right the first time. That's why there's prototyping and modeling. They also work with physical things and set parameters that don't change. The hardness of a piece of a certain steel alloy will be the same 100 years from now as it will today. The ability of a piece of copper wire to conduct electricity will remain the same 1000 years from now as it is today. Additionally, feature creep in engineering means raising the cost of the project both in terms of manpower and materials, and that cost remains with the product for the duration in which it is produced or maintained.

"Real engineers" get it right because they have it easy. The physical world has been documented for thousands of years. That means its thousands of years too early to complain about programmers and the seeming lack of ability to get it right the first time.

GregoryD on August 25, 2009 1:33 PM

@dbg

"is it really so hard to understand the use of sarcasm, hyperbole, and self-deprecating humor? these are pretty low level literary devices."

Quite so. It should be obvious by now that all Jeff's output is intended to be a satire on bad practice. Calling the blog "Coding Horror" should be enough of a give away.

The problem is that as satire it simply isn't very funny, which may be why so many people fail to get it.

Swift on August 26, 2009 3:00 AM

Now if you want funny satire:

http://blog.wekeroad.com/blog/nothing-to-say/

Swift on August 26, 2009 3:55 AM

I really wish I knew that when I started a career in programming. My perfectionism ego battled with my code daily, that I burned myself out!

Noel on August 26, 2009 4:08 AM

Some very wise greek guy said something like, "the more I know, the less I know". Something like that. It's in the same spirit, and seems to be something common among all self-aware professionals in all professions.

Robert on August 26, 2009 4:13 AM

But everyone is their own worst enemy.

And about that name thing: Denny Craine.

Paula B. on August 26, 2009 4:14 AM

Malkovich Malkovich Malkovich?

secretGeek on August 26, 2009 4:22 AM

Oh, and BTW, my code may suck, but everybody else's code sucks more. ;-)

Developer Dude on August 26, 2009 5:39 AM

Phenwoods:

"If, as is most likely, you’re somewhere in between – you know you don’t suck at everything, but do make mistakes – then saying you suck suggests a lack of confidence. Either you genuinely believe everything you do sucks – you lack self-esteem, or you are being self-deprecating in a way that is intended to lower peoples expectations. When you do a half-decent job, people will congratulate you for not sucking, rather than ask why you didn’t do a fully decent job."

Uh, thanks - I think. Whatever...

Developer Dude on August 26, 2009 5:41 AM

@Developer Dude

“Oh, and BTW, it takes a lot of confidence in ones self to admit they 'suck', even if it is only self-deprecating humor.”

Possibly. I think it really depends on context.

If you genuinely do suck at everything, then admitting it takes a lot of confidence – but if you do suck at your job, I hate to be the one to break the news to you, but maybe you’re in the wrong job.

If you’re brilliant at your job, then it takes a lot of confidence to say you suck, because you are hoping that everyone knows how good you really are and will immediately see how brilliant your joke was. But it’s quite likely your confidence is misplaced.

If, as is most likely, you’re somewhere in between – you know you don’t suck at everything, but do make mistakes – then saying you suck suggests a lack of confidence. Either you genuinely believe everything you do sucks – you lack self-esteem, or you are being self-deprecating in a way that is intended to lower peoples expectations. When you do a half-decent job, people will congratulate you for not sucking, rather than ask why you didn’t do a fully decent job.

Phenwoods on August 26, 2009 6:04 AM

"Most of us blog because we're raving egomaniacs"

Elitists' retort: So you accept it after all! Hahahaha!

Commoners' reply: You people don't change ever, do you?
Commoners' reply 2: The more you people show change, the more you are the same.

Commoners' argument : What about those who don't blog?

Observer's argument: Character assassination is the best way to silence those who refuse to bend.

Distant observer's observation: Word games are no consolation for world games.

Reply of someone infected by the "Elite Troll" disease: You seem to be of the b0rg because you see no difference between word games and world games - everything is a program to you!

Well, it's your blog site, your property and your rules.
"Participation is irrelevant. You shall be simulated!"

warofthewords on August 26, 2009 7:02 AM

D.W.Winnicott wrote about the "good enough mother". Since we all, at the end, suck as parents, he actually meant "don't suck to much". Is that what you mean?

the geezer on August 26, 2009 7:11 AM

This blog was so good when it was about programming. But recent entries... Well, they just suck. Really. You might consider renaming a blog to a "Scribbling Horror" as well.

skoptelov on August 26, 2009 7:18 AM

Jeff,
From this amateur CTO (chief technical outlier)to you...
What programmers do is still magic to me, and I am usually impressed!

Bruce Christensen on August 26, 2009 8:57 AM

I've come to the realization that Jeff's depressed.

Not everything in the world sucks y'know! ;-)

Lighten up a little. Or at least stop blogging about it.

Alex on August 26, 2009 12:01 PM

So to sum it up, Jeff Atwood sucks at writing software and that makes him cool. These blogs suck, does that make them cool?

CrotchRocket on August 26, 2009 12:16 PM

@CrotchRocket

Pay attention. If Jeff knows this blog sucks, he's a professional blogger. If he doesn't know it sucks, he's an amateur.

Phenwoods on August 26, 2009 12:37 PM

There's no point in obscuring your message so much that you can't connect with your audience. The information on any website isn't about you in the first place, it's about your consumers or at least for your consumers. I do plenty of reading, you can't feed me his "satire" bullshit.

Daquan Wright on August 26, 2009 12:45 PM

Protip:

Technical stuff next time.

BmB on August 27, 2009 3:25 AM

Well, I guess to defend Jeff, just a little bit:

I think the thing he overstated was this:

"There's something fundamentally wrong with the programming profession"

The reason?

We're invalidated every year. Every time our language is updated, we're offically outdated, like a MS language. A new VB.NET comes out every couple years. Don't know the latest .NET framework inside and out? You're gone. You're worthless.

Few professions are in this state. If you are a carpenter and have a 2 year old hammer, or are a teacher with a 4 year old ruler, or a reporter who reports on an old philosophy, then you don't suffer from our ailments.

Oh, and:

"Sheesh, this is what happens when programmers start at age 13 and do literally nothing else with their life. They start to live in some imaginary world where the problems of their profession are completely unique"

No, I think that's what happens when you don't have associations with other programmers. MSDN, for example, is a great place to accociate with other programmers because you there's always problems to be solved, which allows you to put your expertise to the test and to find out the commom problems of your language.


Adam on August 27, 2009 3:58 AM

@Adam

"We're invalidated every year. Every time our language is updated, we're offically outdated, like a MS language. A new VB.NET comes out every couple years. Don't know the latest .NET framework inside and out? You're gone. You're worthless."

This is a good point, but is not true of all programmers.

I suspect (i.e. this is a wild guess) that the majority of programmers are using C\C++ and other languages that haven't changed significantly for decades. Also, I don't think it should be _that_ hard for a professional to learn a new version of a language every couple of years. The language is just our tool, and other professions do have to learn to use new tools from time to time.

Phenwoods on August 27, 2009 4:59 AM

Nothing to add to what Langdon Pressman wrote.
BloggingHorror is far less interesting to me than CodingHorror was ;)
Regards,

Olivier Demeijer on August 27, 2009 5:09 AM

Hate to break it to you, Jeff, but EVERY SINGLE PROFESSION is this way. You quickly learn that you're not invincible and plan your projects accordingly.

Sheesh, this is what happens when programmers start at age 13 and do literally nothing else with their life. They start to live in some imaginary world where the problems of their profession are completely unique.

Mike Judge on August 27, 2009 8:40 AM

Interesting post but even more interesting comments..lol

varun bhanot on August 27, 2009 9:57 AM

Dear Mr Atwood,

Do I have your permission to tell your boss that everything Jeff writes sux badly?
If yes, could you make my life easier by providing some concrete examples?

Best regards,
Got-promoted-because-screams-loudest

Joe Blow on August 27, 2009 11:21 AM

More comments»

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.