Arei is currently searching for a good beer to drink...
arei.net - rant
Quick Answers to a Hard UI Question

The Question

A friend of mine recently asked the Twitterverse the following question: “Can anyone recommend a good book on designing a good software UI? What works, what doesn’t, and in which situations.”

The Simple (but ultimately unhelpful) Answer

Keep reading for the real answer.

The Difficult Answer

I love it when people ask me this question, because it means that they are actively thinking about the Interface and they want to improve. I applaud their willingness to change. Unfortunately, wanting to change and reading a book (or two) will not get them the results they desire.

User Interface Design is a huge field of study, a speciality of decades (even centuries if you talk about Information Design) of research and learning.  There are undergraduate and graduate programs around the world that teach only this subject.  Succeeding in one of these programs is only the beginning.  Experience is what really counts in this field. A person, my friend or any person, is not going to learn this subject by reading one book.

It’s akin to me going to the bookstore and buying “The Complete Idiot’s Guide to Starting Your Own Business”.  Sure, this book will tell you the basics and give you some insights, but it’s only the tip of the iceberg.  Starting and running a business is an extremely complicated process and to think one book is going to get you there is woefully short sighted.

My problem with the original question is that it is naive.   It is naive to think that simply having the rules will allow you to effectively apply those rules.  It is naive to under-value practical experience in this field.  It is naive to treat an entire field of study as an after-thought.

The Real Question

The real question being asked is “Are there a couple of things that I can do to make my interfaces better?”

The answer to that is No … and Yes.

No, because as I’ve just said, there is no way to summarize quickly an entire field of study or years of experience.  Do not under-estimate just how valuable these things are to someone practicing in the field.

Yes, because I believe there are a number of tips that everyone can use to make their interfaces better from day one.  I’ll go into these really briefly, but I want to be very clear there’s a whole lot more to it, a whole lifetime of learning if you are willing to do it.  It’s an amazing, wonderful field and I thoroughly encourage everyone to study it.  Just be warned that it’s big, complex, and sometimes very unrewarding.

Remember: Interfaces are Everywhere

Anything people interact with is an interface: A Dictionary (the physical book kind) is an interface, a web site is an interface, a form you fill out for your employer is an interface, and a software API is an interface.  Each interface needs to be designed for the user.  So the next time you design something that someone else is going to use, or even for your own use, consider: how the interface works, how easy it is to use, and whether or not it meets your needs.

The Real Answer

While I encourage you to go and read the above books, if you do nothing else, keep the following rules in mind when you are designing any sort of user interface.

Consistency

The number one thing any software engineer can do to make interfaces better is to make things consistent.  I cannot begin to tell you how many interfaces I see that are inconsistent. (I’ve even made this mistake myself a number of times.)  If you do something one way in one part of your interface, always do it that way throughout the entire interface.  For example, if the Okay button is on the left and the Cancel button is on the right, do not change the order of these things somewhere else in your interface.

This also means adhering to the consistency norms defined by your Operating System or Operating Environment (a Web Browser is an Operating Environment).  Yes, you might not like it and you might think you can do it better, but the interface is NEVER (underlined and bolded) about you.  NEVER.

Details, Details, Details!

Anyone who does Interface Design should be horribly detailed oriented, almost compulsively so. Every aspect of your interface needs to be examined to ensure that the details are, going back to my previous point, consistent.  Form fields should be the same size, buttons the same size, everything aligned correctly, everything positioned perfectly, etc.  The details of the User Interface are the critical difference between good work and sloppy work.  And sloppy interfaces are bad interfaces.

Nothing annoys me more than going to another company and filling out their poorly designed forms.  (My current company is especially bad at this.)  These, as I mentioned before, are interfaces and spending a little time to make them more clean and more clear is worth its weight in gold.  I have, in the past, walked out of companies that were interviewing me merely because their HR forms sucked.

Know your Users

