in reply to
Starting a Large Project
For me, the most important step in any large project is putting together a good 'specifications' or 'requirements' document. If you can do this in enough detail, and have the client sign off on it, you can save yourself a lot of work.
The specifications will still almost certainly change, but at least you and the client can have some measure of agreement that the requirements have changed, and it gives you some ammunition when changes in scope make a project take longer or cost more.
Also, if you document every aspect of the design, including data structures, input/output, response time, etc., then writing the program is much easier, since all you're doing is translating the description into your language of choice (Perl, of course). Otherwise, you can end up writing a lot of code that doesn't do what the client thought it was going to do.
Update: I forgot to mention that if you're ever coding and you find yourself trying to decide which way the client would like the program to work, your requirements document is not detailed enough, and you should probably stop coding immediately and go finish it. :-)