← All writing
Craft · · 9 min

I asked what it sold for

Where a billable day actually goes, and why the whole commercial risk of a project rests on a sentence somebody says in three seconds.

Agency Careers

A proposal came back to me last week to check the technical wording, and about a page in, there was my own estimate with a dollar sign in front of it.

Three weeks. I’d said that out loud in a call in November, about some checkout work, after considering it for three seconds, tops. In the document it was a line item, multiplied by a rate I have never seen, adjusted by a margin I didn’t know the size of, and my name was nowhere on the page.

So I hadn’t estimated that job, I’d priced it. Nobody had mentioned that’s what the meeting was.

Every developer who bills their time, directly or through somebody else, is part of answering “what do we charge for this” over and over, under uncertainty, with real money attached, and mostly without being told they’re doing it. I’ve been at this about eight years and I’d have told you with a straight face that pricing was somebody else’s department 🫠

And almost nobody talks about it. There are, like, 400 posts about which bundler to use, and the thing everybody links you to about money is Patrick McKenzie’s career-advice post, which is 12 years old and about being an employee. I think there are two reasons for that and they compound. Money is taboo in a way that a technical opinion isn’t, so publishing “I charge X” invites every client who paid less to feel cheated and every peer who charges more to feel smug. There’s no version of that sentence that doesn’t cost you something.

The other one is that being wrong about pricing is embarrassing in a specific, personal way. If I publish a bad take on the cascade, I was wrong about the cascade. If I publish that I put three weeks on something that ate seven, I’ve published something about my judgment, and that feels like it’s about me instead of about a subject.

Which is a shame, because it’s the thing developers most need and have least access to. Nearly everyone I’ve worked with has spent years handing over numbers that quietly became prices, and every one of them reads their misses as a personal failing instead of a structural one.

Show me the money

I’d most like somebody to have shown me the math.

You’re in a scoping call. Somebody asks how long the checkout will take. You say “about three weeks,” and you mean it. You’ve thought about it for roughly as long as it took to say. That’s the whole transaction. Your three weeks gets multiplied by a rate nobody has told you, adjusted by a margin you’ve never seen, and sent to a client as a number with your name invisibly underneath it.

The rate is not your salary and the gap isn’t what you think it is, which is where most of the resentment I’ve watched comes from. A client is billed something like three times what the developer costs, and the reflexive read is that somebody upstairs is on a gravy train.

They’re mostly not. Roughly where a billable day goes:

one billable day
what the client pays                        = $1600

  the developer, fully loaded               ≈  $610 per day worked
  ...but only ~65% of days get billed, so
     per billable day they cost             ≈  $940
  everyone here who never bills anybody     ≈  $330
  rent, insurance, software, hardware       ≈  $170
  margin                                    ≈  $160
Text

Those aren’t anybody’s real numbers and they’ll be wrong for your market. I’m after the shape.

Utilization is the whole game. It’s a word I had never once heard said out loud in a room I was in. You don’t bill every working day. Standups, reviews, the meeting about the other project, the afternoon lost to a staging environment that stopped resolving, the fix you did for free because it was faster than the conversation about whether to charge for it. 65% is a good year. The rate already assumes a specific amount of that in the aggregate, so an unusually thin month isn’t just uncomfortable, it’s a number somebody has already promised to somebody else.

And the estimate is where all the risk actually sits, which is kinda the whole problem. The rate was fixed months ago by somebody in a spreadsheet. The margin was fixed with it. The only variable left is how long you said it would take, so the entire commercial exposure of a project rests on a sentence a developer says in a meeting, in three seconds, usually knowing none of the above.

Four ways to get paid

Hourly or daily is simple and honest. It comes with a conflict of interest sitting right in the middle of it: you get paid more for taking longer, and every efficiency you gain reduces your income. It also caps you at hours times rate forever. It invites the client to watch the clock instead of the outcome. It’s the fairest thing going when nobody knows the shape of the job yet. It’s what we put on open-ended work.

