Tuesday, September 20, 2011

Drag and Drop = Evil!

Perhaps it's just me, but I've never really liked or had much luck with drag and drop over the years. While in some ways, some people may claim that "drag and drop is intuitive" (in certain contexts, yes, it probably is, but not everywhere that it often springs up), I think that in the grander scheme of things, it probably does more harm than good. Primarily when considering the following factors: ergonomics, efficiency, and error rates.

Ergonomics

In terms of ergonomics, drag and drop involves directing a mouse or some other kind of pointing device at an item on screen, clicking (by pressing down on some button with a finger on the hand holding the said pointing device), and holding this down while dragging the mouse towards some target.

While simple to learn and to some extent intuitive in that it closely models how we're used to grabbing and releasing objects in real life in order to move them, this gesture is probably highly prone to leading to repetitive strain injuries.

When performing this action, we have several primary pressure points. Obviously, one of these is the finger (and its joints) that is responsible for holding down the button, as it exerts a downwards force upon the mouse in order to hold the button down.

The second one though, and probably one that is overlooked sometimes, is the wrist. On one hand (no pun intended) the arm exerts force upon the mouse through the wrist, as it sits between the arm and the hand+mouse complex. At the same time, the mouse ends up resisting movement, due to a combination of friction of the mouse against the surface upon which it sits, but perhaps more critically, the pressure applied by the finger on the mouse button which in turn clamps the mouse downwards, thus resisting movement.

Therefore, to actually move the mouse, you end up needing to clamp your fingers around the mouse tighter in order to apply a greater force through the arm without losing your grip (and thus accidentally releasing the mouse button prematurely - more on this later). But, clamping your fingers tighter on the mouse means that your hand tightens up, which further increases the strain passing through wrist again.

I think we don't need a refresher on the implications of prolonged and repeated pressure buildup in that spot...


Efficiency

IMO drag and drop tends to only be somewhat efficient over shorter distances. That is, dragging an item around within its immediate neighbourhood is much easier to perform than dragging an item across from one side of the screen to the other.

And that is not to mention the situations where you have a list where you want to move an item down, and you end up holding a dragged item just above the bottom of the list, waiting for it to painfully inch up one row at a time to find the place to release the item. While perhaps physically you haven't moved the mouse very far once you get into this state, in screen space/visually, you're still moving that item quite a distance.

Why is this?

Well, over longer distances, you're really playing with hand-eye coordination issues. Over shorter distances, you have the benefits of spatial memory and good awareness of where the targets are with relation to the item, as they are most likely closely spaced around the pointer (and hence the focus of attention). However, once you start having to move across the screen, to a target that is either currently invisible, or perhaps nestled among a cluster of items (both of these cases are very likely to occur in UI's involving DnD over long distances these days) then you're going to have a harder time identifying the target, and you haven't even started to associate mouse-movement needed to get this result.

It should also be noted that the ergonomic problems noted above also trickle down into efficiency of said gesture.


Errors

By errors, I'm referring to all those times when you either accidentally start dragging something and dropping it somewhere you didn't intend. This happens a LOT, especially in a hurry, usually when you have the least time to figure out why or what went wrong and try and fix the situation.

These usually go along the following lines:
1) You go to a file/folder, and position mouse cursor over it
2) You intend/try to click on this once/twice, perhaps in a slightly rush
3a) In your rush to click twice, you bump the mouse while the mouse button is down
3b) One of your clicks lingers a little too long, and merges into a move-the-mouse-away movement
3c) For some reason, your computer momentarily freezes up (perhaps it's loading the JVM, har har har) and as a result, the clicks get misrepresented, leading to the same problem as above
4) The result is nearly always unintended:
 - two icons stacked on top of each other (Windows explorer is a primary culprit here)
 - an important toplevel folder now moved to reside within a nested folder somewhere else (Windows Start Menu) or perhaps an important file just vanishes without a trace
 - rearranging the icon causes auto-arrange to kick into action, destroying the fancy Feng-Shui inspired symmetrical layout of your desktop you spent the past 3 years obsessing over the pixel-perfect placement of icons on...

But that's just the "click becomes accidental drag" issue. However, just like in the previous section, we can see that the previous sections come into this too to produce another class of issues:
1) You're dragging some item from Point A to Point B (usually some long distance)
2a) Your finger starts getting tired from the effort, relaxing slightly or just giving up completely
2b) You run out of table space to move the mouse (perhaps most common version), and either decide to let go to regroup and move again after recentering the mouse, OR, when the mouse hits something (or falls off the table), you momentarily lose your grip on the mouse
2c) Your mouse button is getting glitchy from all the dragging and dropping you've been doing, and glitches all over the show, making phantom pulses and clicks
3) Lo and behold, the item you were dragging has now disappeared, most certainly dumped somewhere in transit, often in hostile territory behind enemy lines. Whoops!

Now, even if you don't accidentally drop the item, the long-distance dragging still suffers from the out-of-table-space issue, where you end up needing to regroup, perhaps multiple times, performing a long, tricky, and error prone long-distance migration from one screen edge to the other.


As far as I'm concerned, these sorts of errors are all too common with drag and drop as it stands in most software out there. Not only do they come up time and time again, when people end up doing things they did not expect or intend to, and pay the price in confusion, frustration, and lost time restoring their system to the previous state. Rather, by making these errors, they're losing efficiency and as a result productivity decreases. Also, users are paying an ergonomic price everytime they need to perform these actions, and with this sort of productivity loss, it's worth checking whether the gains from having this in a few select cases outweigh the costs incurred by the majority when it ends up causing errors.

Besides... drag and drop tends to end up being tricky to code ;)

2 comments:

  1. Before you splitted the outliner.c, im mailed you about integrating the drag and drop patch or at least get in touch with the author of this patch. Surely things would be easier before the splitting.
    I totaly disagree with you statements against this feature; i find it very intuitive and speedy. No props so far....
    But hey you are the coder....

    ReplyDelete
  2. even i dont agree , i am used to maya's outliner and i love drag and drop, i really wish this to be implemented in blender

    ReplyDelete