That Means It's Working

@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?

@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)

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 :slight_smile:

Paul.

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).

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.

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.

@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

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?

@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.

@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!

@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.”

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.

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.

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

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!”

You’re blogging about blogging again.

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

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

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

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.