Hacker News new | ask | show | jobs
by ChristopherM 1019 days ago
I charge by the hour and will never change. It forces the customer to focus on getting the requirements right instead of hand waving it like "oh yeah, that's just what I want" and then come back later "I didn't want that, what I meant was" repeat ad infinitum. You see they are paying for my time, not results. If they choose to waste it... doesn't matter to me, it's all billable just the same. I will do my best to steer them in the right direction to save time and money, but you'd be amazed how often they need to learn the lesson the hard way.

I also don't compete, I'm not on any "freelancing" websites, I don't apply or bid for work. My clients always come to me, I get an email, a phone call asking if I'm available. So this race to the bottom nonsense is utter crap. I'm a consultant NOT a freelancer.

I've been doing this since 2011, that's the last time I had an employer. This year I'm on track to bill out between $360k and $400k. If that's "amateur" so bet it. Considering I have no debt, my house is paid for, my luxury SUV I paid cash for, my actual monthly bills are around $2,500 a month. I really couldn't care less what someone who writes an article like this thinks of me. The writer is advocating for the client, they aren't giving me advice that helps me. I also have no interest in scaling, on bringing on employees. I'm making bank, I left CA in 2013, currently live in Wyoming with a 40 minute drive to Park City UT and a 60 minute drive to Salt Lake City.

To anyone reading this article and thinking they are offering you helpful advice, consider their motive. What are they trying to sell you? Are they trying to change the current consulting landscape to benefit themselves as a business owner?

13 comments

More power to you, but I stopped charging by the hour a long time ago. I charge minimum by the day, and offer a discount if you buy a week. I still bill for my time, but I avoid haggling over how many hours something took, and it also saves me the trouble of tracking my hours.

You book me for a day, you get me for the whole (at least) eight hour day, however you want to spend that time. You book me for the week, you get me for at least eight hours each day for a week.

I also do by the project billing, where I estimate how much work something will be, and pay on milestones. That requires a lot of up front work defining the deliverables in a way that avoids scope creep, but I also build in an overhead for scope creep so that I can "comp" them some deliverables that weren't covered, and everyone is happy.

But the most important part is that the price is always agreed upon up front.

The biggest issue with hourly billing is that neither of us knows how much the contract is worth until afterwards.

Well that's still billing by the hour, it's just a bigger unit of measurement.
How do you deal with clients that perceive and expect to have you available and working more than eight hours a day? What do you do about when your not immediately answering during lunch etc. What do you do about days where you detect l weren't fully engaged by the client for a full eight hours?
Don't set that expectation. Don't work with clients that expect you to track hours when you bill days. The threshold for productivity and exclusivity I've had has been "if I billed you for a day, I'm not going to bill work for anybody else in that day"; that's as far as I go. In 15 years of doing this kind of work ('05-'20) I never had a problem --- but we did bail on RFPs where clients made it clear they'd be looking over our shoulders to make sure we were busy. That happened only a couple times, and, in retrospect, based on conversations with the people who ultimately won those bids, we were always glad to have had the early warning on those clients.
I've never had to fix bid for work, always had hourly gigs in the wings. I hold the philosophy that sw dev is a product development, iterative exercise, not a construction metaphor that is predictable.

Yeah, I expect you would be able to do the same if you billed hourly. If a client insisted I bill daily, I'd probably have no issue with it either. It's just so rare to bill daily in my circles that I've never considered it, I'm often rebilled by my client to their end customers for specific features so they need hourly tallies to pass on.

When you bill hourly you are literally demanding that your clients account for your time on an hour-by-hour basis. So, no, it's not the same.

If you're subcontracting in order to make ends meet, then you don't have any control over your project structure; you're a subcontractor. My advice is to plot a course to not subcontracting anymore as soon as you can. I doubt that the driver developer who kicked this thread off is subcontracting.

I've been in full control of the architecture, team makeup, feature design, most of the technology choice, and often the feature priority. I put my foot down on clients that dictate how a feature is to be built and give them the 'why' talk. I've had enough control over all the projects I've ever worked on these last fifteen years I've worked hourly.

I get your ideas about subcontracting, but I've always been treated higher than an employee and typically like a partner. The trick to this is to charge a ridiculously high rate. That instantly establishes the dynamic and relationship I want.

Not really, if you are a consultant or external business you account for your own hours - you set a budget and then hand in a timesheet either weekly or monthly, then send an invoice at the end of each month.
> How do you deal with clients that perceive and expect to have you available and working more than eight hours a day?

