Documentation first
joeyh.name
joeyh.name
Requirements doc -> Functional Spec doc -> Technical Spec doc -> User Docs.
Or,
What you need -> How you'd like to do it -> How you will do it -> How it works
You're doing it just right.
Of course, to keep up with the times, you have to toss together any sort of code and then write some half-assed docs that may or may not represent how the app works (The Agile method: Wonder at the agility of developers dodging any sort of spec-writing).