Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How important is it to write functional specs?

I've never written functional specs, I prefer to jump into the code and design things as I go. So far its worked fine, but for a recent personal project I'm writing out some specs which describe all the features of the product, and how it should 'work' without going into details of how it will be implemented, and I'm finding it very valuable.

What are your thoughts, do you write specs or do you just start coding and plan as you go, and which practice is better?

like image 696
Ali Avatar asked Jan 03 '09 15:01

Ali


4 Answers

If you're driving from your home to the nearest grocery store, you probably don't need a map. But...

If you're driving to a place you've never been before in another state, you probably do.

If you're driving around at random for the fun of driving, you probably don't need a map. But...

If you're trying to get somewhere in the most effective fashion (minimize distance, minimize time, make three specific stops along the way, etc.) you probably do.

If you're driving by yourself and can take as long as you like, stopping any time you see something interesting or to reconsider your destination or route, you may not need a map. But...

If you're driving as part of a convoy, and all need to make food and overnight lodging stops together, and need to arrive together, you probably do.

If you think I'm not talking about programming, you probably don't need a functional spec, story cards, narrative, CRCs, etc. But...

If you think I am, you might want to consider at least one of the above.

;-)

like image 66
joel.neely Avatar answered Oct 17 '22 22:10

joel.neely


For someone who "jumps into the code" and "design[s] as they go", I would say writing anything including a functional spec is better than your current methods. A great deal of time and effort can be saved if you take the time to think it through and design it before you even start.

  • Requirements help define what you need to make.
  • Design helps define what you are planning on making.
  • User Documentation defines what you did make.

You'll find that most places will have some variation of these three documents. The functional spec can be lumped into the design document.

I'd recommend reading Rapid Development if you're not convinced. You truely can get work done faster if you take more time to plan and design.

like image 29
Kieveli Avatar answered Oct 17 '22 23:10

Kieveli


Jumping "straight to code" for large software projects would almost surely lead to failure (as immediatley starting posing bricks to build a bridge would).

The guys at 37 Signals would say that is better to write a short document on paper than writing a complex spec. I'd say that this could be true for mocking up quickly new websites (where the design and the idea could lead better than a rigid schema), but not always acceptable in other real life situations.

Just think of the (legal, even) importance a spec document signed by your customer can have.

The morale probably is: be flexible, and plan with functional or technical specs as much as you need, according to your project's scenario.

like image 31
friol Avatar answered Oct 17 '22 21:10

friol


For one-off hacks and small utilities, don't bother.

But if you're writing a serious, large application, and have demanding customers and has to run for a long time, it's a MUST. Read Joel's great articles on the subject - they're a good start.

like image 4
Eli Bendersky Avatar answered Oct 17 '22 21:10

Eli Bendersky