The contracts specifies which days I will be there/available, and the times (usually 9am to 4:30pm in their time zone). Sometimes if the work is interesting I'll give them extra hours on me.

> What do you do about when your not immediately answering during lunch etc.

I work through lunch. I always answer. I take care of my personal needs before and after the contract time. I build in 30 extra minutes to account for bathroom breaks and heating up food to eat.

> What do you do about days where you detect l weren't fully engaged by the client for a full eight hours?

That's a them problem. If they don't have enough work to fill my time, then that's on them. If they have enough work, then I do it. It's just my work ethic.

"The biggest issue with hourly billing is that neither of us knows how much the contract is worth until afterwards." You still don't with daily billing.
I know with daily billing because they can only book me for a set of days in advance. It's not ongoing. We agree ahead of time on the specific days I will be there/available.
I would guess we do different types of work. Most of my engagements are at least a year long. I've been billing at my current company for four years this December.
Here's the challenge I ran into, so I'm curious how you handle it...

If you bill by the hour, first they fight you over the hourly rate. Then they want to argue over how many hours it will take to do the work. Then they want to argue over you billing them for all the project management and planning hours you are spending with them, they only want you to bill them for "the work." Then when they get the bill they want to argue over the hours you bill them.

And before anyone says "find better clients" I found this in everything from Fortune 500 to mom and pop. And Fortune 500 is net-180 regardless of what's in the contract.

I was spending so much time in this kind of BS that I went to a monthly retainer model. You get access to me, but you are doing so in a way that we can both set aside haggling over hours. For the smart clients it was a great deal and it saved me a whole lot of accounting overhead.

Have you considered a monthly retainer with an hour cap?

This prevents you from being treated like a salaried employee, maintains your work life balance, and ensures the client is still providing solid requirements and thinking through their ideas.

We have found a lot of great success with this model, and our clients respect it. It ensure we can have multiple clients, without one taking up all of our time, and taking it from others.

If we spend under X hours, that's fine. But there's simply a cap. It essentially means that each client gives enough work for us to work for those total number of hours, and we still have MRR regardless. We can help our clients maximize usable time, and it makes our project management valuable to the client as well.

To combat long Net Terms, you can kickoff a client with a project, which begins upon receipt of payment, and is continued with the retainer. This initial project should be able to support you until your retainer payments start (180 days in length) but your retainer should start ASAP.

It also allows the client to see your value, and you get to feel the client out.

At this point in life, I've moved on to a new field altogether, but some of the ideas you are sharing above are exactly the types of models I experimented with.
What did you learn from these experiments?
A number of years ago, the term "F*ck you, pay me" was going around in popular vernacular. That jives with my own experiences - ask for deposits up front, make payment net-15, tack on a giant fee in the event of slow / failure to pay, and make sure your contracts are written so that the client pays legal bills in the event you have to sue. Create contract disincentives to encourage good behavior. Keep your rates high and don't give anyone a deal. Be willing to say no both to prospective clients as well as individual projects - even with good clients.
I've been a contractor for 14 years now and have faced little of what you describe, but I've also attempted to insulate myself from it as much as possible. You learn pretty quickly which clients not to take, and haggling over rate is the first red flag. My rate is my rate, it's not negotiable.

Other red flags are "we have a project starting in a week" type offers. Mom & Pop's are right out as they are the worst companies to deal with. Startups tend to be great since they have tons of money to throw around and don't care how it's spent as long as work gets done. And if it's not at least couple months worth of work it's not worth my time.

Once you have a network many of these issues go away. If someone is coming to you because they know you or you know someone on the team, they are much less likely to dick you around. It's also easier if you promote yourself as a consultant as much as a contractor because then all the "planning" hours are part of your offering (and I never use the term "freelancer" cuz I don't work for free).

The most powerful thing you can tell a client is "no". There will always be other clients, there's no reason to sell yourself short.

In fifteen years of contracting, 20+ clients , I've never had issues or questions about my hours. All software project based work on projects that span months to at most two years.

Up front, the hourly rate is agreed to, the expectation that I typically bill forty hours a week is set, we agree that overtime is only undertaken with written permission. I tell them I don't bill for lunch or breaks and that if they can't provide me with work to do, I still bill but that I inform them persistently when undertasked.

I only estimate work by giving complexity numbers. They all ask well how long does that take??? I say over the last x months, my average complexity points accepted in production is y points per two week period. So expect this five pointer to be done in a week plus or minus two days.

