On Dec 12, 2011, at 12:26 PM, Guy Sotomayor wrote:
The GUI is for
people who don't know how to use a computer.These people should also be forced to use
"driverless-cars"
*sigh* OK, here's where Dan and I part company. I use a GUI all the time.
Sometimes it's the best/easiest way to do something when I don't want to have to
deal with (remembering) the intricacies of a particular feature/function. However, a
poorly implemented/thought out GUI is the devil's spawn and can make a CLI a much
better alternative. The alternative is also true, you can have CLIs that are so complex
that tracking all of the options can be a job in and of itself. Sometimes a GUI wrapper
can make those cases much easier to deal with.
I'm with you on that; it's all in how you present the information.
We did a project at work a while ago for a satellite TV company making a test equipment
PCI card. I wrote the FPGA, the driver and the userland interface library, so I had to
write a bunch of test programs. Those test programs turned into the programs we used to
manipulate the card in the lab to do the functional testing as well, and the client ended
up using it to do day-to-day operations before the testing began. One guy said that the
command-line utilities were a lot more useful (because they were more complete and
flexible) and available way quicker than the GUIs they'd gotten from most of the major
manufacturers.
That's just a case of bad design on the vendors' parts, of course; I could have
made a GUI layer on top of the library (and it's easier now with Python and Qt than it
was 5 years ago) and made it sufficiently complete, largely because I don't assume my
customers are idiots and "hide" functionality that gives you enough rope to
shoot yourself in the foot.
On the other hand, my current project involves a lot of things that need to happen
continuously and in real-time, so it's a heavily multithreaded application with a
large pile of buttons, knobs and text fields. I could do the same in a CLI, and our
original testbed was one, but the volume of information that needed to be conveyed rapidly
expanded beyond what one could efficiently do with just a CLI. The current interface is
friendly enough for uninitiated Navy lab techs to use, but it doesn't hide anything;
literally anything that can be twiddled is available to be twiddled. There's even a
tab for doing raw register reads and writes because honestly, sometimes you just need to
do that and there's no reason to pretend otherwise for the sake of
"simplicity".
GUIs aren't for people who don't know how to use computers, and I think that
dangerous assumption is primarily what drives terrible GUI design these days. If you
assume your users are idiots and try to design around them, not even the smart people will
be able to make use of your thing.
- Dave