I should have qualified that the first phase should be to ascertain the size of the project, and that your quote depends on what the client submits to you
then. And you should be paid for that time.
(in my case it was a web deliverable so I needed to know specifics about what they desired in terms of its functionality, and they needed to give me the content that needed to go into it.)
The first phase deliverable would typically be a mock up of what the web site would do, a storyboard.
The second phase would be a working model on my own laptop, the third phase would be a completely functioning site, but to see it one would need to login to my server.
The site would be transferred to their server upon payment of the third payment.
(And the code would be well documented so that they could likely fix most things themselves if they were willing to spend a bit of time learning how to do it..)
Often clients don't know what they want and then you run into the problem of them wanting you to explain what functionality in your opinion it should have. That exchange of ideas should be semi-formal so that you can get paid for it.
The hard thing with some clients is getting money for that time early on that you are working on their problem.
Some clients will go around from one firm to another and basically suck them for ideas. With no intention of paying any of them.
To make your business profitable and to avoid endless wasting of time in expensive flaky client interactions its essential that you figure out a way to have that time be included in the first deliverable.
Don't give it away for free.
Also, once you have started working on it, have a procedure for adding new content and functionality that's fairly formal or they may keep trying to add more features to "the" deliverable after a price has been agreed upon. I've only had one client hat really abused that but she was enough to make me realize how important defining the scope very formally is.
You want a procedure in place at the outset that will make them understand that "feature creep" will cost them more money because its more work.
They need to give you all their needs upfront or accept that later stuff will be moved- that additional functionality will go into its own version two set of deliverables with appropriate payments.
You should try to avoid projects where there are lots of red flags that they don't understand that.
If they want you to be "on retainer", so to speak. At their beck and call, make sure they pay you what you're worth for that time. All of your time if that is what they want. You should consider the fact that while you are on call for them you will need to turn down other work. Just assume you will be working very long hours and wont be able to accept new work until you know its finished and bill accordingly. Bill at least twice what you would make in a salaried job. Maybe three times as much.
Because the cost of health insurance and out of pocket costs as you get older is astronomical. (Probably over a million dollars per person over your lifetime already and only going to go up.) and you need to start saving money now for it.
Or, kiss ever getting married or having children goodbye. You wont be able to afford it. The same goes for owning a home or even a car.
"Crowd out" its called.
Try to give a good estimate and if you don't know, try to overestimate not underestimate the cost.
Risky. I'd never do that. In the past I've either insisted on an initial find-the-problems phase, and then quoted for the rest of the work, or I've quoted time+materials.
Make sure your project has clear "deliverables" and that the scope of work is well defined. Try to break the work up into three phases, each with a deliverable and their payment being required before moving to the next phase. Don't get way ahead of yourself as far as work on their project goes, make sure you get paid for the first part before moving to the next.
Also explicitly state what you require from the client, and when.