Do you need a better estimate? Then it will cost you two unproductive days for me to fully spec out the work and I'll need three hours of your time for this feature to give you an estimate that has a tighter variance.

This is the way it's done folks. I know what I make, I can easily have a life, wife, family. Companies make sure they have me work on most important things first and they end my project when they feel it does enough of what they need it to do.

I'm visible, I show real progress frequently and they get value out of released features early on and continuously throughout the engagement.

Sometimes I lower my rate for equity, people I enjoy working with, working on tech or a business domain that interests me. I'll of course raise it for the opposite.

In the fifteen years I've had three weeks in 2008 where I couldn't find work. I've billed between 95-155/hr CAD. Mostly enterprise custom applications. Billing systems, engineering process systems, banking apps, trading apps. Typically lead dev roles. Working in a Canadian city or remotely for USA companies. C#, ruby, scala, python. Not a great programmer, I'd get laughed out of the room on a leet code exercise but I've repeatedly delivered projects and systems where the previous teams have failed. There's only been a few of the 20+ projects that haven't been rescues.

I have a similar arrangement but I look at it much differently than you.

The retainer allows a client the freedom to contact me over what they think is nothing, because it is nothing, but 9/10 times that nothing will lead me to discover some issue that did need my attention, and I can give it that attention when it's still a nothing and not a barn-on-fire problem in their business. It also means I can log a trivial amount of hours doing the monthly maintenance that most clients gripe and piss and moan about you charging for: they already paid me. If a retainer hasn't been used up by the end of the month (and it usually hasn't) that's when I go do housekeeping for them.

Client gets a consistent-ish expense in their books, I get paid, everyone's happy.

> If you bill by the hour, first they fight you over the hourly rate. Then they want to argue over how many hours it will take to do the work. Then they want to argue over you billing them for all the project management and planning hours you are spending with them, they only want you to bill them for "the work." Then when they get the bill they want to argue over the hours you bill them.

I mean this is just the game, dude. I personally just do not have these arguments, I'm not open to these discussions. This is the price of my time, this is how much time it took, this is the bill. If people don't pay then I don't perform services and anything I have access to goes down until I will, but I've only had to do that once so far, and they got the point very quickly.

If you don't want to do this then yeah freelancing/contracting isn't going to be your bag. I don't judge you for it but like, that's just how it goes when you're in business for yourself.

Also worth noting: I absolutely charge for time spent haggling. Any time I'm doing thinking work for you, that's time I will be compensated for. I outline this very clearly from the off, and if people drag it out over hours, then they pay for those hours. Simple as. I'll never inflate my hours or make something take longer than it does, but also, I demand compensation for what's spent on their whatever.

"Amateur" isn't the word I would have used, and I think the author sabotaged his point by using it. What I would say is, you're leaving a lot of money on the table and donating a lot of cortisol to entities that don't need the money or the cortisol donations, because they're not spending their own money, and the high order bit of their success criteria is "I was able to plug money into this interface and make a business thing happen within the planned time period, without adding any headcount".

The other place I disagree strongly with the author is about the utility of flat-rate projects. I've had good luck with flat rate, but it was never the project structure we'd have used by default. Rather: for any project we did, we'd have quoted a full project, broken out into billable weeks, with a final sticker price and a paragraph below the pricing table with "additional work needed will be billed at our pro rata day rate".

I think the attitude that says "all the risk should be borne by the client, not the struggling independent consultant" is bad business (for high-end tech consulting, you should start seeing your practice as being in part in the risk mitigation business!), but that doesn't mean you need to take on extra risk just for the hell of it.

That said, there are clients who are so valuable, because they're going to be repeat-business house accounts or because their reputation is so strong that they'll bring in word of mouth business automatically, that you should definitely consider just doing flat rate projects for (if that's what they want) and just eat the overages.

> It forces the customer to focus on getting the requirements right

This is an issue that the article does not address, and it should. Part of the business risk that the article is talking about is the risk of ill-specified requirements from the client. But that means that any flat-rate pricing has to price in the extra time and effort required to make sure the requirements are well specified (and that's true even if a fair amount of that time and effort happens before a contract is signed--you still need to recoup those costs somehow). Either that or you simply have to not take on clients who can't specify their requirements well enough up front.

> consider their motive

I agree, this is always a good thing to do.

> This year I'm on track to bill out between $360k and $400k

> To anyone reading this [post] and thinking they are offering you helpful advice, consider their motive

Honestly I'd be happy to sign up to your newsletter and be upsold into a private $20/mo high-end consulting community forum if I were to learn how to earn those kind of numbers and I was disappointed you didn't.

Consider a company that needs a programming job done. It’s maybe a one-off, perhaps a 3 month to 3 year project. The company is not in tech and has no programmers.

Now, in this scenario they could hire a programmer at say, 100-200k, for the sake of argument. But this person might want to stay on for years, want benefits, and would need a manager. The company has no management experience in programming, so they know they’ll either do a shoddy job managing or have to hire a manager. This thing is already spiralling!

So now a consultant comes along. This person is an expert and has a track record. They are self-starting and self-managing. They can be brought on to get the job done and then they go away.

You can see that hiring such a consultant is not only far easier, faster, and likely to result in high quality, but very likely cheaper.

Which makes it crazy to me that anybody thinks about delivering work metered in hours, as if they were a furniture mover. A contract developer is selling a (quite valuable) enterprise product. You don't need an MBA to know not to do cost-based pricing.
I started "programming" in 1982 on a VIC-20, I taught myself C++ in 1991 and programmed as a hobby until I switched majors in University. Then I moved from Job to Job once I stopped learning/progressing. Along the way I made many contacts at a diverse group of companies.

I started at a medical device company reverse engineering MRI/CAT scan data for a 3D device used in brain surgery. Then I worked for a company that specialized in Bug Tracking and Project Management. Then a company that engineered optical archival storage discs with a 100 year life span. Then I managed a team developing a video keno/poker gaming machine that was available to the Nevada/Montana market. Then I managed a team in reverse engineering cell phones for forensic analysis. Then a medical company that made a continuous glucose monitoring system for critical care environments. After 1 year working on their firmware, I was brought back as a consultant to rescue the Software department as a Director of Software Engineering over product and manufacturing.

Through all these jobs I was well liked and since then have been contacted by people I used to work with for consulting work. And now I'm getting consulting work from other consulting job referrals.

I currently charge $180 an hour plus expenses, but come January 1st will be raising it to $200 an hour because of the inflation and the fact it's not stopping. In terms of stating new increased prices; through the years I've informed clients to have them tell me it's too much. Then 30 days, 9 months come back and just sign a new contract at the new rate. You have to be willing to walk away, you have to have money in the bank so you don't "need" their work, but would be happy to if they pay your going rate. Just be professional, explain that you could be making more doing work for another client and it's "just business".

I specialize in device drivers Windows and Linux, firmware, embedded RTOS and even desktop applications, mostly Windows but also can do some Qt on linux. My favorite language is C++ but frequently use C as firmware and linux device drivers are written in C. I also have quite a bit of experience managing, hiring, extracting and documenting software reguirments, architecting and implementing as necessary.

As for getting new clients, I tend to pick up a client for 3-6 months of work and still do work for them 6+ years later. In the beginning they get most of my time, later I end up sitting in on weekly meetings, reviewing their code/design, mentoring their junior level software engineers, and helping them to hire more as needed. I end up standing in as their CTO/director/senior manager as they usually don't have the funds to hire a full time one.

Given what you're working on and how close it comes to intersecting with the consulting work I've done ('05-'20) and the likely client overlap, and given the top-line dollars you said upthread you're bringing in, I'm going to go out on a limb here, way, way out, and say: you could double that effective bill rate, denominate it in days or weeks, and significantly increase the amount of money you make while working significantly fewer days every year.

I might be wrong about this, of course! But I'm not being casual about saying it.

You've had some really interesting engagements, and it makes sense to see where you are specializing at those rates.

I'm about 10yrs behind you, taught myself everything. I've been consulting for 15 years but I just don't understand how one would find these clients. I'm not sure if I'm the issue, or where I live (South Africa), or the niche I've ended up in (financial markets regulations) - hence the desire for the newsletter!

> Honestly I'd be happy to sign up to your newsletter and be upsold into a private $20/mo high-end consulting community forum if I were to learn how to earn those kind of numbers

Based on communities I am aware of that basically do this…:

1. $20 a month might get you a community that is working to get to $100k. The biggest hurdle will be simply taking action, with the second hurdle of having that action be reasonable.

2. A $50-$100 a month community might get you into the solid $100k-$500k range. I think this is your target. Biggest hurdles will be structuring work and addressing low self-esteem issues (e.g., imposter syndrome). Lesser issues will be finding reliable sub-contractors and/or communities thereof.

3. $500-$700 a month gets you into a community of folks running businesses with $1 million ARR and higher (usually as CEO rather than sole proprietor). Biggest issues will be things like hiring (especially key CXX-type slots), info on lesser known/documented processes (typically easier once it has been done once), and info on broader issues (e.g., outsourcing to $COUNTRY, to-the-minute status of manufacturing in $COUNTRY, etc.).

The numbers can go higher.

All of the above will also have an element of sanity check (“is hiring really this tough right now?”) and commiseration (“omg, my sales guy has to have his emotional support emu next to him in every zoom call!”).

Can you provide some recommended ones to follow or how to find?
I see that your niche is in C/C++ world (with some Obj-C), low-level stuff.

Mind if I ask how's the market and what kind of clients (companies?) that you worked with? If you don't feel comfortable sharing the list, would you be able to share some hints?

Out of curiosity because my background in college is more towards System programming but life puts me as a full-stack and backend/cloud engineering. Gettin a bit tired with too many backend tech (too many different storage solutions, backend languages, etc)

Most of my clients tend to be Medical Device startups, but I did have a really long relationship with a major food manufacturer. While it makes sense for them to hire full time software engineers for some of the work, they always have a hard time finding device driver experts. Also they tend to attract less experienced engineers, so having me on board helps to manage and mentor their team. And I'm generally the one laying out the architecture and breaking the project into smaller parts so their engineers can implement it.

If you want to break into consulting, you have to figure out which field you want to be in. I'd avoid anything that has a boot-camp available for it, that's a race to the bottom. Then you need to get at least 10 years experience working in the field, preferably at a variety of companies, and make friends and business contacts at each place.

Thanks for the insight.

I have 10+ years working experience mostly in Cloud (think Java/GoLang/Python, AWS, Kafka, DB backed system, with 4+ years in front-end JS).

Less experience in device-driver/OS development, system programming. I'm definitely interested to explore Linux/FreeBSD/Kernel or Device Driver type of work for fun. Would be great if I can make a living.

Would also love C++ experience, but prefer not writing AppServer bizlogic type if possible, I'd rather do it in another platform.

You interpret a free opinion article that addresses a general topic as directed at you personally, take offense, then ad hominem question the author’s motives. He’s doing a little self-promotion, as you do and we all do online, but he’s not trying to “change the current consulting landscape” to benefit himself. Whom do you think reads his articles? None of my customers will.

It should go without saying to non-amateurs that exceptions happen, no general advice fits every situation, and your mileage may vary.

Then you boast about your own success. You don’t add anything to the conversation, offer no meaningful critique.

Good for you with the high earnings and luxury SUV. For most freelancers (or consultant if you prefer, clients don’t care how you style yourself), especially the amateurs just starting out, the article addresses a very real set of problems. Those less experienced freelancers do face a race to the bottom as commodities. The article might help them think about how they position themselves and structure their projects so they aren’t struggling on freelancer marketplaces.

If readers take nothing else away from the article they might think about adding business value versus selling their time, and having some skin in the game (assuming some risk) as a way to build better relationships with clients and improve their technical and business skills.

> It forces the customer to focus on getting the requirements right instead of hand waving it like "oh yeah, that's just what I want" and then come back later "I didn't want that, what I meant was" repeat ad infinitum.

This is amateur because you are leaving an insane amount of money in “change orders” on the table.

That is fine if you don’t want to do it, but it is sub optimal for maximizing your revenue stream.

I'm a lot like you, I started out that way. Over time I added 4 good developers to my team and now have a steady flow of almost steady income.
Billing by the hour seems to focus your clients clearly in a way that being their salaried coworker just does not.
I clicked on you because I was curious and noticed your bio says you live in Nevada still if you care.
And not just anywhere in Nevada, but Incline Village. Pulled that up on Redfin and I can see why someone would be tempted to brag.
Incline Village is the closest you can be to the Bay Area and still live in Nevada. It's where a lot of tech folks go after they exit or if they get a remote gig because then they don't have to pay income tax, but are only a 3-4 hour drive to SF if they have to go in.

It also has great schools.

So you end up with a lot of moneyed California ex-pats there.

> Incline Village is the closest you can be to the Bay Area and still live in Nevada.

Factually, no, its not: Stateline, NV on the south shore of Lake Tahoe is 15 road miles closer than Incline Village on the north shore. About similar drive time, though.

Incline Village is swankier though.

Not in the winter. 50 can get closed for days, 80 is always plowed.

Closest in terms of average time throughout the year.

I haven't made a post in years, I'll update my bio. I didn't realize it still pointed to Incline Village.
What kind of work do you do?
How did you get clients before word of mouth?