Writing functional and technical specifications – even for simple programs – is a vital skill, forcing programmers to think through what it is they want to do before they start doing it. They’re also invaluable for the generation (or two) of programmers who may need to modify or update your code after you’ve moved on. Trying to make even simple changes to a program without introducing new bugs requires a detailed understanding of what the program or function is supposed to do and how it was written. Without proper documentation, that job becomes much, much harder, Lamport says.
via Brogrammer Killed The Requirements Engineering Star.
Interesting read as well as the two featured comments.