What drives a nugget along, in her little 20 piece box!

I've finally started poking around LinkedIn because it seems, unlike all the other social networks out there, to actually have a point. XD (I'm really REALLY not big on social networks, I tend to avoid them like the plague).

Soooo.. 'Write a profile, nugget, write a profile!' quoth LinkedIn. And verily (wearily) I did.

I started with a cut/paste one from my Web Design and UX Portfolio... which somehow turned into a rant worth reading.

And so without further ado here we go!

While I've picked up a rather eclectic design skillset over the course of my career, including (but not limited to), web design, copywriting, packaging, animation, and front-end development, there's a single passion that unites all these things.

Improving people's lives by giving them kinder, saner tools.

Yup. Cliched. Corny as Hell. Still true.

I'm not talking world-shaking, changing-the-course-of-history improvements.

I'm talking small, everyday improvements. Improvements that make someone's day just a little bit better, preferably over an extended period of time. An easy, concrete example? Search with autocomplete. And there are so many, many more.

I believe that the tools we use should give us feelings of delight or mastery - or at very least, not make us feel like idiots. Kinder, saner software (because software is a product and a tool, as well as a service) isn't just good for customers, it's good for software companies too.

These kinder, saner tools are the ones that

...we vote for with our wallets.

...help us do things more quickly, more easily, more painlessly, and sometimes, even more enjoyably.

...allow us to go home after a hard day's work with the satisfaction of a job well done - and not the frustration of having spent a day fighting the very software that's supposed to help us.

And if, at the end of the day, I get to make these tools look sexy - that's a bonus. ;)

Common-sense rules-of-the-thumb for designing software that makes sense

Excerpts from a JIRA article I wrote at work.

Make system status and feedback clear and visible
Use status mechanisms to keep users aware and informed via appropriate feedback, and within a reasonable timeframe. Status information should be up-to-date and easy to spot.

Present information with meaningful aids to interpretation
Use words, phrases and concepts familiar to users - don't use 'programmer speak'. Use everyday terms, or familiar frameworks.    

Help users recognise, diagnose and recover from or resolve errors
Give users a "way out" when they make mistakes (e.g. cancel). Where Undo/Redo is not possible or viable, present users with solutions.
E.g. The supplier record could not be deleted because transactions have been made against it. <Deactivate Supplier Record> <Cancel>

Use clear, consistent language, and names/labels that are conceptually related to their functions
Standardise language across your platform. If 'Cancel' means 'Exit without implementing any changes' in one context, it should mean that in all contexts. Whenever possible, button labels should be specific, rather than generic. (e.g. 'Save & Exit' vs 'Okay').   

Help users not to make mistakes
Present users with a confirmation before they commit to an action with serious and/or irrevocable consequences. In such cases, it's a good idea to place the Commit and Cancel buttons far apart to prevent users clicking the wrong buttons by mistake. If keyboard controls are in play, require the users to either click the (far apart) buttons, or to commit by pressing a specific key or key combination, rather than tab-Entering.

Display only the information a user needs to complete a discrete task at a given time
Don't make users remember information from one part of the dialogue to another, and don't pepper them with information irrelevant to the task at hand.

Make the right things invisible
Automate and/or hide tasks/functions users have no control over, but that the platform requires to work.  

Group information consistently and meaningfully
Don't make users search and mix-n-match information from all over your page if what they're looking for falls into an identifiable group. (E.g. Address, Mobile, Fax..)   

Reduce user workload & set meaningful defaults
Pre-populate standard fields whenever possible and/or helpful. Base defaults on choices that the majority of users would make. Default settings should make things easier on the standard user, not harder.

This list was based on Jakob Nielsen's heuristics as published in Usability Engineering, Jill Gerhardt-Powals' work in Human Computer Interaction (paid link), and Bruce Tognazzini's First Principles of Interaction Design.

Magic Ink: Information Software and the Graphical Interface

People turn to software to learn the meaning of words, learn which countries were bombed today, and learn to cook a paella. They decide which music to play, which photos to print, and what to do tonight, tomorrow, and Tuesday at 2:00. They keep track of a dozen simultaneous conversations in private correspondence, and maybe hundreds in public arenas. They browse for a book for Mom, a coat for Dad, and a car for Junior. They look for an apartment to live in, and a bed for that apartment, and perhaps a companion for the bed. They ask when the movie is playing, and how to drive to the theater, and where to eat before the movie, and where to get cash before they eat. They ask for numbers, from simple sums to financial projections. They ask about money, from stock quote histories to bank account balances. They ask why their car isn’t working and how to fix it, why their child is sick and how to fix her. They no longer sit on the porch speculating about the weather—they ask software.

Fascinating reading, you can almost feel it poking new (but good!) holes in your zmobie brain as you read.

Anyone who's involved with software design or production should read this.