One thing you learn quickly when you leave a Fortune 200, well recognized Enterprise and join a smaller, much more exciting software company is that it is a lot harder to answer the inevitable "what do you do?" question. That is no more true than during the holidays, when you're visiting with distant relatives, many of whom still think of AOL as the Internet and think software is written by geeks in basements. Plagued by this problem, I have constantly sought the "perfect" metaphor for "what I do" so that anyone can understand software UI components. And at last I have the answer.
Rather than keep the metaphor to myself, I have decided to share this simple insight so that your future holiday conversations can proceed without awkward pauses and quick transitions to "how 'bout those <sports team here>". If you're not in the business of making UI components, then hopefully this metaphor will help you explain (or even understand) the role UI components play in software development.
UI components are doors and windows
The crux of the metaphor is this: UI components are to software developers what doors and windows are to a contractor (I know, more of an analogy than a metaphor, but go with it). Let me explain why this comparison is so perfect.
When a contractor is building a house, there are many pieces of the house that he buys pre-made to save time and money on the project. These are things like doors, windows, faucets, and fixtures. All contribute to the final look-and-feel of the house and all come with variety of "features". Windows may be double paned and filled with argon gas for insulation; doors might have decorative glass inserts or an easy-hang frame. At the end of the day, these are well-defined, commodity items that don't need to be custom made to build a beautiful custom home.
With enough time and money, though, there is no reason the contractor couldn't build all of these things himself. He could hand-craft the house's windows, doors, and fixtures. They would all be unique, one-of-a-kind items that were built to the exact specifications of the house.
But since the contractor is an expert at building houses, not windows or doors, the "features" or quality of the items he builds will probably be less than the doors or windows he could have bought pre-made. Even assuming he's had pervious experience building custom doors and windows on past houses, it's unlikely that he knows the latest and greatest techniques for building energy efficient items or has all of the expensive tools for doing advanced things like argon filled windows. For the sake of argument, though, let's say the home owners don't mind that they don't get all of the bells and whistles as long as the doors and windows work. Let's also say the contractor has the ability to build high-quality doors and windows.
Five years pass and the home owners have been happily enjoying their custom home and have decided to do some remodeling. The original contractor moved to a different state and is no longer available, so the home owners pick another qualified contractor. Part of the remodeling includes adding more doors and windows that match the original house, but since they are custom made, it is going to cost them a lot more on the new project. The original contractor didn't leave instructions detailing how he built the custom windows and new contractor is not as good at custom work. "Why didn't you just use pre-made doors and windows?" the new contractor asks. The home owners, faced with mounting maintenance costs, are starting to wonder the same thing.
At the time, it seemed okay to build custom doors and windows with their custom house. The contractor said it wouldn't be a big deal; he'd done it before. It cost a little more, but the contractor said it was better than depending on some outside window or door company. He failed to mention that they'd lose advanced energy saving features, have higher maintenance costs, and be on their own to fix problems- all issues that could have been avoided with pre-made items.
Complete the metaphor
In the previous illustration, simply substitute UI components for doors and windows, custom software development for custom home development, lead programmer for contractor, and management for home owners to bring everything back to software. It should be clear that a strong comparison can be drawn between home building and UI components. It is a much stronger analogy than comparing UI components to car manufacturing (a comparison I've seen before), where often the manufacturers do make many of their own parts (and then produce thousands of the same car).
In short, just like doors and windows for a house, UI components save software developers time and money by delivering advanced, well tested, and high quality tools that can be used in any software project. And down the road, when the original software team has moved on to new projects, the maintenance team has someone to turn to for help fixing problems or adding new features an application.
Hopefully this metaphor/analogy/illustration makes the concept of UI components easier for your to understand and easier to explain to your non-software friends and family. Now if only an equally simple analogy existed for the title "Technical Evangelist"...