This link has been bookmarked by 302 people . It was first bookmarked on 06 Jul 2006, by James Ganong.
-
27 Dec 16
-
17 Oct 16
-
16 Aug 16
-
08 Jul 16
-
04 Jul 16
-
22 May 16
-
17 Mar 16
-
Why won't people write specs? People claim that it's because they're saving time by skipping the spec-writing phase.
-
failing to write a spec is the single biggest unnecessary risk you take in a software project. It's as stupid as setting off to cross the Mojave desert with just the clothes on your back, hoping to "wing it."
-
I believe that on any non-trivial project (more than about 1 week of coding or more than 1 programmer), if you don't have a spec, you will always spend more time and create lower quality code
-
The most important function of a spec is to design the program.
-
describing how the program works in minute detail -- will force you to actually design the program.
-
As a result, the final product tends to be a compromise between the initial, wrong design and the ideal design. It was "the best design we could get, given that we'd already written all this code and we just didn't want to throw it away." Not quite as good as "the best design we could get, period."
-
Giant reason number two is to save time communicating.
-
When you write a spec, you only have to communicate how the program is supposed to work once.
-
Everybody on the team can just read the spec. The QA people read it so that they know how the program is supposed to work and they know what to test for. The marketing people use it to write their vague vaporware white papers to throw up on the web site about products that haven't been created yet. The business development people misread it to spin weird fantasies about how the product will cure baldness and warts and stuff, but it gets investors, so that's OK. The developers read it so that they know what code to write. The customers read it to make sure the developers are building a product that they would want to pay for. The technical writers read it and write a nice manual (that gets lost or thrown away, but that's a different story). The managers read it so that they can look like they know what's going on in management meetings. And so on.
-
When you don't have a spec, all this communication still happens, because it has to, but it happens ad hoc.
-
Number three giant important reason to have a spec is that without a detailed spec, it’s impossible to make a schedule
-
Number three giant important reason to have a spec is that without a detailed spec, it's impossible to make a schedule.
-
But for almost any kind of real business, you just have to know how long things are going to take, because developing a product costs money. You wouldn't buy a pair of jeans without knowing what the price is, so how can a responsible business decide whether to build a product without knowing how long it will take and, therefore, how much it will cost?
-
In too many programming organizations, every time there’s a design debate, nobody ever manages to make a decision, usually for political reasons. So the programmers only work on uncontroversial stuff.
-
In too many programming organizations, every time there's a design debate, nobody ever manages to make a decision, usually for political reasons. So the programmers only work on uncontroversial stuff. As time goes on, all the hard decisions are pushed to the end.
-
Writing a spec is a great way to nail down all those irritating design decisions, large and small, that get covered up if you don’t have a spec. Even small decisions can get nailed down with a spec
-
Writing a spec is a great way to nail down all those irritating design decisions, large and small, that get covered up if you don't have a spec.
-
When you force yourself to write a good, complete spec (and I’ll talk a lot more about that soon), you notice all these things and you either fix them or at least you mark them with a big red flag.
-
When you force yourself to write a good, complete spec (and I'll talk a lot more about that soon), you notice all these things and you either fix them or at least you mark them with a big red flag.
-
-
25 Feb 16
-
01 Feb 16
-
02 Nov 15
-
01 Jun 15
-
16 Feb 15
-
19 Jan 15
-
23 Dec 14
-
01 Oct 14
-
18 Sep 14
-
The moral of the story is that with a contrived example, you can prove anything.
-
-
03 Jun 14
-
02 May 14
-
21 Apr 14
-
09 Mar 14
-
18 Feb 14
-
04 Nov 13
-
01 Nov 13
-
24 Oct 13
-
05 Sep 13
-
03 Sep 13
-
09 Aug 13
-
26 Jul 13
-
25 Jun 13
-
11 Apr 13
-
15 Nov 12
-
14 Nov 12
-
29 Oct 12
-
30 Sep 12
-
28 Aug 12
-
07 Aug 12
-
02 Aug 12
-
23 Jun 12
-
18 May 12
-
10 May 12
-
30 Apr 12
-
23 Apr 12
-
The most important function of a spec is to design the program
-
The spec is shown to the customer, who says "wait a minute! We don't want to switch everyone at once!"
-
When you don't have a spec, all this communication still happens, because it has to, but it happens ad hoc. The QA people fool around with the program willy-nilly, and when something looks odd, they go and interrupt the programmers yet again to ask them another stupid question about how the thing is supposed to work. B
-
In too many programming organizations, every time there's a design debate, nobody ever manages to make a decision, usually for political reasons. So the programmers only work on uncontroversial stuff. As time goes on, all the hard decisions are pushed to the end. These are the most likely projects to fail.
-
-
20 Apr 12
-
11 Mar 12
-
15 Feb 12
-
24 Jan 12
-
Functional Specification
-
-
17 Jan 12
-
Painless Functional Specifications
-
-
24 Oct 11
-
27 Sep 11
-
07 Sep 11
-
25 Aug 11
-
17 Aug 11
-
28 Jul 11
-
19 Jul 11
-
a programmer who's just spend 2 weeks writing some code is going to be quite attached to that code, no matter how wrong it is
-
Decisions in 10 minutes or less, or the next one is free
-
In too many programming organizations, every time there's a design debate, nobody ever manages to make a decision, usually for political reasons. So the programmers only work on uncontroversial stuff. As time goes on, all the hard decisions are pushed to the end. These are the most likely projects to fail
-
To write the code, you need to know the actual words in that email. At most companies, programmers aren't trusted with words that a user might actually see (and for good reason, much of the time)
-
-
31 May 11
-
18 Mar 11
-
13 Mar 11
-
10 Feb 11
-
The most important function of a spec is to design the program. Even if you are working on code all by yourself, and you write a spec solely for your own benefit, the act of writing the spec -- describing how the program works in minute detail -- will force you to actually design the program.
-
he moral of the story is that when you design your product in a human language, it only takes a few minutes to try thinking about several possibilities, revising, and improving your design.
-
-
27 Dec 10
-
19 Dec 10
-
18 Dec 10
-
29 Oct 10
-
In most organizations, the only "specs" that exist are staccato, one page text documents that a programmer banged out in Notepad after writing the code and after explaining that damn feature to the three hundredth person.
-
-
27 Oct 10
-
19 Oct 10
-
07 Sep 10
-
First of all, failing to write a spec is the single biggest unnecessary risk you take in a software project.
-
Programmers and software engineers who dive into code without writing a spec tend to think they're cool gunslingers, shooting from the hip. They're not. They are terribly unproductive. They write bad code and produce shoddy software, and they threaten their projects by taking giant risks which are completely uncalled for.
-
I believe that on any non-trivial project (more than about 1 week of coding or more than 1 programmer), if you don't have a spec, you will always spend more time and create lower quality code.
-
The most important function of a spec is to design the program. Even if you are working on code all by yourself, and you write a spec solely for your own benefit, the act of writing the spec -- describing how the program works in minute detail -- will force you to actually design the program.
-
The moral of the story is that when you design your product in a human language, it only takes a few minutes to try thinking about several possibilities, revising, and improving your design. Nobody feels bad when they delete a paragraph in a word processor. But when you design your product in a programming language, it takes weeks to do iterative designs. What's worse, a programmer who's just spend 2 weeks writing some code is going to be quite attached to that code, no matter how wrong it is.
-
So that's giant reason number one to write a spec.
-
Giant reason number two is to save time communicating. When you write a spec, you only have to communicate how the program is supposed to work once. Everybody on the team can just read the spec.
-
When you don't have a spec, all this communication still happens, because it has to, but it happens ad hoc. The QA people fool around with the program willy-nilly, and when something looks odd, they go and interrupt the programmers yet again to ask them another stupid question about how the thing is supposed to work. Besides the fact that this ruins the programmers' productivity, the programmers tend to give the answer that corresponds to what they wrote in the code, rather than the "right answer." So the QA people are really testing the program against the program rather than the program against the design, which would be, um, a little bit more useful.
-
Number three giant important reason to have a spec is that without a detailed spec, it's impossible to make a schedule. Not having a schedule is OK if it's your PhD and you plan to spend 14 years on the thing, or if you're a programmer working on the next Duke Nukem and we'll ship when we're good and ready. But for almost any kind of real business, you just have to know how long things are going to take, because developing a product costs money. You wouldn't buy a pair of jeans without knowing what the price is, so how can a responsible business decide whether to build a product without knowing how long it will take and, therefore, how much it will cost?
-
-
23 Aug 10
-
20 Aug 10
-
17 Aug 10
-
05 Aug 10
-
10 Jun 10
-
17 May 10
banzaimonkeyFirst in a four-part series about writing specs for software--what they are, why you need them, and how to do them correctly.
-
15 May 10
-
06 May 10
-
31 Mar 10
-
a programmer who's just spend 2 weeks writing some code is going to be quite attached to that code, no matter how wrong it is
-
When you write a spec, you only have to communicate how the program is supposed to work once
-
-
24 Mar 10
-
12 Mar 10
Andrey UstyuzhaninWhy won't people write specs? People claim that it's because they're saving time by skipping the spec-writing phase. They act as if spec-writing was a luxury reserved for NASA space shuttle engineers, or people who work for giant, established insurance co
-
06 Jan 10
-
05 Nov 09
-
02 Nov 09
-
28 Sep 09
-
14 Aug 09
Geekgirl 397When you write a spec, you only have to communicate how the program is supposed to work once. Everybody on the team can just read the spec. The QA people read it so that they know how the program is supposed to work and they know what to test for
delicious software development requirements specs specification design programming
-
12 Jul 09
-
09 Jul 09
-
14 Jun 09
-
10 Jun 09
-
31 May 09
Ivan TishchenkoAn example, a good one, and a guide, on how to write useful functional specifications. Useful and fun.
software programming design projectmanagement development joel-on-software spec softwaredesign PM-learning
-
28 May 09
-
01 May 09
-
09 Apr 09
-
08 Apr 09
-
31 Mar 09
-
26 Mar 09
-
24 Mar 09
-
23 Mar 09
-
19 Mar 09
-
16 Mar 09
-
14 Mar 09
-
The most important function of a spec is to design the program. Even if you are working on code all by yourself, and you write a spec solely for your own benefit, the act of writing the spec -- describing how the program works in minute detail -- will force you to actually design the program
-
when you design your product in a human language, it only takes a few minutes to try thinking about several possibilities, revising, and improving your design
-
Giant reason number two is to save time communicating. When you write a spec, you only have to communicate how the program is supposed to work once
-
the programmers tend to give the answer that corresponds to what they wrote in the code, rather than the "right answer."
-
Number three giant important reason to have a spec is that without a detailed spec, it's impossible to make a schedule
-
-
11 Mar 09
-
10 Mar 09
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.