When beginning your design the first thing you should be asking yourself is what do you know about your users.  Shniederman and Cooper (the books above) can tell you a lot more about Actors and User Stories and all that, but it really just comes down to understanding how your users like to work, and how your interface is going to make some aspect of that easier.  So, get to know your users.  Are your users computer illiterate? If so, it’s not likely that they will understand something like Drag and Drop right away. Once you understand your users motivations and needs, then you can begin to design a system that best reflects them.

This is often very tricky because none of us have millions of dollars to do user studies, and shadowing, and user testing.  A lot of times our customers are abstract visions of customers.  That’s okay.  Just take some time to try and imagine (acting or role-playing training can be really helpful here) what those customers motivations and needs would be.  It’s not perfect, but it will do in a pinch.

Ease of Use

So it goes without saying that the easier to use an interface is, the more people will like it.  Of course, this must be tempered against the motivation and goals of the actual users.  So the real goal is that it must be easier for the users to do what their motivation and needs require.  I once read that Ease of Use can be defined as the number of mouse click or keyboard interactions required to perform some task.  It’s not a perfect measurement but keep it solidly in mind when designing.  And this segues into my next point…

People are Lazy

Assume that people are lazy and you will never be disappointed.  They want to do the least amount of effort for the greatest amount of payoff.    I call this the commitment factor: how much of my effort do I have to commit to receive the greatest payoff.  This is why the Lottery is so effective.  It does not seem to matter that statistics are stacked against the players, they still play because it’s easy to play and the potential reward is huge.

In interface design this is equally true.  The users will like any interface that makes things the easiest.  The converse of this, however, plays a valuable role as well… the users will like any interface that makes things easier, so long as they can control the results.  This means that lottery users like playing the lottery, so long as they can pick the numbers.  The more complicated the system to automatically pick the numbers, the less the users will like the results.

Ideally, the best systems are predictive systems that let the users control just the right amount of variables.  What is the right amount, well, that where iteration comes into play.  Try a low amount, try a high amount, calculate the best amount, and then keep refining.

Understand Flow

Cooper defines Flow as “When people are able to concentrate wholeheartedly on an activity, they lose awareness of peripheral problems and distractions.” (Cooper, 4th Edition, p119). We’ve all had these Flow moments: where what we are doing is so focused, so in-depth that we don’t notice external things such as what time it is, coworkers leaving for the day, or even phone calls from our significant others wondering why we are not home yet.  This is Flow, and it’s a very, very good thing.  Flow allows users to work on their specific need at an optimum level.  It is the goal of every good interface.

Poor interfaces interrupt flow with things like unnecessary dialogs, errors, hard to use process, etc.  The interface that interrupts less and is easier to use helps to encourage Flow.

As part of Flow I generally include visual flow in the discussion.  Visual flow is the ability of the human eye to find what it needs.  To this end, interfaces that focus or showcase what is most important to the user are better.  In the western world we read top to bottom, left to right, so items on the top left receive more attention than what is in the bottom right.  Keep this in mind as you build your interface.

Also, be aware that animated things attempting to engage or grab the users focus on your interface ALWAYS disrupt flow.  Use animation to enhance, never to engage.  Assume users have become oblivious to animated, blinking things and largely screen them out these days.

Design for Accessibility

One of the big failings of modern day design is that they fail to account for differences in human beings.  Some human beings cannot see, some cannot manipulate a mouse, some cannot determine the difference between red and blue.  Build for accessibility.  Be aware that some people view your site in really low resolution and that some view it in really high resolution.  Account for the differences in your fundamental design and from the beginning.  Going back and having to engineer your sight to meet section 508 standards can be extremely painful.  Do it right from the start.

One of the big things here is when sites use color to indicate differences.  Estimates seem to place color blindness in the US as 10 to 20% of the population.  Therefore using a color to indicate that some change has happened is not an acceptable solution.  When in doubt use a color change AND some other indicator (selection count, underlining, etc) to indicate response.

Feedback

Feedback is the process of responding to user behavior.  The more feedback, the more the user knows that they are doing things.  A common flaw is to do something without providing feedback to the user that something is occurring.  We see this in lots of User Interfaces because almost all User Interfaces rely on a single thread model wherein the interface rendering and response happen on the same thread as most processing.  The developer who pushes processing off into other threads (or into WebWorkers in the Web space) can respond with appropriate feedback to the user without waiting for the process to resolve.

