Ask HN: What mistakes did you make when starting as a consultant/freelancer?
“Ask HN: What mistakes did you make starting as a consultant? Over 250 practitioners share billing and client boundaries.”
What was the specific mistake, what did you learn from it, and how did you change the way you do business as a result?
For example, I was told by someone who started a project without taking an advance, only for the client to decide not to pay. So he now refuses to take on a project without at least 30% advance.
What lessons did you learn the hard way?
I'm setting up my own consulting practice: kartick.org and would like to learn from other people's mistakes rather than repeating them myself.
An open Ask HN community consultation from 2019 where @_qjt0 convened hundreds of developers and bootstrappers to share real experiences, hard numbers, and tactics.
Hundreds of active indie hackers contributed case studies, pricing heuristics, and pitfalls to avoid when moonlighting on side projects.
I am a management consultant, so field of work might be different from yours, but general rules are probably the same. Also, I am not a freelancer, though i have worked often with them. My two pence:
- Always have a Scope of Work (SOW) agreed BEFORE you start working: Clients are often bad at explaining what they want in detail, and consultants are equally bad at being realistic at what they can offer in the amount of time available.
- Always (ideally) have a contract signed before you do any substantial work. The contract and the SoW are your main protection against scope creep. And usually it is the consultant who drafts them first, not the client, so it is your best chance of driving the project details.
- Rates vary with client, length of the contract, stage of client relationship (lower rates for first project), but ...
- Rates tend to be sticky. If you work for Xusd/h for the first project, many clients will expect that rate to stay for the next one too. So your first negotiation is the more difficult and the more important at the same time.
- Rather than offer a low rate, state your full rate and the discount you apply and why (e.g. first project, long project, maybe the client is putting some resources and tools on the project...)
- Preferably charge by hour, day or week. The proposal or contract should have an estimate of total price, based on estimate of duration, but it should clearly state that it is an estimate and you will change based on time units.
- However, it is very likely that yours is not the only offer they receive, so they will compare them on the same basis, based on a fixed amount of hours per day, and the duration of the project. A consulting firm staffing a team has more leeway with the composition of the team (junior consultant to Partner), and comparisons among firms are slightly more difficult (usually done on the basis of blended rate). The quotes of freelancers are very easy to convert and compare.
- Expenses are always on top (travel, hotels; meals are a question mark)
- Try to find out hourly or day rates of consulting firm (in you field of activity) in your country: they are likely a lot higher than what you think of charging, partly because they have higher costs, but also because they factor in a % of idle time of their resources during the year. You should do the same. Your rate will probably still be lower then theirs as there is a real value in being part of a firm with established methodologies, expertise, examples... (this may be less applicable in other fields of consulting )
- Think about why they need a consultant: is it because their resources are too busy or because they do not know how to resolve the problem they have? The latter gives you more leverage on the rate.
- Remember that every client is different: some impose work based on a fixed total price, some do not want to reimburse expenses (and may be fine with a % markup on the rate). Often it is due to internal procurement rules and guidelines, which will be difficult to change.
- Bill often throughout a project (frequency depends on project duration: weekly for short assignments, monthly for longer).
- A good practice is to send a fee tracker weekly to the client, showing hours worked and incurred fee. This avoids surprises. It is best if you have some deliverables or progress report to show as well.
- If you feel that the project is taking longer than expected, be open about it and explain why (it may be because some input from the client was delayed, and they usually do not object to additional compensation, or at least they will push to accelerate on their side; it may be because things are more difficult than expected: this may become a difficult conversation, so be prepared to explain why it is so, what can be done, etcetera).
- Your project is also the best occasion to get another project with the same client (as a follow-on activity or maybe because while working on it you get to know they have other problems that you can help with. It is BY FAR the best form of business development.
- Not forming an LLC: first gig was done as myself, in hindsight i could have been sued and had a judgement or bankruptcy hang over my personal head for 10 years (no assets back then, but you could lose your home if you own one. don't do it). Get an LLC, get a registered agent, get a PO box, get a bank account and a bank ledger. Money you want to spend from the business goes into the bank account as a deposit and comes out as a business check or business credit/debit purchase. If you spend on a personal CC, reimburse yourself from the business bank account. Don't pierce that veil.
- Closing the deal / Asking for the sale: Gave away waaaay too much work for free thinking it's advancing us to the point of the sale. Don't give away your work for free, not only does that lower your value in their eyes (people care when they pay for things) but you are ultimately,
- Undercharging: left money on the table like a fool not billing for "small things"
- Using my own ERP: no one uses whatever system you found on github, they use quickbooks. get that, export to whatever format your erp understands
- Paying taxes quarterly like a fool
- Forgetting I am a contractor: got a migraine? no meetings or deliverables? found a hot lead? DON'T GO TO THE CLIENT SITE
- Self-hosting the wrong tools trying to save a buck: Opensource gitlab is nice. Opensource gitlab is not nice when you need to troubleshoot why Postgres is spewing vacuum errors.
- Going SaaS with the wrong tools and hemorrhaging money between clients: Paying for heroku to host an app I can run in docker locally, paying for dropbox when google or onedrive is free, paying yearly on something only used twice a year.
- Not billing 2/10NET30 and not charging late fees: Get your money faster if you offer them a 2% discount if paid in 10 days instead of 30. If they pay after 30, they will be fees that will continue to be added until they are considered deliquent and then collections. I've also offered 5% on higher $ contracts
- Not having a contract or blindly accepting the clients contract: My business insurance discounts me if I execute using my contract. Without a contract spelling out requirements change procedures, it becomes a back and forth negotiation game in the middle of project crunch time. Don't do it, have an outlined process agreed to at the start of th engagement and use a bugtracker.
- Enforcing the contract consistently: If you require something in writing, make sure there is a paper trail. If you end up in court it makes your lawyers job that much easier and that much lighter on your pocket book. I just watched $200k fly out the window because writings were saved on the client controlled G Suite and there were a lot of verbal face-to-face handshake agreements. Always in writing, summarized from your regular business email address.
- Not growing: I'm in profit from this client. I should have another client lined up or two or three executing at the same time. I should hire someone to help me with that fourth client or to find the fifth client.
- Thinking you can land a USG contract: don't waste your time. Unless you want to suffer through the GSA, try to partner through an established firm instead. YMMV, but i'm done with the US public sector.
Few things:
- Get your accounting in order. Pay a professional to do it; don't try to do it yourself.
- Take care of yourself. You'll probably be flying a lot; don't take the cheapest routes, tell the client it's business at >4 hours in the air, etc.
- I unfortunately get brought into a lot of situations where a CEO / VP is looking for justification in firing someone or making a big structural change. In these cases, it's important to keep in mind that you're working for the person who is paying your fee and to not get hung up on trying to fix the situation. It sucks.
- Charge a lot. Think up the largest number you believe would be reasonable for your services and multiply that by 1.5x. Consultants are supposed to be expensive.
- You'll be amazed by how many people reach out and want to take phone calls to go on fishing expeditions / mine you for free value. The way I deal with this is: A) I ask very pointed questions about what, exactly, they're looking for in an engagement via email before I take a call. If they don't have a compelling need, I decline ("I don't think this is a good fit for me." -> be blunt) and B) I have developed a 6th sense for whether a company can afford me / the project sounds viable. If you have enough inbound, don't be afraid of false positives in turning down phone calls.
- Don't bill hourly. I charge per project on the basis of value; if a potential client fights you on this, reject them.
- Try to get work on a retainer basis. You're being paid to not only do work but to be available -- you're a service provider. This is nice because the revenue "stacks" up and you also get more integrated into the team this way as it frames you as a source of insight / wisdom. If you're using consulting as an entry point into a new role, this is very effective.
- Build something proprietary: an Excel model, some tech, an audit framework, a taxonomy, whatever. Brand it. That's now "your thing" and you can set a market price for it that is divorced from incremental work.
- Build out a proprietary funnel for business: a blog, Twitter presence, whatever. If you have to go find business on your own / do sales, you can't charge as much as when people come to you.
- In general, I think it's good to be skeptical and to err on the side of telling people "no." There are a ton of lightweights / window shoppers / sleazy people out there; get good at detecting them and rejecting them quickly.
- NOTHING IS FREE. You don't pitch, you don't do exploratory onsites, you don't give samples, you don't take "no-agenda meetings," you don't let people "pick your brain." You are a consultant and if people want your insight, they need to pay you for it. Internalize this phrase: F* YOU, PAY ME.
Everyone here covered 99% of the things I would say so I'm going to add a few important ones that people missed.
- Estimation. Devs are notoriously bad at it... so don't think of it as an estimation of the amount of time something will take, think of it as a negotiation with the goal of getting them to agree to the most amount of time something could take. If your estimation doesn't seem ridiculous to you then you did a bad job of negotiating.
- Asshole tax. If you get a client that you think is going to be an asshole tax them for that privilege. +20% at least (make sure you're charging more to begin with as previously mentioned). Now this may seem wrong but if they turn out to be not an asshole (which happens a lot), but to make this right with the universe just do more work and don't bill for it. The idea here is that you still end up being mentally happy to do the work even if working with them is painful.
- Use options to negotiate better. There is a bunch of advice saying "don't charge by project"... hogwash. If you can make more money by leveraging a customer's desire to know ahead of time what something will cost you can make money on that. You can clearly define ahead of time exactly what the project entails, charge a 2X or 3X what it would cost in hourly, and then charge for scope changes (which we all know there will be a ton of). Similarly, when you present a proposal, give at least 3 options: "cheap-ass", "normal", and "deluxe"... you will be surprised how many people will spend extra money because they can (you can do this even if the project is billed hourly). Furthermore... people that head into "cheap-ass" land give you valuable information on how to deal with them - most of the time this means you do the same thing but need to itemize your work more heavily (more on this).
- Itemization. Better Negotiation and billing higher amounts are improved by itemization. they say the person that comes to the negotiation table with the most bullet points to negotiate over will win the negotiation. Billing is just a different negotiation.
- Getting content is a nightmare for web clients. Charge for that... but as mentioned elsewhere make the charge in the form of a discount elsewhere. If the content is delivered by XX-XX-XXXX the project is discounted $XXX. THIS INCLUDES BASE ECOMMERCE PRODUCTS.
- Don't try to hire people to do part of your work until you are REALLY efficient at it.
- Exercising is part of your job if you are 100% on your own. Seriously.
- If a tool will save you time buy it immediately. Avoid free tools - you will pay for them later and it will cost you more.
From a business perspective - regardless of the content of consulting/freelancing:
People respond to incentives and everything that matters to you and to the client is up for discussion.
I do a mix of project work, training, and team/design coaching. I have a graduated rate schedule. If we're doing a long-term project, I'll typically price work out at the week level and bill at what comes out to be a lower effective hourly rate. This is fine, because these things are planned in advance and I can schedule around them. For customers that want to be able to get an hour or two of time nearly on-demand, I bill a much higher effective hourly rate and bill at 15 minute intervals.
I value my time, and I value being able to plan for things. I incentivize clients to do this by charging them more for things that are relatively inconvenient.
I like being paid on net30 terms - this is how I plan my cash flow. If a client has a blanket rule for net60 or something else, I'll discuss with them my preference, and will typically offer early payment discounts, something like a 2.5/30 net60. Again, incentivizing my preference. I'd rather have a predictable cash flow.
Regarding the second item - it's always worth discussing something. I've never had a customer issue with schedule or scope when we've talked through what's happening. Your work matters to your customer. Keep them apprised of what's happening.
I will typically have active work with 3-5 clients at a time. I have a mix of remote clients and those that prefer on-site presence. For much of the last month and a half, I worked out of one client's office, but had daily standing commitment from 12-5 for another remote client. The on-site client was fine with this, because we discussed the schedule. They prioritized the on-site presence and immediate availability.
I typically won't work full time for a single client. I consider full-time to be 40hr/wk for more than two consecutive weeks. This doesn't mean I have no long term clients, just that we work out schedules that work for both of us. This is because I value my schedule flexibility and don't want to be beholden to a single client. My clients get this.