Nobody Hates Software More Than Software Developers

@Mike Sickler - that is so true. Always had issues with our HP printer until I finally uninstalled the crapware that came with it.

Beautiful and true :slight_smile:

You have no idea how many times I come across a class and my first instinct is “What jerk wrote this piece of crap” … but the secret is I’m the jerk almost every time. Ok strike that … every time.

I hope one day not to suck … but I’ve gotten used to disappointment.

I don’t hate my code. But I’m always suspicious that it’s rubbish.

I feel your pain. I’m not a developer, just a lowly end-user. But I started in 1982 and have witnessed the gradual degeneration of word-processing software. WordStar was a wonderful tool for writers - difficult to learn, but with wonderful functionality and control. WordStar was the LAST word-processing app that was actually fun to use - you could really churn words. (Millions of people must still do that today in their jobs, and would be willing to endure a learning curve; surely there’s an updated version of WordStar, waiting to be born.)

WordPerfect for DOS was wonderful in its power, but in terms of writerly control, it took word-processing a big step down from its origins. Let’s not even mention that other program.

Where are the openings for cool, modern apps? Here are my thoughts. 1. Look for control, power, and a learning curve. 2. Look for modularity - equation-editors should be add-ons; and once you’ve “modularized,” you can dream up wonderful tools for writers. Plus, programming modules, surely, would encourage greater creativity - VW’s are more fun to work on than Greyhound buses. 3. Find the users, and deliver what THEY want. There’s too much ego in software development - the lingering thought that because software can do something cool, it will best serve the user’s needs.

And so on, and so forth. I, too, hate much software - though there are certain apps that are a delight. Picasa, to a certain extent; FileZilla; etc. They serve, they work, they don’t get in the way, much.

I agree with leetdood above; while recognizing the need for improvement in your own code is a virtue, so is the ability to view others’ code with a critical eye. This is especially important when judging tasks such as sources for copying-and-pasting code, or when deciding whether it’s better to take an off-the-shelf solution to a problem or roll your own. In both of these cases, an irrational and overriding loathing of code you’ve written isn’t going to help you accomplish the task, and it isn’t going to do the best job at keeping your software from sucking.

What merit there is the the camera software anecdote doesn’t come from a moral imperative to avoid new software. If it did, many of us would never have discovered some of our favorite tools or operating systems. The specific reasons Mr. Atwood gives for being suspicious of the camera software are quite sufficient, without requiring that he cite hatred of new things that would not be out of place on the lips of a true Luddite.

When you’re sitting at a desk for an interview and pondering the code you’ve happened across in the past week or so, if none of the examples in the Daily WTF are worse than the fruits of your own labor, then the interview should probably end immediately anyway.

Amen!

It’s always been strange to me that hardware companies try to treat their software as a competitive advantage. Usually it’s the achilles heel, and the most painful part of using their hardware. Drivers in particular, since they’re unavoidable.

Which begs the question, why do hardware companies keep their drivers closed-source? Typically it’s not something you could use with a competitor because it’s specifically tied to their hardware. Drivers are only ever a deal-breaker as they don’t support a platform or have a critical bug. The closest to a “competitive advantage” you can get is if your driver actually works invisibly, plug-and-play, and they other guy’s doesn’t. That’s not an advantage for you, it’s really still just a deal-breaker for him.

@Sea Cat: What’s this then? http://picasa.google.com/mac/

@xebecs I cry for you.

I can second the feeling about software, especially software from non-software vendors, but as for my code… sure, the first attempt at something I write is always garbage, but after some tests and refactorings, I’m usually not disgusted by it.

If the worst code you’ve seen recently is yours, then you haven’t been reading many questions on StackOverflow. I agree that every software developer thinks, after the fact, “how could I have written that?” That doesn’t mean that there isn’t worse code in the world, though.

I don’t hate all software. I don’t even hate all of my software – sometimes the love/hate relationship does fall more on the hate side, however. I do hate crappy software. I especially hate my crappy software. Fortunately, I seem to be writing less crappy software as time goes on. Unfortunately, the side-effect of that is that over time my older code becomes more crappy.

Software sucks not because of bad code, it sucks because of bad interface design. And I’m not talking graphic design. I’m talking about the way people actually are forced to interact with the software. It’s mostly horrible, yet 99% of programmers websites still focus solely on programmers issues, rather than users issues.

The worst code I’ve seen recently is in the FormatToHtml macro I use in Visual Studio. I’m just kidding. I’m currently learning FoxPro 2.6 for MS-DOS which will surely expose me to some really horrible code.