Feedback is a key factor in responsiveness of a site and responsiveness is a key factor in a sites usability.  The more response a site appear, the more users feel like they are in control of how the system is behaving.

You Cannot Please Anyone

Just assume that no matter how great your user interface, not everyone is going to like it.  Instead, your goal should be to hit the 80% of user whom will like it.  There will always be edge users whom have different motivations and needs.  So upfront, identify all the users and determine what the 80% is that you can achieve.

Sure, it is possible to build an interface that scales to every type of user.  However, you will spend a disproportionate amount of time on the last 20% than on the middle 80%.  Think of a bell curve,and try to get the middle of that curve.

I know two sections back I just said to design for differences, but there is a separation between accessibility difference and designing for the edge users.

Learn from your Mistakes

Finally, learn from your mistakes.  I always believe that next version of your interface will be superior to the previous version, largely because you learn from the problems your users had with the current one and build a tighter interface for the next one.

As a co-worker of mine often says: It’s an Iterative Process.

Conclusion

So that’s what I have for you.  My long answer to a friends very simple question.  I hope I did not insult my friend, but the reality is that things are much more complicated than his initial question assumes.  That said, maybe my last section really answers the question he wanted answered.  Remember, User Interface Design is extraordinarily complicated.

A Final Note:  This topic does not take into account the whole Graphic Design aspect of UI design.  For that is an entirely differently field of study.

Annual Snow Rant

It’s time once again for my annual snow rant in which I tell you how irresponsible you are being by not cleaning the snow off your car. So here goes.

It is your responsibility to clean the snow off your car in its entirety, including the roof. If you cannot accept this responsibility, you should not be allowed to drive. It’s that simple.

Not cleaning the snow off you car causes others driving around you to have limited visibility and can even lead to complete loss of sight while driving if a large chunk blows off your car. This leads to panic, accidents and even fatalities. By not cleaning your car completely of snow you are actively participating in trying to hurt other people.

Now, I know we live in a world where people think everything outside of their car doesn’t exist. It as if inside of the car is a completely seperate world from outside of it. But the reality is that you share this world and the road with other people and you have a moral responsibility to help them be safe.

So there it is. Clean the snow off your car, including the roof. If you are too lazy, then please just stay home. Your job, shopping, or social activity just isn’t that important and the world will keep on turning without you.

Maven Vitriol

I’m an ANT guy. I’ve been using ANT since 1999. It’s amazingly powerful, amazingly useful and very flexible… and I’ve never once written my own ANT task. Just using the ANT tasks available or out there in the community I have been able to build hundreds of software projects.

Now, of course, everyone says, “Go Maven”. So I went Maven… and it sucked.

See, I have very strong feelings about Frameworks. (Not to confuse you here, but Maven, like ANT, is a Build Framework.) The problem with 99% of all Frameworks out there is that they force you into a specific way of doing something. “But that’s the whole point,” you scream at me. And I agree, that’s the point… until the moment you need to do something else.

Now, I use frameworks all the time in my software development, we all do. There’s one listed over on the right side in my links section that I actually endorse. So am I not hypocritical for deriding frameworks in one breathe while using them in another? Of course I am, but here’s where i’ll caveat it… I use frameworks that provide the least limitation on me doing new things. Maven, as an example is a rigid framework. Doing something new with it is difficult challenge. ANT on the other hand, while limiting, isn’t nearly as limited.

So here’s AREI’s Framework Measurement Testing System. First, evaluate a framework for the project you are working one, say building a Java Swing application. Next, evaluate the framework for another, completely different project you might work on in the future, say building a Website. How does the framework stack up for both things? Finally, consider what’s going to happen when you need to take the framework beyond it’s scope into new places. How accepting of that path is it?

Here’s some examples:

I had an ANT script that would append together a bunch of .JS files and then minify the entire set. Worked like a champ. The project I was on decided let’s give Maven a try instead of ANT. So I had to come up with a way to do the same thing in Maven. Two weeks of work later I ended up just calling ANT from inside of Maven.