Fixed price, the client loves, because certainty is worth a lot to them and every scrap of the risk is yours. That’s fine if the scope is fixed, and the scope is never fixed. Fixed price plus a scope written as a list of nouns is the most reliable way I know to watch a project lose money. If you do fix one, the exclusions list is the thing that makes it survivable.

Value-based means charging a fraction of what the work is worth to them. There’s a whole consultancy literature about it and it works in a narrow band, when the value is measurable and attributable, like a conversion improvement on a store with real volume. For a brochure site for an accounting firm there is no such number, and the attempts to construct one are transparent and a little insulting. I’d be skeptical of anyone selling it as the answer to everything.

Retainer is predictable for both sides, aligns you with the thing continuing to work instead of with hours. It’s the only model where I’ve felt like a professional instead of a supplier. It’s also the hardest to sell, which I went on about at length in 2022.

Am I worth this?

It took me longest to believe that a rate isn’t a claim about your skill.

Two teams of identical ability can correctly charge different amounts, because a rate is a function of the client’s alternatives, the overhead standing behind the person doing the work, utilization, risk, and how specialized the job is. Not of how good anybody is.

So “am I worth this?” is the wrong question. It’s the one everybody asks, at 2 am, staring at the ceiling the night before a number goes out. The right one is whether the number covers your costs and reflects what this work is worth to this client next to whatever else they could do with the money.

I find that freeing. The wrong question has no answer and just produces paralysis. The right one is math you can do on a napkin.

Sleep on it

Two habits, both of which I got to late.

Never say the number in the room. Same as with estimates and for the same reason. “Let me look at that properly and come back to you this afternoon” has never once been refused, and the difference between the number I’d have said in the room and the number I send that afternoon is routinely double.

Give a range with its reason attached. Not “three weeks,” but “three weeks if their payment provider’s sandbox behaves the way it did last time, five if it doesn’t, and I can find out which by the end of the week.” That’s a far more useful sentence for whoever is assembling the proposal. It moves the uncertainty out of my head and into a document where somebody is able to price it. I wrote a whole post in 2018 about keeping the condition in the same sentence as the number. It turns out the same move works on money.

The quote is a document

Not a number in an email, which is all I ever used to hand over.

What’s included. What’s specifically not included, which is the half that does the actual work. What happens when something changes, agreed upfront instead of negotiated in week nine. Payment terms. What happens if the project goes quiet for a month or two, which happens constantly and which nobody writes down, and which is how you end up holding a slot for a client who has gone silent.

Payment terms are pricing, incidentally, and people miss this. 50% up front against 30 days from completion is a real difference in what you’re being paid, because cash flow is what kills small firms, not margin.

Ask and you shall receive

This is the one I’d push hardest. It’s the reason there’s a post here at all.

For years I handed numbers into a void and never learned what became of them. Now I ask afterward what the job sold for and what it actually cost, and maybe a third of the time the answer reframes something I’d been confident about. Nobody has ever refused to tell me. I simply hadn’t asked. I don’t think most developers ever do, which is roughly why we’re all bad at this in the same direction.

That proposal was the first one I’d ever seen from the outside. I only saw it because somebody wanted the word “webhook” checked. I’ve asked for the rest of them since. It’s a completely ordinary request, it has never once been awkward, and I would not have believed either of those things in advance.

The most useful thing anybody has ever done for me on this subject was at a meetup back in 2017. Somebody I’d known for about an hour told me, unprompted and in a totally normal tone of voice, what their agency billed them out at. It took three seconds, same as my estimate did. It recalibrated me by something like 40%.

Both of those were three-second sentences. One of them put a price on a piece of work while everybody in the room, me very much included, thought we were talking about a calendar. The other was somebody deciding, for no particular reason, to just say the number out loud. It’s still the single most useful thing anyone in this field has done for me. I don’t really know what to do with that except ask more often and answer when I’m asked.

Read similar posts
8 min

The fourth going-away call

Three people have left the agency since April, all three going-away parties happened on a video call, and last week I gave notice and made it four.

8 min

Saying no

A client asked for a pop-up in the last minute of a December call and I said yes, because no on its own hands somebody a problem and I had nothing ready to say after it.