25 October, 2008

The 10 Commandments of Great User Experience Design

Starting a new software development project in the next little while?  Praying and hoping that it goes well?  Are you worrying about all the little software development intricacies like: Making sure you have a proper source control, ensuring you have a continuous integration environment, making sure you have great developers and making sure they are happy?  If you are, you probably haven’t remembered to pay attention to the most important part of the software development process. The User Interface and the User Experience.

While there are literally hundreds of User Experience rules that you could follow, if you simply remember these 10 commandments, you should do just fine!  In fact, I recommend you print them out and put them in every developers office, or cubicle. Believe me..you will praise me in the long run.

  1. Publish your application’s goals and objectives, your “mission statement” if you will.
  2. The less choices you present to the user, the better.  Users get confused rather quickly.
  3. User Interface should remain consistent from screen to screen.
  4. No “Smart Menus” that change depending on how you use the application.  Users hate their application “changing” on them.
  5. Keep the “Noise” to a minimum.  People don’t need to know about the business as usual messages.  Don’t annoy your user.
  6. Avoid acronyms if at all possible. If you must use them, supply a descriptive message right beside it.
  7. Your application must run lean and mean.  As pretty as your interface might be, if the software seems slow, no sale.
  8. Let them explore the application, without fear they will cause a disaster. Undo, Redo, and History features might be a good idea.
  9. Ensure your software works the first time its run.  Configurations can occur later, but out of the box, you should have intelligent defaults.
  10. Have an easy way of allowing your users to provide feedback
Every item on this list is very critical for the success of your project.  Make sure your software development team is always thinking about these things throughout your next project and you should be fairly happy with the outcome of the project.

I find that typically software developers will end up focusing solely on the architecture and technology of the application they working on, and leave the user experience piece as an afterthought.  This can have a huge impact on your timeline, and the happiness of the user’s of your application.  How many software developers out there have been on a project where you worked your buts off for months (if not years), and then went to release something to the users, and they where unimpressed with the application because the team didn’t put enough weight on the user experience?

03 October, 2008

Dictionary VS Hash Table

We all know how useful a hash table can be, but if you are using the .NET Framework 2.0 you should be using a Dictionary instead. A dictionary and a hash table in .NET 2.0 are very similar but with 1 main difference, a dictionary is faster because it does not need to box and unbox the data as a hash table would.

I made a simple program to see just how much faster a dictionary is than a hash table. I ran the test 20 times for each data set and the results were close each time. A GUID as the key and a boolean as the data.

This is the results of the last test for each dataset.

Time in Milliseconds for 100,000 keysDictionaryHash Table


Time in Seconds for 10,000,000 keysDictionaryHash Table