It's not so much that I thought you hadn't done your homework as the term "specification" is such a basic and simple one. It's the checklist your program is going to have to pass in order to be considered done. It's the list of "This has to do X" and "This has to do Y". It can be as formal as an 800-page document written by consultants making more in a day than I do in a year which has been reviewed by 3 committees or as informal as a sketch on the back of a cocktail napkin. I've worked from both.
In other words, it's how you know you can ship.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?