I've firmly believed that developers have as much to do with user experience as designers and functional analysts or product managers - if not more. Look at the checkbox in the screen that says "Erase after Importing".
Thanks to the way it is implemented, you can check/uncheck it anytime during the import process, any number of times. It just picks up the last state of the checkbox after import is done.
Obvious, you may say. But let's look under the hood to understand how this could have got killed.
The right way to implement this is (don't read too much into the syntax, this is just to illustrate the example):
Less lines of code, less variables used, less memory consumed, less processing time.
Two birds, one stone.
All valid code optimization techniques.
Wonderful.
But as a feature, this would mean - the first state of the checkbox gets read. You cannot change your mind once the import starts.
The lack of the flexibility doesn't make the feature less usable, but its presence pushes the usability up by a notch.
It is small things like these that constitute the difference between Customer Satisfaction and Customer Delight, don't you think?

Obvious, you may say. But let's look under the hood to understand how this could have got killed.
The right way to implement this is (don't read too much into the syntax, this is just to illustrate the example):
for (int index: items) //for each item{A developer could at the code above and say - Whoops! 2 for loops iterating over the same list is suboptimal - so rewrite it as:
import(index); //do whatever it needs to import
}
boolean eraseOnImport = chkErase.getValue();// read the checkbox state
if(eraseOnImport){
for (int index: items) //for each item
{
delete(index);
}
}
boolean eraseOnImport = chkErase.getValue();// read the checkbox state
for (int index: items) //for each item
{
import(index);
if(eraseOnImport){
delete(index);
}
}
Less lines of code, less variables used, less memory consumed, less processing time.
Two birds, one stone.
All valid code optimization techniques.
Wonderful.
But as a feature, this would mean - the first state of the checkbox gets read. You cannot change your mind once the import starts.
The lack of the flexibility doesn't make the feature less usable, but its presence pushes the usability up by a notch.
It is small things like these that constitute the difference between Customer Satisfaction and Customer Delight, don't you think?


16 comments:
I don't know... the way this dialog is presented, the "erase after import" option is pretty ambiguous. Given the ability to change this checkbox during import -- especially if the import process took more than a second or two per picture -- I think some folks might get the impression that the erase/keep decision was for each picture individually...?
@Jgarbers,
I agree with you. The text ought to read "Erase all after Importing".
God is indeed in the small things but it has to be implemented properly too as jgarbers pointed out.
I like sowmya's solution -- often all you need is a minor change in text to make a real improvement. I might even go with "Erase all after import is complete" to make it clear that if you cancel the import process it won't kill your originals.
I thought the same thing as jgarbers.. that "erase" checkbox is for each picture. Why not just show a button "Delete all photos from camera" after the import is done?
i like siddhi's idea which is more simpler. After the import show a dialogue box with two buttons which will say something like the following...
Finished Importing. What more can we do?
"Delete photos from camera" "Nothing, I'm Done"
The default focus can be the "Nothing" button
The idea of having a button is nice - but as I understood siddhi's idea, it was to be on the same dialog box. One more dialog box is one too much I think, for this context.
There's a flip side to adding the button, though. A checkbox doesn't require a user to act upon it, the button does. So it is a different message we're giving the user.
Seems to me that this dialog's main job is to let the user know that the import is proceeding. I think the question of whether or not the original files should be erased should have been asked before the process started. What if there were only two pictures being imported and it happened so fast you couldn't get to the checkbox in time?
Good point jgarbers that the user might miss the check box on the progress bar if there are just one/two pics getting imported.
But forcing the user to take a decision on whether to keep the originals well in advance is also not a good idea. Thats why i suggested a status message after the progress bar which has multiple objectives.
1. It tells user that the importing is over
2. Next step can be deleting the original files
Or
Just say i'm done and exit
So there is no advance decision making, no multiple check box clicking while importing (may be simple code as sowmya said. i have no idea tho). Its more simple and stupid. I also think that taking a decision of deleting something should not be a check box option.
We'll probably have to disagree on this one, Umesh. I'd rather not have an extra step at the end, and it seems to me that the time to decide whether to leave things on the card or not is at the beginning of the process when you're engaged in the task.
Picasa handles this nicely - you get to select the pictures you want to import, and as soon as you click the button to start the import, you get a dialog giving you the options for deleting from source: leave the source alone, delete everything from the source, or delete only files that were successfully copied (they call that "safe delete").
I would agree with jgarbers here. Deciding to move or copy is a decision I would like to take at the begining of the process and as long as I have a safe delete option, I think this would work the best.
@jgarbers & @Vinodh : Okay no issues. I kinda thought keeping from my behaviour as a user. I have never let picasa delete the originals on its own before me being sure that alls well. Just that i was worried if somethng goes wrong in between like a machine hang or a power failure or whatever. I make sure that everything is imported and fine and then delete the originals manually. So here i thought of making the system do it by making me sure that everything is imported and then giving me the option to delete.
May be its a corner case. I give up.
The anonymous comment was a "human powered" spam, so I removed it.
i have seen your web page its interesting and informative.
I really like the content you provide in the web page.
But you can do more with your web page spice up your page, don't stop providing the simple page you can provide more features like forums, polls, CMS,contact forms and many more features.
Convert your blog "yourname.blogspot.com" to www.yourname.com completely free.
free Blog services provide only simple blogs but we can provide free website for you where you can provide multiple services or features rather than only simple blog.
Become proud owner of the own site and have your presence in the cyber space.
we provide you free website+ free web hosting + list of your choice of scripts like(blog scripts,CMS scripts, forums scripts and may scripts) all the above services are absolutely free.
The list of services we provide are
1. Complete free services no hidden cost
2. Free websites like www.YourName.com
3. Multiple free websites also provided
4. Free webspace of1000 Mb / 1 Gb
5. Unlimited email ids for your website like (info@yoursite.com, contact@yoursite.com)
6. PHP 4.x
7. MYSQL (Unlimited databases)
8. Unlimited Bandwidth
9. Hundreds of Free scripts to install in your website (like Blog scripts, Forum scripts and many CMS scripts)
10. We install extra scripts on request
11. Hundreds of free templates to select
12. Technical support by email
Please visit our website for more details www.HyperWebEnable.com and www.HyperWebEnable.com/freewebsite.php
Please contact us for more information.
Sincerely,
HyperWebEnable team
info@HyperWebEnable.com
It is nice to see such diverse views on usability.
For me the take away was something different. How can we train developers to think about the implications of every user interface element? Or should we? It is a different discussion, I think. But thanks for making me think about it.
Post a Comment