Under promise, over deliver. (slightly)
Become an authority on your subject matter. Write blog posts, post often on twitter, write to journals/newspapers - set yourself up as someone who knows what they are doing.
Charge for spec work.
Don't be afraid to turn down work that may challenge you more than you can handle. You are taking an unnecessary risk. In those circumstance you can offer to help the client find the right consultant/solution provider.
ALWAYS get a deposit before work begins. And then insist on regular payments for longer projects - if payments stop, you stop work.
Don't do fixed fee work, unless you REALLY, REALLY trust the client.
Good relationships are vital. If a client likes you they will market you through word of mouth and that's the best kind of advertising.
Have a plan in place to deal with non-payments or difficult clients. Be consistent and don't let bad clients take advantage of you. Offer no credit terms longer than 28 days. Offer a 5% discount for quick payment.
If you are providing software before full payment is received, don't be afraid to use a licensing mechanism to shut it down if payment fails to materialise. A friend lost €20k in a similar situation.
Also, bear in mind you will work long hours. That's why I couldn't keep doing it. I was making decent money, but the hours, and travel, were killing me.
You should learn how to "sell". That means a bunch of different things depending on how you decide to sell and is a basic business decision you should make early on. Make the decision such that your team can do the sales work. Hire sales when you have your process proven and nailed down.
37signals really got hiring right: you should (generally) hire a role after you've figured out how to do it yourself and doing it over and over again is becoming a material drag on the company.
If you feel like you need a deposit to start a project, don't do the project. In 14 years of consulting, including software development projects, I've never taken a prepayment. I can't remember a real problem I've had. I can, however, think of a lot of clients I've said "no" to because they didn't seem to have their shit together.
Their real worry is that you'll suck and delay things, by making clear that you understand that such things happen and will help as you can if it does you improve trust. And you should really be doing that anyway ethically. And realize that sometimes you're just not the right person for the job and to help them find the right person if you want to build a strong network.
Otherwise, agreed on all points
Not exactly sure how this is possible. Any mature business will split up a project into milestones. Whether payment is due at the beginning of a milestone or at the end, makes little difference to the business overall.
I prefer to charge new clients at the beginning of each milestone, starting work after they pay. Existing clients I'm happy to charge after the work is completed, because there's a working relationship there already.
Before I started doing this, I had payment issues several times a year. Since I started doing this, I haven't had a single payment concern and have never had to even think about it.
Then paying 30% at three intervals during the project
I fully understand that people starting out in consulting work don't want to do this, or can't. That's OK. But I don't think it's a good idea to build this constraint into your practice as a principle; it will keep you from growing your business.
The way Jeremy and I started Matasano --- it's probably more accurate to say the way Jeremy started it, since he's ultimately the person who founded Matasano, back when it had its original name, for his cat --- was to do "serious" consulting projects on the side while working a full-time job. I don't think he was taking prepayment for those projects, and if he was, I sure didn't see any of that money. So that's one way to maybe start consulting without depending existentially on up-front payment.
I also understand that there is a class of client --- one I think people new to consulting believe is much easier to acquire --- that can't reasonably be trusted without prepayment. I agree that's a thing, too. If you need these clients to boot up, that's fine, and I'm not dragging people for taking them. But here's a constraint you should build into your practice: your mid-term goal should be to say no to these clients, full stop, not trying to find a way to fit them into your pipeline.
Also: I can only tell you what's worked out for me and the weird group of people I know. I feel pretty confident about this stuff as business advice but I could obviously be wrong. I'm not going to waste everyone's time tediously disclaiming that though (this one tedious disclaimer excepted).
The only thing I would add is: Never reduce your hourly rate for any client.
For repeat clients they will expect that rate again. Many of your clients may know each other. They talk to each other and soon many of them will be asking why you can't give them a discount. You can offer discounts in exchange for an action (like quick payment mentioned above).
Never devalue your time.
I generally agree with this, but there are some exceptions:
1. For large, repeat clients that have demonstrated loyalty, it's okay to offer a modest discount, no more than 10%. You still cite your rack rate on the invoice, but at the end add a "Loyalty Discount" so they know they are getting this discount for a reason.
2. While you should not reduce your rate, it can be okay to write off your time. If it takes you 20 hours to do something, but you're afraid the client will balk at the bill and run away, rather than lowering your rate, invoice them for 10 hours, or whatever seems reasonable.
3. When you're just starting out, and have limited understanding of the value of your skills compared to the competition, you may not know what your rate should be. In these cases, you may want to consider flat rate arrangements.
Strongly disagree. This is a failure of communication. If you're billing by the hour, your client should have a general idea of how long something will take. A lower bound and an upper bound. Time-box all tasks.
As soon as you know you're going to break through the upper bound, stop work, inform the client, provide a new estimate, and let them make the call.
Eating the difference defeats the purpose of working hourly.
> you may not know what your rate should be. In these cases, you may want to consider flat rate arrangements.
Disagree with this as well. If you don't know what your rate should be, how can you name a flat rate? You should know what your competition is asking for and ask for slightly more, because you're better.
In a world with perfect information, you'd be right. Unfortunately, people have to make decisions with incomplete and potentially misleading information all the time. Demanding perfect time-boxing ahead of time is a recipe for disaster.
Dear client, this task will take 2 to 6 hours. If I find out it will take longer than this, I will reach out.
Dear client, I am 1.5 hours into this task. Based on my experience, it look like it will take 7 to 10 hours instead. Should I continue?
For all of this to work well, you need to have experience in estimating well and also understand that whatever number pops into your head, multiply it by 2 and tell the client that. I have never had a client be pissed at me because I finished something for less time/money than they were expecting.
That said, this sort of thing should really be used for highly indeterminate tasks, like fixing bugs.
There's something to keep in mind about the nature of time. It's possible to make a billion dollars in a day, but it's not possible to spend more than 24 hours in a day.
I've also found the clients who insist on fixed-fee contracts to be very demanding and petty. They tended to interpret the specs liberally. It's not worth the hassle. Trust me.
When I'm the client, I feel fixed-fee gives the contractor an easy backstop/fallback position - they figure they can half-ass the job and use the additional time to scout for more work.
When I'm the contractor, it's the same, but in reverse - fixed-fee makes clients feel like they can demand the moon beyond spec at no additional cost.
Hourly/daily rates make sure that BOTH parties have something at risk, which tends to be keep everybody in line. The contractor's at risk of the client firing them. The client's money is at risk if they keep demanding endless revisions.
Actually a good lesson for business in general.
I really, really don't like working hourly - I'm not selling my time after all, but my services.
the benefit is that my coder who wrote the tech spec should be very comfortable with what is needed and i get to sell a lower risk $$ to my managers.