As a consultant there are two basic paths to travel. Hourly rate work and fixed price work. Hourly rate is simple, you work for 8 hours and get paid for 8 hours. Fixed price work is a whole lot more complicated.
Newbie mistake #1 is to look at the job decide on how many hours TECHNICAL effort is required and supply a quote based on that. When you've been around the block a few times you realise the technical effort is only one part of the overall solution. Techies regularly forget the 8 hours it took to do the technical design, then the estimate based on that design. Those are 8 hours you'll never get back so they need to be loaded into the project estimate.
Then there's the multitude of hour long phone conversations with your customer as the project progresses. While your talking to your customer you won't be doing the "technical" work. More lost time. Again, this time needs to be allowed for in the overall project sum.
There's also an overhead for "managing" the project. This is why full time project managers exist. The project manager's role is to ensure the client is happy, deliverables are being tracked and managed, and the project team is happy and productive, amongst other tasks. Again, this requires time to make sure the project is in order, and much more time to put it back in order if it's not. More time to be loaded into the overall project sum.
Newbie mistake #2 is to completely ignore risk. Sometimes we're asked to do things that we've never done before. We know pretty much how to do them, but there's always some bits and pieces that leave us wonering if the project is even possible. There's no way to know for sure until you actually do the work, but if the client only wants a quote for what it will cost it doesn't make sense to do the work first! So there's a risk that the project is going to have some catastrophic speed hump that will kill all in its path. So to mitigate the risk, a lump is added to the project sum for risk. More risk, more dollars. If the client complains about the price, explain the risks to them and they'll either change the brief to remove/reduce the risk, allow you to perform that part on an hourly rate or absorb the project sum. There is always risk in all IT projects simply due to the vast array of software and hardware that has to work together and each piece can be configured in 101 ways. Work out which parts of the project are a bit scary and add some dollars just in case you have to do extra work (or rework) to meet the project brief.
Newbie mistake #3 is not having any cashflow. So you've given your client the perfect quote you know you can deliver, it's four million dollars and will take two years to complete. Awesome. When do you get paid? Four million bucks at the end when you've finished? What if your client goes out of business? What if your client doesn't like what you've done and won't pay? What if your client has an internal restructure and funding for your project is pulled? This is where you may need to negotiate a little. The client would obviously prefer to pay the bill at the end, you'd rather they pay it all up front. In practice you should have a schedule of deliverables. These deliverables mark major events in the project and have a payment amount attached to them, for example:
Project acceptance 10%
Technical design document 10%
Signoff on the UI 40%
Ecommerce linkages built 20%
Final project delivery 20%
This serves a number of purposes. First, you get paid for your work as you go - congratulations you can eat this month! Secondly, the client becomes integral to the project process (very important) and they are checking and signing off on the project progress as you go so at there end there should be few surprises. Finally if the project falls terminally ill at any point, you can walk away with compensation for the work you have completed or conversely if your client wants out they can use the work they have paid for. Ideally you will want to try to push for more payment up front and smaller payments toward the end just to cover yourself. Include enough milestones to ensure you have a steady stream of cash coming in.
Be sure to make the milestones non subjective, that way there is no question that they have been met. Don't be afraid to insist on payment before continuing, with old clients who have a good payment history this is not an issue, but new clients may like to play some payment games. You meet the miestone, issue the invoice and merrily begin on the next phase while your invoice disappears into the ether. Keep an eye on where payment is at and don't be afraid to ask why you haven't been paid yet - just because you seem to be working for a large company doesn't mean that don't have cashflow issues of their own! If you don't get paid STOP. You'll be amazed at how quickly cash will materialise!
Next time: Tracking your work. "I've got 5 customers and 11 projects all running simultaneously. Where are we up to?"