If the worst code you’ve seen recently is your own, you probably don’t work on a very large team or you never have to maintain legacy spaghetti code written by people who’ve long since left the company.

The worst software ive seen is the kind that comes with musical devices. Setting up play lists and syncing is always a nightmare especially when the kids get devices from several different companies, and each one comes with its own software. On top of that we got iPods which required iTunes. iTunes has the gall to make a copy of every single song in our collection in its own format, and now its impossible to use the other pieces of software for other devices because every song shows up twice. argh.

"It’s so ugly I want to vomit just so I have something prettier to look at ",and “marketing weasels”, are the reasons why everything sucks.
Sheeple have been conditioned to demand a certain amount of aesthetics in everything they consume. But all that glitters is not gold…

Personally, function IS form. A 25$ Hecho-en-Chine computer case is beautiful to me - it does what is, and nothing more, nothing less. This undue focus on aesthetics, driven in large part by marketing, leads to unnecessary effort drained away from ‘core competency’.

Let me put it another way: Whenever I get a new Windows machine, or perform a new Windows (from XP up) install, the very first thing I do is turn off all the rounded corners, animations, and other stupid crap that is completely unneeded (‘adjust for best performance’). With XP on older hardware, performance jumped roughly 10% and memory usage decreased by roughly the same. With a few more tweaks, commodity hardware of yesteryear could be productive with a measly quarter-gig of memory.

The web is another arena where form is valued over function; gone are the days of near-instantaneous page loads, because nearly everything has stupid Flash or Silverlight or ECMA script clogging it. And it’s crap. I want textual data, not pictures of some rent-a-face that doesn’t even work at your company or buy your products. I might need diagrams or graphics, but they should be hyperlinked, and kept off of the front page. Wikis and other crap (Joomla, Zope, Drupal, et al.) have further served to obscure the data I want by festooning pages with a bunch of artsy crap.

If you have time to notice how ugly the interface is, I would argue you aren’t really engaged in your work or the problem you are trying to solve. Function IS form. Rounded corners aren’t going to speed up your builds. Fancy, rounded, anthropomorphic figures in the margins aren’t going to help your thought process as you try to decide on an algorithmic implementation, or help you to remember to put the TPS cover sheets on the weekly reports.

Pure waste, integrated from inception, serving only to further reduce efficiency, and keep marketing afloat. Marketing should have perished with the cold war; both are based on outmoded, paranoid delusions from the 1950’s, and era where Valium and alcohol reigned supreme in the thought process of industrialized nations.

The results are all around. Crap cars that look nice and rounded but are being recalled (even the Japanese are slipping in this regard, probably due in no small measure to Western influence) because their engines fall out or their seat belts fail or some sensor was made to the wrong specification.

Demand function. Eschew aesthetics. Or live with crappy, buggy implementations of everything.

@Orange - it is called humor… get used to it on this site.

I find this situation funny, because what you are really choosing is the OS version of external storage reader SOFTWARE, which you seem to like. I prefer it too, only because it’s the lesser of two evils. There has to be some way to get the photos off the camera and onto the computer, and it just happens the built-in software is usually better.

Now… skip to video. Got a hard drive video camera? You’re hosed… you’re going to use the camera software. This really annoys me - I can see the files on the camera, but my computer can’t see the actual files, they are in some weird format, and to turn them into something I can actually use, I have to use the video camera software. It is some of the worst software I’ve ever used. It takes forever to start up, and takes forever to shut down, it has a bad interface (again, videos sorted by date). And the worst part: it won’t split up the clips from the camera, even though it shows each one in the interface - everything from a particular day becomes a single video file with no markers or anything to help me figure out the difference between one video and the next. I have to go down to the frame level in Adobe Premiere and cut the video myself. I might as well just leave the camera running all day. Very annoying.

Beautifully said. Not the best interview advice as I’ve only found 1 company I’ve interviewed with that responded well to such candor. Still, I wholeheartedly endorse the sentiment. My code isn’t the worst I’ve ever seen. My code from a year ago is worse. My code from 5 years ago simply makes me cry. I can’t imagine what I’ll think of my current code in 5 years

I’m guessing (hoping!) that the last paragraph is just jokey hyperbolism. After an entirely serious article though it took me a few seconds to realise this. Maybe make a little more obvious?

Nice post, but I can’t agree with your proposed litmus-test at the end there - it’s a nice a shocker to drive home the point of the article, but in practical application, I think it’d be a terrible gauge. I know excellent programmers who’d flunk, due to having been scarred by dealing with the hideous code of others (there are degrees of terrible), and I know mediocre-to-poor programmers who’d pass it because they’re naturally self-deprecating.

Why don’t you just have AutoRun turned off?