This goes a long way to explaining why software developers are so opposed to electronic voting systems.
vvvvvvvvvv
In fact, I think you can tell a competent software developer from an incompetent one with a single interview question:
What's the worst code you've seen recently?
If their answer isn’t immediately and without any hesitation these two words:
My own.
Then
^^^^^^^^^^
…they clearly don’t read TheDailyWTF.
My code tends to actually compile and run, and do more-or-less what it’s supposed to do most of the time, and be fairly comprehensible with a bit of effort. So while it may not be all that good in an absolute sense, it’s still way better than a lot of other code that I’ve seen out there.
You are absolutely correct, Jeff, yours IS the worst code I’ve ever seen.
err, “…they just might read TheDailyWTF”. Or they might be not answering because they forgot their coffee and fell asleep.
I can’t say that I hate my own code. I’ve been EMBARASSED by my own code because I know I can do better. Sometimes circumstances required a ‘compromise’ and I’d comment the heck out of the code with the intent of coming back and ‘fixing’ things - but we all know how often we get to do that.
But hating code? No, I’ve seen code so far beyond god-awful that it boggles the mind. It’s THAT level of ‘badness’ that I reserve the ‘hate’ emotion for.
I am a programmer, and I love software… I love all this free software I have found over the years, making my life easier, not getting in the way. The CLCL clipboard manager, the Flexible Renamer, the VirtuaWin, the BareGrep, etc. Of course, they are not perfect, sometime even buggy, some are almost abandonware, but hey, they get the job done, they are lightweight, here when I need them. In the case of my favorite editor (SciTE), I even helped in getting the features I wanted…
Now, indeed, software can be irritating, too big for their purpose (more later), slow, missing some feature essential for me, or just some ergonomic facilities, etc.
And my code is far from perfect, particularly the one I wrote some years ago (starting both in Java and OO, in particular!).
But hey, I try and improve. And if still not perfect, I don’t necessarily shot it down.
I agree with you on software coming with hardware. In France, Orange ships a CD with their ADSL box. A must avoid, even their technicians agree! The box has an IP address allowing all necessary management, yet they provide a bloated software, sure with a nice face (skinning) but totally on the way: I had to fight it on some friend’s computers…
Skinning seems to be the rage, the excuse for bad ergonomics. The software coming with my mobile phone is of same category: I install it (bloated, several MB too) and on first run, it download several other MB of update! Installing a bloody media player (as if I needed another one…), and lot of unnecessary similar stuff. I installed to easily manage the address book (no direct way for this) to avoid the phone keyboard but it is so crippled and lacking of features (perhaps half the possibilities you have on the phone itself) I renounced to use it.
I won’t say for my numeric cameras as I didn’t even installed their software… But I see complete paper manuals are out of fashion, you have to load the CD to access the full menu description! (while getting hundred of paper pages… in foreign languages! The joys of packaging.)
Software is hard to do. Good ergonomics are even harder, and too often designed by programmers, not by competent people.
I do such designs, but at least liking software, I vaguely know some things about what is good and what is not.
Ok, wait.
programmerHatesOwnSoftware != everythingElseIsCrap
These two statements are wholly incompatible, yet Jeff hawks both of them in this post…
Not sure today’s post is a healthy attitude.
Ah, the old crappy software bundled with your new hardware! Great!
A bunch of stuff came with an external hard drive that I just got recently. 3 of the pieces of software were to help with backing up, and the other 2 were things from Google. 
You’re right, that cd is full of old drivers and crappy software. good instinct.
But… turn off autoplay, already!
The craplets that you find on commercial desktop computers are one of the key reasons I won’t buy one. That, and the proprietary hardware of questionable quality. They are just too easy to build on my own.
Though I’ve written some code that I really didn’t like, I can’t say that I hate any of it. If anything, I’m more often disappointed that the design was less than stellar, or that I had to implement hacks for whatever reason to complete the work. But even the worst (IMHO) I’ve written was not the worst code that I’ve seen. That prize goes to a complex inline calculation that was duplicated 6 times in the same program.
Are you sure you stopped that CD before it splattered junk into the registry!?
I always want to believe that my current code doesn’t suck, but always looking back on a project or piece of code written 6, 3, or even 1 month ago always leads to eye-rolling and muttered cursing.
I think the biggest mistake we could ever make is thinking that what we are writing right now is perfect and “bugless”.
I’d agree - if the worst code you’ve ever seen isn’t your own, then you’re not looking at your own code closely enough. My code is easily the worst I’ve ever seen.
And then I fixed it.
Referencing this:
When people say “this sucks” they mean one or more of the following:
This doesn’t do what I need
I can’t figure out how to do what I need
This is unnecessarily frustrating and complex
This breaks all the time
It’s so ugly I want to vomit just so I have something prettier to look at
It doesn’t map to my understanding of the universe
I’m thinking about the tool, instead of my work
Maybe it’s not your code that sucks, but your process. You need to get yourself some usability/user-centered design/user experience (pick your flavor) folks! (or pass your app by a customer before you ship it…)
Maybe this explains why it’s so hard to make yourself test the stuff.
“Professional” developers working in development organizations seldom get rewarded for avoiding writing software. The entire incentive process for developers typically encourages them to churn out code whether or not it’s the right code, or even necessary code. It’s another form of measurement dysfunction a.k.a. perverse incentive or incentive distortion.
My response to you jumping across the room to stop your wife from installing software: Don’t be cheap! Get her a computer of her own. I did that and I’ve never been happier 
I think part of the problem here is that “code quality” can be very subjective. For instance: is it “good” to have hard-nosed exception handling for even simple operations, even though it might clutter up your code? Or should you err on the side of readability and just throw the exception back up the stack? The answer usually varies depending on whether you’re maintaining the function in question or just using it.
Quality measure also varies with context, language, etc. I’ve written some pretty heinous stuff before, with lots of nested data structures and other fun things, and I’m hardly proud of it (though the end result worked pretty well). But is bad code still bad if it was the best approach given the circumstances?
Sometimes the basic issue is a reverse of the old saying: if every problem is a nail, all your tools start to look like hammers.
please, tech bloggers, stop referring to the conception and birth of your beloved children in terms of computer jargon.
haha. captcha: new mistake
As web developer, I’m absolutly agree with Jeff.
I noticed that almost any project I found in my career is totally a crap. When I see an online catalog, my brain says “pretty sure it is outdated”, when I see a searchbox I think “sure they didn’t index all the site”, when a web ask me for personal data, I inmediatly think “probably they are going to store it in a plain text file”. Why? Becouse a lot of web projects (including my ones!) do that sort of things. And probability laws says that the web you are facing to, probably is doing that sort of nasty things.