Back in junior high, I had the privilege of being part of a robotics club. We worked with a variety of kits, including an early Lego Mindstorms set. It rocked, and it pushed my “hobby” into a real thing I studied.
There was just one problem.
Mindstorm robots are programmed in a drag-and-drop interface. It was pretty good and covered all the features I wanted, and all the other kids had no problem understanding it.
It also didn’t really support variables; you had to “wire” lines between command boxes that needed variable input. And of course there was no such thing as an array or stack.
Don’t get me wrong. Sometimes limitations can be really good. For example, the robot kits and units could only support 3 motors and 4 sensors at a time. This limitation led to some very interesting challenges, such as figuring out how to build an omnidirectional wheel system. Out of legos. Those were fun times.
But I longed for my text editor. I hated using drag-and-drop; I could write a line of code faster than the 30 clicks-and-drags it would take to make a “block” in the GUI. Some people thrive with these easy-to-use interfaces — “drag-and-drop” itself is often used as a way to say “easy as all hell” — but there should always be an alternative for the geeks who already know how to do things more efficiently.
This happens everywhere. Pretty much any “web host custom control panel” will try to coax users into its own, custom, “totally easy to use without any practice” file management interfaces. Some rock, some suck. I bet the first-time users and non-tech people love them, as with some experimenting they can actually be pretty good.
But what about the geeks? I have my FTP app (I use Transmit), thank-you-very-much. And your fancypants “web 2.0” file browser can’t do things like mount a directory as a local drive. It can’t let me edit in place using my text editor of choice. Stop treating me like a kid, and give me the good stuff — let me FTP in!
Another example: How hard would it be for a web app to allow users to export their data in JSON or XML? PDF is nice, but sometimes I want it programmatically. It’s just parsing the data into a single formatting function.
When possible, always let there be logical, advanced options for the people who can use them. And I don’t mean adding complex APIs or developing libraries; as shown here, this applies most to tools that should already exist with little effort.