Anyway, this post was really meant as just a simple link to an awesome blog posting that unleashes some much needed fury on Maven. But I got a little carried away in the intro.

So in summation, Maven sucks. Pick a framework that you can change. Damn the man! Save Empire!

Deciphering What You Annual Review Raise Means

Recently my boss came to me and told me that my annual review was coming due.  I’m not sure if he was telling me this to warn me to get off my ass and be productive, or if he was giving me a heads up that I might want to start looking for a new job. The fact that his message was unclear got me thinking though; what exactly do I expect from an annual review?

From an employee prospective the annual review is about one thing: big fat raise. Employers can push their “growth plans” and “360 reviews” all they want, but for the actual employee it simply comes down to how much more money they are going to see in their paycheck.  Honestly, every time you have ever been given a raise, what’s the first thing you do? You check out how much more per paycheck that means to you.

But getting past the 37$ more a week thing, what does the percentage raise your boss just told you really mean to you?  And what does it mean in perspective of your bigger picture?  Is it a worthwhile number? Does it merit staying with the company another year?  Or is it more profitable to your bottom line to go elsewhere?

These are the questions your employer really does not want you thinking about.  Yet, employers run their companies as a business.  They are in it to make money.  So they should not be surprised when an employee runs their own life in the same way.  You are in it for the money and it is money that talks.

So, in light of my own upcoming performance review, I decided to write down a scale of exactly what my feelings should be toward my company depending upon the percentage my boss tells me at the end of my performance review.  The idea being, that I don’t have to rush back to my desk and figure out how much more per paycheck I’m going to get.  Instead, I want to hear a number and instantly know if I’m being insulted or congratulated.

Now, before you go read the charts I want to tell you to please remember to take this with a grain of salt.  Employee/Employer relationships are complex things, and you should be mindful of that.  You also need to be mindful of your own situation, the availability of jobs in your industry, how valuable you are in the work place, blah blah blah.  All I’m saying is to think before you leap.

Also, this is just about an increase to your salary here.  Things like bonuses and stock options do not count because they are a one-time payout.  If you boss gives you those, that is a nice thing to do and all, but a merit increase is about sustained growth not a one time bump.  If your boss does this kind of tactic, just ignore the bump factor and focus on the growth factor.  The bump is a nice way to say thanks, but it’s the raise that counts.


0% This company is actually the worse off because you are an employee here.  Get the hell out.
Getting 0% as your annual review is basically tantamount to being fired, regardless of the reason.  A company will tell you “we had a poor first quarter this year and that hurt everyone’s raises.”  But what you really should be hearing is “Get the hell out.”  The company is basically telling you that regardless of your performance they do not want you to stick around.  If they cannot even muster a token increase, the company is doomed to failure.


1% We basically gave you a raise because we have to but nobody here likes you or wants you to stay.
The 1% raise is the token insult raise; a little something because they must, but honestly they’d just rather give you nothing. If you were a minimum wage worker your company basically just told you that they think you’re worth only 6 more cents an hour. If you made the median household income in the United States as of 2005, this would roughly translate to $8.91 more a week. I recommend you spend that money on resume paper and go find a new job.


2% We’d really prefer it if you just saved us all a lot of trouble and stayed at home sitting on your sofa.
This raise translates to $17.81 more a pay check. Unfortunately that won’t even cover the cost of the gasoline you use to get to work every week. A company might give you this in hopes of motivating you to “excel” or “exceed”. I recommend that you take the hint and “Exit.” In fact, if your manager/boss person tells you that 2% is your raise this year, there’s no reason for you to stay another minute. You can probably make more money selling magazines out of a van.


3% We have decided to shower you with our greatness and you should be thankful for it!
Alright, this is the defacto raise that companies usually use for a base. Someone once told them that that was the “annual cost of living” increase. I’m sorry to tell them this, but last year the cost of a loaf of bread climbed 8%. That means it’s roughly 8% more expensive to eat this year than it was last year. Worse yet, companies make this seem like they’re doing you a wonderful favor. A favor would be if you could afford to eat more than a damn loaf of bread.


