I'm the Idiot, Really

This is the first in a series of articles on Needs Analysis.

Years ago, I sometimes thought people were stupid.

In my 20 years as a programmer, I have never—not once—gotten a Request for Proposal (RFP) that had enough detail that I could accurately estimate the project. Why don't they give enough information? I used to wonder. Luckily, in 20 years I've also learned that whenever I think there's stupidity around, I only need to check the mirror to find the source. Works every time.

The issue with RFPs is not that people writing them lack intelligence. If a customer could write an RFP in complete detail, they'd already be a programmer, and they wouldn't be a customer!

Yesterday I went to see an Otolaryngologist (fancy name for an ear, nose and throat doc), and told him I've been hoarse for a few months, and my voice gets tired very quickly. He gave me an examination (I got to see my vocal chords in action—cool!). Now imagine if he'd said to me, "Duh! It's Muscular Tension Dysphonia—what else?" I would have told him to jump in the lake. It's not my job to know that; it's his.

Exactly.

Today when a potential client sends us a few pages describing what they need, I know it's time to play doctor—that is, it's time to help them figure out what they need, and define the needs in enough detail that I can propose a cost and timeframe. We call this phase Needs Analysis (also called Requirements Analysis), and it is always the first phase of any project.

If we use the metaphor of home building, the Needs Analysis is the process of describing your needs for the house you want to build, then making decisions that range in significance from the size of the house and how many rooms, to the color of carpeting you want and what kind of window treatments. A builder can't begin his/her job until they get the plans.

Do you need help figuring out the "plans" for your project? Let's talk! I promise to recognize how brilliant you are.

Stay tuned—in my next blog entry I'll talk about the dirty little secret that many programmers keep from you.