I have been contracting with a company for about a year and a half and am pretty unhappy how the billing/payment cycle works. The system was already in place when I started, but now that I am the sole developer I would like to rethink it, so I wanted to get some feedback how you guys would approach it.
Here is the current system:
They contact me with vague, general ideas about a new software project
I spend a few days researching technology, creating a rough estimate of the time required
They say okay to my estimate
I begin work
Every month I send them an invoice of the time I've spent working
After two or three reminders by me
(over the course of about a month)
they finally send me a checkThe standard requirement changes
apply of course
Everything is very unofficial and undocumented, sort of like handshake agreements. I don't necessarily have a problem with that, but they almost never pay on time, and yet expect me to continue to work. With this system months go by without me being paid. I don't like it.
What I had thought to do was to create a new system where I would come up with a good rough estimate of the time required for the project. If they approve this estimate they pay me half of the estimated time upfront so I can get started, then I would only receive the other half upon completion. I like this idea, and it seems fair, but the fact that estimates are rarely correct sort of messes it up, because if I underestimate by half the time it will actually takes, then what do I do?
So what do you guys recommend? Do you think the system in place now is okay? Do you have any better ideas? I enjoy the work that I do - I just wish things were a bit more structured when it comes to the billing/payment.
Thanks, Daniel
EDIT: After seeing some answers it seems clear I need a real contract for my work. Who can help me write a good contract? I don't have much experience in this arena. Would any lawyer do? I don't really care to do it myself.