Get your work done well.

Views: 287 Software No Comments »

Alright, so, you need something done. Maybe you need a file edited, or webpages served. Maybe you need something typeset. Or you want to track numerical data and then graph it. If you’re a sysadmin, you’re probably not going to roll your own solution; at the very least you’ll pick an OS, or a webserver, or a text editor, or a graphing application.But which ones? Windows, IIS, Notepad and Excel? Or Debian, apache, vim and gnuplot? Or FreeBSD, lighttpd, emacs and robot?

I know which ones I’d prefer to use (hint: not the first set). But you need to know which ones you should use. And while, ultimately, the mantra “the right tool for the right job” should always be the loudest argument, so that if you need to host .asp pages you aren’t trying to get them to play nice with Apache, there are some characteristics that Right Tools tend to have.

Flexible

A good tool is flexible. Despite the fanaticism of those who love it, Notepad is not a flexible editor. Notepad can open and close text files, and sometimes it can’t even do that (though this error is actually in Windows itself).

The flexibility of a program is generally what it can be made to do. But more than that, it’s what it can be made to do while already being set up to do something else. If your webserver can’t add a virtual host because it’s already set up serving CGI in some special way, then it isn’t very flexible, and sooner or later you will need it to do something that it can’t do.

Now it’s important to understand that sometimes flexibility is not built into software by default. Microsoft software is generally not flexible, and not just in the way Notepad is flexible (i.e., not featureless). Microsoft’s software, and in general other GUI software (whether it be web apps, or IDEs, or whatever) tend to be designed for a specific task, and once you get the software set up and handling that task, you don’t touch it anymore. Microsoft software (especially good software, like SQL Server) is great at this, and, except for patches and with a good firewall, once you set it up you can go basically forever without touching it.

But in general I find that I can’t get anything useful done with that level of rigidity, so I need tools that can do many different kinds of tasks in their domain.

What kinds of tools have this quality?

Well, they tend to be without ornaments. Generally they’re CLI only, or their main interface is the command line. This is because the pretty GUI lights will actually inhibit your interaction with them, and quickly make their use frustrating. If they need a different checkbox or window for every option or domain of options, they will quickly become either unusably complex, or they will sacrifice complexity for flexibility and become useless.

The downside to this is that having flexibility right there where you can use it is that the learning curve gets a whole lot steeper. A lot of people are put off by this, because they don’t want to tackle a huge learning curve when they just need something done. But you have to be very careful here: it’s not that the slope is easy, sometimes the peak just isn’t high at all, and then you can’t get anything done. Besides, when the slope is hard, you get to the top faster.

Would you rather have your staff moderately productive on day 1, and also on day 100 and 1000 and …, or would you rather have them still befuddled on day 5 and moderate on day 50 and wizards on day 150?

Customizable

When I type and I make a mistake, I hit Ctrl-W. It’s built into me. In pretty much every editing environment I use, it deletes whatever word I was just trying to type. If I need to delete 10 words, I can hit Ctrl-W ten times. Or I can sometimes hit C-u 10 C-w. This is really nice. With this and other shortcuts, I can type really fast.

Not in Windows though. (Not to pick on MS so much, but it’s just so easy to find things you hate.) Or, not easily. (And even then C-w is still broken, since Emacs uses it for something else. Luckily the real Emacs is customizable.) In Windows C-w means “close the current window” and often it means “close the current window without asking me”. I bet you can guess how fun that is. At other times it just doesn’t mean anything.

Customizability (augh, what a hideous nonword) is basically flexibility for the user interface. I can get my job done with a tool that can’t be customized, but I can get it done a whole lot faster and with a much higher probability of having done it right with a tool that I can shape to fit my needs.

This is similar but not quite the same as a tool’s being

Extensible

With a customizable interface I can make doing small chores easy (you don’t think I typed all those URLs in the first paragraph, do you?), and get them done faster. With an extensible interface I can automate them entirely.

Very few tools are actually easily extensible, and even in this case “easily” is relative. Emacs is probably the most easily extensible, since you never even have to restart it, but you still need to know emacs lisp. Outlook is technically extensible (for example) but it’s a lot more difficult. I bet QuarkXpress is good at typesetting, but when you really need heavy lifting done, do you want a bunch of nerds in horn-rims tooling around on their Macs, or do you turn to TeX? Yes, again, the learning curves are a lot more vertical, but the sheer amount of work you can do isn’t measured by how fast you can run down that curve, but on your altitude.

Ultimately you should use the tool that best complements the task you need done. If your users need to do a small subset of complicated tasks, sure, use a control panel (but make sure you understand it!). I think there’s a tendency for people to use the simplest tool, however. If you don’t use good tools and take time to learn them, you may end up regretting it.

(speaking of bad tools, the editor that comes with Word Press ate all my links. I suppose you can guess at what’s behind them, because it’s not accepting new ones.)

WP Theme & Icons by N.Design Studio & modified by ServePath.
Entries RSS Comments RSS Log in