Saturday, February 17, 2007

In Defense of Programmers Everywhere

Recently, someone I work with sent me a link to a news article entitled _Programmers to Blame for Hard-To-Use Software_. The article has several quotes David Platt, who is author of a book _Why Software Sucks... and What You Can Do About It_. His basic premise is that programmers think "differently" than the rest of the population, and the faults in modern consumer software are caused by these differences. Reading the article, my knee-jerk reaction was to think that this guy was an idiot. After all, I am a programmer and he is pointing the finger of blame squarely in my direction. However, after some consideration, he does raise a few good points; however, I still think he is an idiot.

My main objection is that he seems to imply that programmers are solely responsible for the content of modern consumer software. That, of course, is a total farce. As someone who has worked in the software industry, I can tell you that a software package is the result of the collaboration of many different groups of people: user reps (who try and figure out what the public will pay for and who sign off on the final product to make sure it meets the needs of the public), business analysts (who translate the marketing "wants" into a list of requirements for consumption by the techies), programmers (who turn the requirements given to them into an actual piece of software), testers (who verify that the software doesn't have any "bugs"), and managers (who have oversight over the product and makes sure that everyone does their job).

Gone are the days when a lone programmer could write a major piece of software and exert total creative control over the end result. Today's modern programmer only holds so much sway over the final result. This is actually a good thing in the sense that programmers DO have a different aesthetic than the average person. That is why you have user reps who are supposed to be in tune with users, and that is why you have business analysts who can translate "user-speak" into "techno-speak". If anything, those are the ones whom you should be blaming, since it is their job to be in touch with the user.

Some of the other specific points he makes are utterly crazy. He complains about the "do you really want to delete?" message box as being a bad feature. He makes the analogy that your car doesn't ask you whether or not you really want to start your engine when you turn the key. That is an ignorant analogy. Deleting a file is a destructive step that can be irreversible (or at least require some work to recover). It makes sense for the computer to make an operation like this require multiple clicks. Starting a car, on the other hand, is not something that will destroy or harm the car (at least I would hope not). On the other hand, if turning your ignition key caused your tires to deflate, I would hope that there would be some confirmation before this destructive action is taken.

He also makes the assertion that programmers prefer control as indicated by the fact that they tend to prefer manual transmissions. I certainly have no performed a statistical study on this subject, but my own observation among my co-workers suggests that programmers are no more likely to drive sticks than anyone else. The only co-worker that I know who drives a stick is not a programmer but one of the aforementioned "business analysts", so I am not sure what that means.

He also blames extraneous features like "moveable toolbars" for crashes and security breaches. While it may be true that feature-creep in general is bad because it adds complication, I think he is being somewhat flippant to suggest that toolbars cause crashes and breaches. I have never heard of toolbars causing security holes in an application! This type of grandstanding harms what would otherwise be an actual point.

Finally, he has some rant about how the Starbucks website allows you to search for a Starbucks within 5, 10, or 15 miles. He claims that most people just want to know where the closest Starbucks is to their location. I happen to agree with this point. However, it doesn't really rise to the level of annoyance in my mind. In fact, until he brought it up, I never really thought much about it. Most sites, including the Starbucks store locator site will default to the smallest radius, and then the results will sort by distance, so for most cases, this is good enough for me. Of course, I live in a major metro area. I suppose if I lived in the "boonies", I might be annoyed by having to change the radius to 50 miles every time, but honestly, this isn't a big deal to me.

He does bring up some good points though. Bad error messages, flash web sites... These are the bane of my existence as well. However, these points are overshadowed his seeming preconceived notions about programmers and the software industry in general. While he claims to be a computer science consultant (or something like that), his words seem to make me feel like he does not know what he is talking about. My impression is that he is just trying to sell books through his grandstanding rather than actually trying to engage in an actual dialogue to improve the state of the industry.

No comments: