Tools of the Trade
a rose by any other name
Which is better: 20 singles, 4 fives, 2 tens, or a twenty dollar bill? Without a context, there is no answer - it's all the same amount of money, right? Unless you plan to take 20 buses. Or have 4 grand kids. Or expect to split all your cash in half with your sworn enemy. Or you have a really full wallet. The truth is that there are no absolute right answers - all answers hinge on their context.
Ask anyone what operating system to use, and they tell you. Oh, they'll tell you all right. Mostly, they'll tell you what they use, and why it's better than all your other choices. Unix. GNU-Linux. FreeBSD. Windows. Amiga. Windows NT. Macintosh OSX. And then a litany of reasons why you should use that system, and only that system, and why every other system would be a tragic mistake.
Which database should you use? Oracle? DB2? Postgresql? SQLServer? MSAccess? FilemakerPro? MySQL? Each has its role, its own particular benefits and drawbacks depending on what you're doing today, and what you'll be doing tomorrow. Need to keep track of your recipes on your home computer running Windows? You'll probably find MSAccess easiest to use. Building a web site from scratch that you expect a million people to use? Probably Oracle, but then, Postgresql and DB2 both scale incredibly well, and are much cheaper.
Want to design a web interface? You could use Flash, or Photoshop, or Gimp, or Illustrator, or Quark -- they're all good visual design tools. Want to implement a working web site? Try BBEdit. Or Dreamweaver. Or Homesite. Or NetObjects. Or Front Page. Or just good old Notepad. Though I've used them all, quite frankly, they all bug me eventually. That is, I always manage to find something that one tool does badly, and another well.
Technology is just a tool, appropriate to a job or function. Depending on what you're doing, they're all better than each other - each has some things it does well, and others poorly. As is probably apparent by now, I do not emphasize or advocate any specific tool set. I am not an expert at Photoshop, Illustrator, Flash, or any particular design tool. I believe that good design and good technique are vastly more important than expertise with a particular piece of software. Proficiency with the right software can make you more productive, and make your working methods more efficient, and can, ultimately, help put a polish on the work you do, but knowing how to use some particular tool well won't guarantee that you can do good work; conversely, if you know how to design well, you can use a wide variety of tools to get the job done. The best way to choose any technology is by comparing actual specifications and known performance to project goals. not checking people's experience is astonishing.
tomorrow and tomorrow and tomorrow
The point here is that people tend to think statically - what do I need right now? But if what you're doing has a long lifespan (say, more than 6 months, better still no expected end date), then the technology will change. Seemingly constantly. Still, technology is as faddish and trendy as any other cultural product that we consume. In the past three months, everything has changed while you watch. But try taking a sabbatical from the Internet for the next three months; you'll discover that somehow, miraculously, nothing really changed while you were away.
Anyone who's replaced a personal computer knows that today, you can pay half as much money for twice as much technology as you bought three years ago (and which is now obsolete). And if you just wait three months, boy, that monitor will be a lot cheaper, or gee, they'll have a faster processor. There are always better solutions tomorrow. But a top end personal computer still costs $3,000, which has been the price tag for a decent PC for almost two decades. Computers still take as long to start up as they always have, if not longer, despite a 100-fold increase in processing power and available memory. Software takes ever longer to launch, and crashes ever more frequently. Though the real dollar costs have come down, and real power in terms of the kind of work that can be accomplished has risen, it takes as long today to get a computer to do what you want as it ever did.
Instead, choose your technology based not upon what it does do, but upon its flexibility, its scalability, and the portability of the files and data it creates. Microsoft is infamous, particularly among developers, for creating files and data types that only Microsoft software can use and understand. HTML is, by comparison, an open standard designed to be universally accessible. Based on what you're doing now, predict three likely scenarios for the next year. If the cost of getting from where you are today to any one of those end points is low relative to your overall costs, it's a good choice. If there's a strong risk you'll wind up "stuck" with a solution, or if one likely outcome requires an enormous conversion expenditure, make a different choice today. All tools create information of some kind -- an electronic representation of the work you've done. What's important is to understand the formats available, and the ability of various tools to import and export the kind of information with which you expect to work. The tool itself is not important; it's the sanctity of the data that should always be first priority.
Technology is a hammer. It's a tool for getting things done. Tools wear out, and formats change -- choosing the right tools and technology can help you not only get through today, but can see you through tomorrow as well.
pushing the envelope
Too often, people ask me how to make some tool do a particular thing, and my answer is frequently the same: I have no idea. Personally, I hunt through every menu option, then use the available help, look at on- and off-line manuals and tutorials, and failing all that, switch to another tool and repeat the process. Of course, nothing replaces experience; I've come to know what I can expect from a tool or suite of tools, even if I haven't used it before -- I have a general idea of what it's capable of, and that's enough. Still, I start with a picture of what I want to realize, and try everything I can to implement what I intended. Unless I can demonstrate to myself that what I want is technically impossible, or that it can't work effectively with available technology, I stick to the plan.
Many people start their education by learning how to use the tools one by one, meanwhile having no particular use for any of them. I tend to approach things the opposite way: with something to do and no particular idea how exactly to do it -- just the confidence that there's some way to get it done. I'm amazed how often people simply abandon their design when they're stymied by a tool. I believe too much of the web reflects this in its design; it's often easy to see what tool or tools someone used to build a site. The work shows not the hand of the maker, but the constraints of the tool used. People begin to design for their tool of choice, which limits what can be accomplished. Great design instead comes when one ignores the constraints and searches for the boundaries.
As a rule, the only real constraint is the media itself. Today, bandwidth is the fundamental limitation on the web. Other constraints include screen resolution, browser compatibility, aspect ratio, and the users themselves. But there's almost always a way to get the design across. It may morph along the way, and often the end use defies any expectations its designers ever had, but rarely is there no way to do a thing, if the thing is really worth doing. There's a certain art to knowing if something is "worth it," but when it comes down to it, you can just feel how "right" a design solution is. Sometimes the solution itself is fine, but the realization or implementation is weak. It's absolutely critical to distinguish between goals, ideas and solutions that are wrong, and bad implementations of good ideas.
master of your domain
It takes years to learn to do so meting with competence, a decade or more to become a true expert, and a lifetime to even approach genuine mastery of a skill. When beginning to learn to do anything new, it usually seems as though the power to accomplish something lies in the tool. When you begin to understand how to do even the most basic things, you look at what else is being done in a new light, and begin to ask, "how did they make it do that?" What tool or option was used to produce that result?
I've found that the really cool stuff always turns out to be a "trick" -- some combination or twist that wasn't covered in the manual. It's not because they intentionally left the good stuff out of the manual, rather that people accidentally stumble upon ways to do the things they want in the process of exploration. More great discoveries are found by accident than any other way. It's not that screwing up produces great results, but that recognizing a failure to accomplish one thing can be the success of something unexpected.
This may all seem a little zen for a lecture on tools. But mastery of design is no different than than mastering any art -- becoming a guru or black belt or CEO comes precisely when the tools one uses become extensions of one's self, when one finds the ability to realize the end result with any tool at hand by focusing on the result and not the process. It takes a little faith to see something through, but faith is where the magic lies.
all content © copyright 2003 neil verplank, unless otherwise stated