Browsing Category: Bloggerific

When the gas pedal becomes the brake pedal

Friday, October 17th, 2008

In my company, we have a large in-house intranet application that drives me insane. Literally. In the interest of not having to train people how to use a web browser, they’ve used modal windows (real ones, for MSIE only, not the modern version using javascript and divs) and other components that completely break expected behavior of a web page to any experienced user.

I can’t copy and paste text, my right-click is broken, I can’t use the arrow keys to navigate, the tab key doesn’t tab form elements properly, and the enter key doesn’t submit forms. The modal windows render IE tabs useless. So we end up opening this particular application in its own MSIE window and open a different instance for everything else.

Every time I mention that something is “broken”, I am told it is by design to help our poor newbie users not break anything.

The design completely violates any semblance of usability, standards, and sanity. Experienced users are frustrated to the point of wanting to bash someone’s skull in. So, when I’m surfing the internet and see posts like this one, detailing how to break your application on purpose because you don’t feel like training users, it makes me want to scream.

If people are “accidentally submitting” the form, it’s a lot better, at least in my opinion, to force a confirmation than to break the form. Even better, try TRAINING people. I know, that’s just nonsense, isn’t it?

The tab key moves between fields, not the enter key. If you need to allow carriage returns in input, then use the correct form element to allow it, such as textarea.

As far as I’m concerned, as a user, the form is SUPPOSED TO SUBMIT WHEN I HIT THE ENTER KEY. A simple google search shows I am not alone — people consider the thing broken if that doesn’t happen.

Breaking expected GUI behavior to cater to your inexperienced users is like saying you have a subset of people who drive cars who prefer the gas pedal to be on the left side and the brake pedal on the right, so that’s how you’re going to design YOUR car. That’s just great. Now, I’m used to the gas pedal being on the right, but when I get in YOUR car, it’s on the left. Thanks for confusing the hell out of me and making me think your car is broken.

Standards exist for a reason. In a car, the steering wheel steers it, the pedals are in the same spots, and other controls work similarly enough that a person should be able to get in the car and drive it with little fuss, as long as they already know how to drive another car. For computer applications, Mac applications, Linux applications, and Windows applications all have conventions so that a person learns which keys tend to do which actions. An example of this is the control+c key combination on Windows. That should copy things to my clipboard. If it did something else, I’d be confused and peeved. You wouldn’t hijack that key combination for your winforms app (unless you enjoy frustrated users), so why would you hijack the enter key for a web form?

Am I alone in getting this annoyed? Do you think there is ever a good reason to choose to break a form for experienced users in the interests of inexperienced ones? Share your thoughts in the comments.

Edited to add: Due to the comments left, I want to be very clear here. It’s the CLIENTS I am pissed at, most of all the people who requested the abomination I have to use every day. I fail at English.

Ripley eats the cat

Monday, January 28th, 2008

Or not. I’ve posted about my killer rottweiler before. Here she is again.





Blame the deed, not the breed, folks.

CNN: From fighters to friends, Vick’s pit bulls learn new life

Sunday, January 27th, 2008

all breeds equalFrom CNN: From fighters to friends, Vick’s pit bulls learn new life

It warms my heart to see those dogs being given a second chance. Pit bulls can be the sweetest, most loving dogs - this is the secret no one seems to realize except the dog fighters. You see, in order to fight a pair of dogs, two humans and a referee must be in the ring with them. Do you think they would breed animals that might attack the humans in the ring? Of course not.

The rash of “pit bulls” attacking humans is usually some type of Molosser mixed breed that has a blocky head, that had been untrained, unsocialized, and often chained in the yard for who knows how long. Most people couldn’t identify a real pit bull if you paid them money.

The latest “dog mauled somebody” story I saw, the pictured dog was obviously Husky or Malamute along with some Rottweiler. But instead of calling it a Husky cross, they called it a Rottweiler cross (it must sell more papers). And the kid went into the person’s yard where their dog was chained, and the dog mauled the kid. They want the dog destroyed, even though it was the mother’s fault for letting her child wander into the other person’s yard. Newsflash - dogs protect their property. Try keeping an eye on your kid.

Please, people, blame the DEED, not the BREED. Are some dogs more prone to be dominant or pushy than others? Absolutely. Are they a menace in the wrong hands? Absolutely. But that means only that one should punish the wrong hands. Please support dangerous dog laws and anti-cruelty laws. Support educating dog owners about chaining and neglect. Support educating people on how to interact with dogs.

Don’t support breed bans.

On The Mythical Business Layer

Monday, January 7th, 2008

If you’re a developer and you haven’t read this post, The Mythical Business Layer, on The Daily WTF, please drop what you’re doing and go read it. I have it in my starred items in Google Reader because it’s vital to me to be able to explain insanity to my boss when he starts getting notions that resemble the ERE.

Concepts like this one from the article make perfect sense to me, but I don’t explain it as well as Alex does.

I’ll bet some of you, without even seeing the rest of specs, excitedly envisioned a CancelationWorkflowProvider that inherited from the abstract RequestWorkflowProvider and implemented the IPermissionRequired, IPropogationStatusRequired, and IExpenseAllocationTypeRequired interfaces, and was powered by the all-encompassing WorkflowManager. Why? Because that’s so much more challenging than writing a simple IF-ELSE code block.

I personally am a huge believer in KISS. I read the specs and indeed DID see IF-ELSE blocks. Call me boring. I prefer to not overcomplicate things. I code as much as needed, but no more, to achieve the desired result in a way that is easy to maintain. If it needs extensions later, great! We can do that. But to code a behemoth for the sake of principle is, in my opinion, idiotic.

Code, by its nature, is fluid. Specs change. Applications evolve. Refactoring should be a part of a program’s life cycle. Don’t fear change. Sure, you want to soft code some things that change depending on where the application is installed, such as settings. Business logic, however, should be hard-coded. Sure, you want to have code re-use with functions/methods, but you don’t need them so generic that they no longer have a real purpose. Your platform of choice likely already has generic functions to do things like format strings, convert dates, and whatnot. Don’t waste your valuable time reinventing the wheel.

I blame a lot of the crap I see these passed off as code these days on the fact that new developers are shoved directly into OOP instead of being taught programming from the ground up. If you’re never taught procedural code, you try to make everything an object, a factory, a pattern, or a method. You try to create abstractions where none are needed.

Too many developers are, as Alex says, using a hammer to create something that can pound in nails. Stop that, kids. If you’re bored, go learn a new language instead of abusing the one you’re using.

Merry Christmas everyone!

Tuesday, December 25th, 2007

I hope you enjoy the holiday! Don’t be TOO good; naughty is FUN!

merry christmas