|< Day Day Up >|| |
Before you write a single line of code, there’s a simple yet difficult question that you must answer: What are you writing? You need to have more than a vague idea of the end product before you can finish building an application. If you don’t know what you’re trying to produce, then you’re not really writing an application; you’re just noodling around with code. There’s nothing wrong with that as a learning activity, but as a developer, you need to be more focused.
“What” is not the only question you should be asking about your application at this point. In fact, you should think about the same set of questions that a good newspaper reporter asks:
What are you writing?
When do you want to finish writing it?
Where do you expect it will be used?
Why are you writing this software?
How will you write the software?
I’ve found it useful to start the process of software development with some brainstorming activities. The goal of brainstorming is not to come up with all the answers, but to develop a set of ideas that you can reasonably expect will include the answers. In the context of focusing your software development, that means that you want to have a pretty good idea of the features of the finished product before you start building it. It’s possible, even likely, that this list of features will change as you actually build the application. That’s OK; for right now, you just want to have a clear direction, even if the ultimate destination changes later.
If you read the Introduction, you know that my sample application for this book is named Download Tracker, and that it has something to do with downloading software from the Internet. So far, Download Tracker is just a vague idea: I want to keep track of things I download from the Internet. To come up with an initial feature set, I’ll develop an elevator pitch and a mind map.
The elevator pitch is an idea that was popularized during the peak of the dot-com era, when it seemed as if there were buckets of money out there to be had—and a lot of competition for having them. The scenario goes like this: You’re on your way to a meeting with the venture capitalists on the 87th floor of the skyscraper. You’ve got your laptop loaded with PowerPoint slides, and collateral to hand out. Your 15-minute presentation is honed to a glittering edge.
Then, just as you step into the elevator in the building lobby, the senior partner from the VC firm steps in with you. “So, Bill,” he says, “what have you got for us today?” Forget the 15-minute presentation. You’ve got a 30-second elevator ride to impress this guy and convince him to add zeroes to your bank balance. What do you say?
You’re probably not going to get an eight-figure investment from someone who thinks your idea is fabulous, but coming up with an elevator pitch is still a very useful exercise. The important thing is not to create your elevator pitch quickly, but to be able to explain your software quickly. You might also think of this as coming up with “100 words or less” to explain your software.
Write a short statement describing what your software will do, and why, to help keep you on track.
If you’re unsure whether a potential new feature should be added, ask yourself whether it fits in with the elevator pitch. If not, either the pitch needs to be modified or the feature should be discarded. When in doubt, discard the feature. Feature creep—the continuing addition of new functionality while you’re still writing the code—is one of the biggest enemies that keep you from actually finishing a project.
Here are some things to think about when you’re coming up with your elevator pitch:
Short is better than long. A long and rambling elevator pitch probably means you haven’t really decided what you’re building yet.
Functionality trumps technology. Potential customers care about what your software will do. They usually don’t care how your software does it.
Solve a problem. If you can’t explain what problem your application will solve, customers won’t know why they should buy it.
Pitch the benefits, not yourself. Customers won’t be buying you, your superior knowledge, or your development team (if you’re lucky enough to be working with a team). They’ll be buying the software.
Figure out what’s important to your audience, and make sure you address that. Are the people buying your product most interested in cost, innovation, features, compatibility, or something else entirely?
With those points in mind, here’s an elevator pitch for Download Tracker:
Download Tracker builds a personal catalog of all the software that you download from the Internet. You can add descriptions and keywords to identify each software package. Later on you can edit this information and add your own ratings. With Download Tracker, you’ll never forget where you saved a program again, or lose track of the name of the file that installs your favorite freeware application. If you run a website, you can even use Download Tracker to automatically generate a list of your favorite downloads, complete with hyperlinks.
The elevator pitch is a great tool for gaining focus on your application. You can print it out and nail it to the wall over your monitor to keep you motivated when you’re chasing bugs at 3A.M. and that last slice of pizza puts you into the heartburn zone. But after you’ve achieved that focus, you need to expand your view. This is the point where I’ll typically start brainstorming a more detailed list of the things that the software will do.
There are a lot of ways to do this brainstorming, and choosing between them is largely a matter of personal preference. Some people like to use a text editor or a word processor and just type ideas, perhaps organizing them into an outline. Many developers are happy with a whiteboard for this purpose, although that leaves you with the problem of saving the whiteboard contents for later reference. If you have this problem, take a look at PolyVision’s Whiteboard Photo (www.websterboards.com/products/wbp.html), though at $249 it may be too pricey if you’re not a frequent whiteboard user.
The software prices I quote in this book are current in early 2004. Prices do change, though, so check at the relevant websites before making up your budget. I’m including prices so you know which tools are free, which are inexpensive, and which are potential budget-busters.
My own personal choice for freeform brainstorming is the mind map. Tony Buzan, who invented this form of diagram, describes a mind map as “a powerful graphic technique which provides a universal key to unlock the potential of the brain. It harnesses the full range of cortical skills—word, image, number, logic, rhythm, color, and spatial awareness—in a single, uniquely powerful manner.” You can think of a mind map as a sort of two-dimensional outline; rather than organizing ideas into a linear list, you spread them around the page and connect them. Mind maps can also use icons, graphics, fonts, colors, hyperlinks, and other techniques to include information that’s hard to put into words.
For general information on mind mapping, visit Tony Buzan’s website at www.mind-map.com/.
There are several software packages out there to create mind maps, which is a good thing, because most developers don’t have the graphic skills to create a nice one by hand. Table 1.1 lists some of the mind-mapping software available for Windows.
Cross-platform Mac/PC product that strives for a “hand-drawn” creative look.
A free version written in Java. It’s quite a mature product, but concentrates on text rather than embellishments.
High-end dedicated mindmapping software with Microsoft Office integration and many features.
General-purpose diagramming package with mind maps as one of its possible outputs.
Inexpensive commercial program concentrating on text output with a browser plug-in.
Figure 1.1 shows a mind map of features, ideas, and notes for Download Tracker. This mind map was created with MindManager X5 Pro. As you can see, I’ve got a fair number of things in mind for this product.
Figure 1.1: Mind map for Download Tracker
One of the best features of software-generated mind maps is that they’re dynamic. It’s easy to move branches around, add or delete text or images, and otherwise update mind maps. If you’re using a mind map for brainstorming, consider updating it as your project proceeds to give you a continuously current snapshot of your ideas. If you do this, I suggest you archive a copy of the original version first. When the project is released, it’s fun to look back and see how your ideas about it have changed and evolved.
|< Day Day Up >|| |