Choosing a Methodology, That You Should Consider Before You Write a Single Line of Code
Total Page:16
File Type:pdf, Size:1020Kb
4327book.fm Page 1 Tuesday, February 24, 2004 3:49 PM Chapter 1 Planning Your Project How does one design an electric motor? Would you attach a bathtub to it, simply because one was available? Would a bouquet of flowers help? A heap of rocks? —Professor Bernardo de la Paz, quoted in The Moon Is a Harsh Mistress, by Robert A. Heinlein COPYRIGHTED MATERIAL 4327book.fm Page 2 Tuesday, February 24, 2004 3:49 PM 2 Chapter 1 • Planning Your Project S o there you are with your shiny new IDE and your coding skills and a vague idea of what it is that you want to produce. The temptation can be almost overwhelming to dive right in and start typing. Don’t do it. Even the smallest of projects benefits from at least a little bit of planning up front, and yours is no different. In this chapter, I’ll discuss some of the basic planning steps, including requirements management and choosing a methodology, that you should consider before you write a single line of code. Nailing Down a Feature Set 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 fea- tures 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 Inter- net. 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. 4327book.fm Page 3 Tuesday, February 24, 2004 3:49 PM Nailing Down a Feature Set 3 The Elevator Pitch 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 hav- ing them. The scenario goes like this: You’re on your way to a meeting with the venture cap- italists 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. RULE 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? 4327book.fm Page 4 Tuesday, February 24, 2004 3:49 PM 4 Chapter 1 • Planning Your Project 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 Mind Map 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 3 A.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 mat- ter 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 white- board 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. NOTE 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 cor- tical 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. NOTE For general information on mind mapping, visit Tony Buzan’s website at www.mind-map.com/. 4327book.fm Page 5 Tuesday, February 24, 2004 3:49 PM Nailing Down a Feature Set 5 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. TABLE 1.1 Mind-Mapping Software for Windows Product URL Description ConceptDraw MINDMAP www.conceptdraw.com/en/products/ Cross-platform Mac/PC mindmap/main.php product that strives for a “hand-drawn” creative look.