One of the things I like about some of the new initiatives in development is the idea of moving from a specification document to prototyping. I don’t entirely agree with the idea of doing away with specifications altogether but I do think that a lot more is accomplished by kicking the tires and working with a prototype as early as possible. A culture of tandem coding and describing is needed and generally it doesn’t adequately exist in software development. The divergence between the prose describing what is or what what should be and the machine coded instructions that represent what is in any software project are a major source of inefficiency.

Specifications should evolve with the code but inspiration strikes and as a consequence the two sections often drift apart. Abandoning narrative norms would probably improve things but only by building a shared culture of development norms.