4% You don’t deserve a brand new Porsche, but the people who own your sorry ass do.
Since 3% is the defacto raise, 4% is usually reserved for the companies that want to give out 3% but they know you did a kick ass job. In a company of 100 employees that made $1,000,000 in profit last year, a 4% raise for everyone in the company means that the company spent 18% of it’s $1,000,000 in profit on raises (assuming everyone makes the national median wage). To us, this doesn’t exactly say “Keep up the good work.” Instead it says, “Keep up the good work, you’re making us rich and we don’t like to share!”


5% We respect and value your lazy ass, but if you try harder we’d reward you better.
This is what I would call the bare minimum of fair raises. This says, you’re doing an adequate job and we see potential for improvement. Keep striving to be a better employee and next year there could be a more than 5%. This is usually the lowest raise at which I wouldn’t suggest looking for a new job right away. But I’d temper that by telling you that you could probably get more money by changing jobs.


6% You’re doing a decent job but we’re a little too cheap to really show you we appreciate you.
A company that shells out 6% is one that actually values you as an employee. They know you’re doing a good job and they want to keep you around. Unfortunately, someone in the management chain is cheap so the 6% raise is usually reserved for the one “rockstar” employee. I would argue that 6% is a token show better than 5% which every employee ought to have gotten, so it’s really not “rockstar” ready. You might want to take a look around the company and see how many 6% raises they gave out. If you’re it, than the company might just be a little too cheap for your dream of buying beach front property in Jamacia.


7% Way to go! Keep up the good work and someday we’ll promote you into management.
Finally we’re getting into the category of raises that say the right thing. These raises tell an employee that they did a good job and by golly you want them to stick around. Unfortunately, for companies these days most employees can get 10% just by changing jobs. If you got one of these raises, it’s time to weigh that extra 3% you could get from changing jobs against your apathy of looking for a new job. If the job conditions are good, a 3% jump and the risk of changing jobs might not be worth it.


8% We think you’re the best thing since sliced bread and we’re willing to do what it takes to keep you.
Remember back in the 3% raise we talked about sliced bread? Up 8% from last year? Well, with an 8% raise you are keeping abreast of being able to feed your family of four and your dog and a picket fence. The good news is that your employer really values you. The bad news is if you are only breaking even on feeding your family, you’re lifestyle is pretty much stuck in a rut. Keep your eyes open for golden opportunities, but you really have it pretty good.


9% You’re doing an excellent job and are exactly the type of person we want to keep working here.
Obviously someone at you company thinks your hot stuff and went the extra mile for you. It’s probably your boss and we assume if you got this raise you have an awesome boss. Awesome bosses are extraordinarily hard to find, so before you even think of jumping ship, take stock of what you have. It’s probably a pretty good thing.


10%
and up
You rule! We love you! Please, please, please do us the honor of working for us another year.
Honestly, if you get 10% or more, then your company absolutely rocks and you shouldn’t even consider thinking about changing jobs. 10% means the company recognizes your contributions, it believes in you as a long term employee, and it is willing to do what it takes to make sure you stay on board. And even more importantly, the company wants to reward your contributions to its success by helping you to your own successes. You simply cannot beat that.


So there you have it.  My quick and dirty field guide for determining if you are being insulted or rewarded.  It is my hope that you will take this out into the world, share it with your friends and co-workers, give it to your boss and her boss, and use it as a reference guide during your annual review.  You should even use it as a reference point when it comes time to fight for a better merit increase.

My advice to you is, hope for 10%, but be ready for 3%.  And then, be prepared to do what you must to better YOUR situation.

“Deciphering What Your Annual Review Raise Means” is released under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License which you can learn about at http://creativecommons.org/licenses/by-nc-nd/3.0/ and you can read at http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode. The original author is Glen R. Goodwin and can be found at http://www.arei.net.  You can find additional copies of this document at http://www.arei.net/stuff/AnnualReview.doc.