Jeff Atwood wrote:
I finally understand what Linus Torvalds was complaining about:
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.
Specs, if they’re well-written, can be useful. But they probably won’t be. The best functional spec you’ll ever have is the behavior of real applications.
Could not have agreed more.
I’ve seen many a Functional Specification that is just a total waste of paper. Missing the important stuff like business rules and how the client business actually works. I think that if you aren’t able to have an onsite customer, then you would be better off using techniques like use-cases and fit story tests to capture the essential business behavior.
To build the best possible software, you need to have constant communication and refinement of the software by engaging the client continuously. This I’ve found is still the best method for building software. You have a customer team writing stories about what they want to system to do and the developers implement the stories in a consultative style together with the Customer.
The other interesting social change using this method of building software is that the Customer and Development Team suddenly start to collaborate. In my experience I’ve found that in traditional software development, the Customer are trying to get the most value from the development team and the development team wants to cut as much functionality as possible. This normally causes the parties to concentrate on contract negotiation and not on building the best software for the problem. I like to use the analogy of the Rugby Scrum, rather than scrumming against each other, in other words pushing against each other, lets rather Scrum together (push together) to achieve a spectacularly better result.
Technorati Tags: fit functional-specification use-cases software
powered by performancing firefox