Hazard's stuff

07 Oct, 2005

Wise words

— Posted by hazard @ 2005-10-07 10:35
A "spec" is close to useless. I have _never_ seen a spec that was both big enough to be useful _and_ accurate.

And I have seen _lots_ of total crap work that was based on specs. It's _the_ single worst way to write software, because it by definition means that the software was written to match theory, not reality.

-- Linus Torvalds
(Full post)


  1. Imagine that you're developing a proprietary application-level protocol. Phone call:
    Hello? James? You remember we talked 5 mins ago about the 5th bit in the last byte of Applicationn Status packet? Yes, the one that goes after the CRC. No, before the 16th section. What if that bit is not set, should the system show the status 'not availabale' or just respond to you with the failure? I haven't got a clue either. Let's show not available and see how it goes...

    Posted by Alexey — 08 Oct 2005, 00:12

  2. Specs are necessary evil. The essence of the quote above is that spec is not a "bible", but a "guideline" when applied to software development.

    Spec should describe the end result that you should get; but it should not be used to enforce one or another way of software engineering.

    If you're developing something new, like a protocol in your example, it is unrealistic to expect a good spec at least before a prototype has been developed. Development of specs should be iterative process which is closely linked to development of the product itself.

    I added a link to entire Linus' post, check it out, its an interesting reading.

    Posted by hazard — 08 Oct 2005, 14:37

  3. Specs are a basis for _talking_about_ things. But they are _not_ a basis for implementing software.

    -- Linus Torvalds

    I always thought it's obvious :)

    Posted by lev — 10 Oct 2005, 11:35

Add comment