Nobody Hates Software More Than Software Developers

There’s nothing wrong with rounded corners.
There’s nothing wrong with new hardware.

Well, software is a little more complex that it appears eh. It’s always easy to be 10% done. Heck it’s easy to get to 90%. It’s always that last 10% that takes just as long as the first 90% of the effort.

One peeve is all software has to work for all permutations all the time. Despite “standards” people write different browsers, and some changes in a library break other stuff.

It happens with browser, with java, and with anything that decides to do something based on capabilities. We never win.

Another is how much effort goes into such mundane tasks, and how none of it is really fast. I have to jump through so many hoops to do really simple things. UI / database. Every week some mook has a new framework idea, except it’s half-assed. Every week Microsoft brings out another new data access framework. While I applaud their effort, a new team gets to 90%.

My favourite computer is the xbox / playstation. They’re not moving targets once they’ve been released. If all computers were like that we’d all be better off. Turn on and it works. I haven’t played a game on a pc for over 5 years.

Maybe everything should be scripted / JIT’d. Should we outlaw compilers?

I think that’s why it’s so impressive when you get a nice piece of software, like FireFox or Picasa, that just really excels. Most Mac programs also seem to be a cut above all the windows software out there.

Seems like the guy who wrote this article is forgetting a notable thing: that software has become so complex, that it is going to have a few bugs in it.

Now, yes, some of the software that comes with printers, digital cameras, etc. IS unnecessary (save for the driver itself)… but I cannot really blame the hardware manufacturers because someone, somewhere had to have ASKED for this type of software to be included with the camera.

Personally, I would NOT ‘nearly take out a cat’ just to stop someone from installing something on one of my computers… seems like putting the cart before the horse doing that.

The converse of this is that when I stumble upon really good software, I appreciate it more than others, because I know how hard it is to create.

@Andy Lumb - “You can’t really hate something with a passion until you have truly loved it first.”

So true. We hate it because we care. It’s hard not to be a critic when you’re passionate about a given subject, and programmers aren’t the only ones who do this. I used to know these two guys in film/tv production and I found it was impossible to watch a movie with them because they’d spend the whole time critiquing the production values - it was all “good panning this” and “bad lighting that”. They just didn’t experience a movie the same way others did and I think we do the same with software. Sort of like a magician may appreciate a good illusion, but for entirely different reasons than you or I.

It also seems that he is hating on software when most times, software installs without any problems. Let’s face it: without software, our computers wouldn’t be able to do anything, so we should not be hating on software and secondly, you should NOT hate your own code. If you have done the coding to the best of your abilities… love your code, because you have done the damned best with it that you can and you know that you have!
If someone else finds problems with it, tell them "Hey, did it to the damned best of my abilities, so I won’t apologize for it! You think you can do it better… do it yourself!"
I have honestly told people that MANY times in my life, and they usually say “Oh NONONONONONONONONONONO!” because they know that they couldn’t do any better when it comes down to it.

Agree: Jeff Atwoods code is the worst i’ve seen yet. Looks likes he hates software eng. and just hacks.

Oh… and give yourwife a chance for easier software. YOu have no idea how much about imageing hardware manufactures like Canon know and how much software is within a simple camera.

So it’s okay when you lie art us. but are you also lying to yourself (i remember your post on getting hyped by iphone software…)

Oh… i’m often surprised when looking at old code o mine how good it is working, and for how many more things something can be used. Even surprised that i thought of thigns an conditions which come on handy a few years after.

But i do engeneering before writting code. Maybe that is the difference?

The problem isn’t hating your code vs. loving some other site more. As several have mention before this post in not the same words is you know all the details of your code they come in like a flood when you use it. You think of improvements and wish to do it over again. IF you get another chance, you have to decide whether to start from scratch or evolve it some more.

Jeff -

Failure is concomitant (unfortunately) with the human condition. Recognition of that may cause your elders to snicker in their beards (welcome the real world). But if you’re unhappy with your work, perhaps it’s time to find something else to keep the family fed.

I’ve been quite happy (and dismayed) something I wrote (over the proverbial weekend) is still running 12 years later. I looked at the source code a few months ago and was appalled. Now I’m afraid to touch it.

  • Lepto

Reviewed code from indian developers. And I can really say:

If i can get drunk far over limit, so drunk that i cannot drive or think clearly, I think i could produce better code. Heck I had a review on code that had no change to even compile. Far away from doing stuff. A bit of copy and paste without the knowledge for what the parts which were copied are for. Instanciated variables which are never used. Exactly the same 8not working) function copied in different classes.

The review was succesful in one thing: One of the developers never asked me a question again…

I think the lack of quality programmers can be boiled down to two things:

  1. The constant push for shiny new technologies and hoards of new features without the discipline (or time) to understand any of them deeply. Where I work, we are using .NET 4.0 beta. And no one understands .NET 3.x very well at all yet. But 4.0 is the Big New Thing, so we have to use it.

  2. A general disagreement on what good quality software is. The software “generational gap” brought on by the tendency of developers to stick to development principles they learned early in their career causes friction between generations. The New Blood thinks TDD produces good software, but the Old Guard insists otherwise.

Just my $0.02.

Wow. You’re software must really suck.

Okay, I maybe don’t write good software but sure I do write a lot better than my boss. When I try to explain something I can see in his eyes how his head starts to hurt and how badly he’s longing for a soothing long drink.
It’s the same with all professions - I have a friend who is a gym teacher - he now hates gym and children, talk about coincidence. Keep going long enough in all professions and you will soon hate everything in it!!
But isn’t that a very pessimistic way of seeing things? How many times have you been excited about some new software? Sure is a couple of times!!

How true this is. In the past I always avoid using information systems of internet shops just because I knew how faulty they could be

self-loathing day, Jeff?

I don’t agree about the “worst code” = “my own”. Because, unless you think you have a solution that is at least marginally better than the previous guy’s, you should refrain from touching the keyboard.

Well. I can write pretty code, or I can write useful software.

I’ve seen pretty code, and well, it tends to not be very useful.

That’s pretty narrow-minded, Jeff. While one shouldn’t think their code is above reproach and it doesn’t have bugs, it’s hardly logical to think you should end an interview because someone doesn’t want to devalue their programming in the interview, or they think the absolutely horrible broken code on the Daily WTF is worse.

Great post.

One word came to mind as I read this post…“Sony”

Worst software developers on earth, judging by every piece of firmware or software included with one of their devices.