Stories about Software


Business Profit 101: A Primer for Freelance Software Developers

As I threatened in my last post, I’m starting something of a loosely collected series. Maybe I’ll even get organized and give them a WordPress category at some point.

If you missed the last post, it’s not exactly required reading, but it would help with context.  In that post, I explained that freelancers, however they describe themselves, aren’t business owners.  Not really.

And I went on to say that the primary distinction between business owners and freelancers is that the former reason about profit.  Freelancers simply plunder every last dime from their “businesses,” not understanding that this is salary, and thus a business cost, rather than profit.

But I didn’t dive too much into the nature of profit itself.

I would understand if you read that last post and said, “I get what you’re saying, but I’m not sure I grok.  Couldn’t I just arbitrarily say that my salary is 80% of what I bring in freelancing, and then 20% of it would be profit?  Problem solved, right?”

The answer is, “no, definitely not.” But I can understand if you don’t understand why that’s the answer.

In the most abstract sense, think of profit as money your business can make while you sleep (or, in general, while you don’t work). And you, as a freelancer literally selling your hours of labor, can’t make any money while you don’t work, 20% or any other percent.

But let’s clear things up in this post by examining a concretion.  I’m going to walk you through a very realistic app dev freelancing situation and talk through the ideas of cost, salary, and profit.  Hopefully that drives the point home.

Profit == Revenue – Costs

Let’s start with the absolute basics.  I assume just about everyone reading understands that the actual definition of “profit” is the difference between what you earn and what you spend during the course of earning that money.  Revenue minus cost.

But let’s look at what that means for a newly minted, freelance software developer generalist.  You tell your boss to take this job and shove it, and you hang out your shingle, going off on your own.  Your initial hourly rate is $100 per hour because, hey, that’s a nice round number, and “nice round number” is as good a justification for an hourly rate as any.

You land your first client and they enlist you to build some kind of line of business something-or-another. You log 100 hours, send them an invoice for $10,000, get nervous about when they’ll pay you, and then celebrate, 50 days later, when the check arrives.

So, what’s the math here?

  • Revenue is easy: $10,000.
  • But cost is…. not obvious. It’s nothing, right? Right!?
  • So, profit is… $10,000!

Unless you internalized what I was saying in the last post and realized that some part of what you’re paying yourself should be “salary” and the other part, “profit.” In that case, I can forgive you for saying, “well, paying someone $8,000 in salary for 100 hours sounds reasonable, since that’s $80/hour, which annualizes to about $166K per year.”

So, $2k in profit is reasonable.  Right?  Right!?

Revenue is Easy, So Let’s Break Down Cost

Well, no, not really.  Not exactly. But to understand why not requires a bit of a foray into how business expenses work.

Freelance app dev — selling hours of labor — is one of the simplest business models imaginable.  But even the simplest of business models has a cost structure with complexity that might surprise you.

Quick Aside — Businesses Are Like Software Systems

If you’re anything like, well, every software developer that hangs out a freelance shingle, you understandably think of generalist app dev as the most important thing that you do.  It’s what you’re selling, you think.  (You’re kinda wrong — what you’re actually selling is hours of labor.)

So the most important thing is that you perform software development labor in exchange for money.  The rest of the stuff that you now have to do — emailing your network, sales calls, invoicing, tax prep, etc — is wasteful overhead that eats into the 40 hours per week that you ought to bill.

You should minimize all of this stuff as much as humanly possible so that you can spend all of your time “billable,” and doing app dev.

This is wrong in a subtle but important way.  As an aside for another post, I would actually argue that sales skill is more important than software-writing skill for a freelance software developer. But I digress. The important thing here is that sales is… important.

I’m going to dramatically oversimplify business operations here.  But I think the relative ease of your understanding will offset the lack of precision.

Think of your business as three systems:

  1. Acquisition: a funnel-shaped system that takes “the world” as input at the top and poops out customers at the bottom. (e.g. sales and marketing).
  2. Service Delivery: a system that takes a customer as input (from acquisition) and delivers a satisfied customer as output. (e.g. not sucking at writing code during the hours you sell the client).
  3. Overhead: a support system that provides the necessary ‘fuel’ to acquisition and delivery. (e.g. invoicing, time tracking, a CRM, etc).

The business dies without any of these functioning properly.

A Crude Business Cost/Profit Formula

You’ve probably heard people toss around a couple of terms from time to time:

  • Profit center (the areas of the business to which you can assign revenue, e.g. sales, service delivery).
  • Cost center (the areas of the business that are necessary, but do not directly contribute to revenue/profit, e.g. overhead — legal, HR, accounting).

So let’s look again at our formerly simple business profit formula: P = R – C.  It gets a little more complicated when you factor our profit and cost center systems into the mix.

  • Revenue varies directly with acquisition and service delivery.
  • Cost varies directly with overhead, but also with acquisition and service delivery.

So, for a “unit” of business — a $10,000 project in our case — here’s what cost looks like:

C = Ca + Cd + Co/total units.

In (over)simplified terms, the cost for your $10K project is the cost of acquiring that client’s business + the cost of delivering your hours to that client + (the cost of your general overhead / the total number of units you deliver).

Now you, as a newly minted freelancer do three things:

  1. Completely fail to consider the cost of acquisition (writing it off as “sales fluff” that takes up valuable coding time).
  2. Think of the cost of delivery as your profit, rather than, well, the cost of delivery.
  3. Vaguely understand your overhead cost, considering it an unavoidable nuisance.

Summarized, you assume your cost is 0 because you do all of these things and assume that they’re either (1) not valuable or (2) your “profit.”  But what’s really happening is that you’re giving short shrift to important business investments (costs) by half-assing them and not valuing your own, non-billable labor.

The Cost of Replacing Yourself

Alright, I think we’re ready to work our way toward profit in earnest.  To recap, as a freelance software engineer, you:

  • Completely understand your revenue ($100 times however many hours you bill clients).
  • Have no idea what your customer acquisition cost is.
  • Think of your delivery cost as arbitrary (is it all salary, or is it all profit, or some mix?).
  • Have no idea what your overhead cost is.

Let’s fix those “no ideas,” and, while we’re at it, the ambiguity around your own labor.

Recall that I said to think of profit as “money that your business makes for you while you sleep?”  To understand the profitability (or lack thereof) of your business, you need to go through the exercise of calculating the cost to replace yourself in your business.  And that means replacing yourself in all parts of your business, and not just code-writing hours of labor.

Backfilling The Cost of Acquisition

What is it that you do to land business?  Do you have a blog with traffic and it comes to you? Do you actively work your network? Or do you just lurk on LinkedIn like an apex predator, attacking people with outreach?

Whatever you do, imagine that instead of doing it yourself, you paid someone else to do it. How much would that cost?

Maybe you bring in business by advertising?  Or through a site like Upwork or Toptal (this is a topic for another post, but I’d argue that acquiring business this way precludes you from being a real business owner)? In that case, reasoning about the cost of acquisition is easier — what are you paying for ads, or what is the broker’s cut on for placing you?

Whether it’s your labor, your cost, or some combination, quantify it all.  If you’re paying for lead generation services, factor those costs in directly.  If you’re also spending 10 hours per week answering RFPs or doing whatever people do on Upwork, figure out how much you’d need to pay someone else to do it.

This total cost, per client, is how much it costs to acquire a client.

Backfilling The Cost of Delivery

Now for the part that’s probably comfortable to reason about for a freelance software engineer.  What would it cost to hire a software engineer and sell their labor instead of yours?

Of course, this is subtly a bit more challenging than you might initially think.  I don’t know what software engineer salaries are these days, but say you can find a good one for $125k/year. You might divide by 2080 and say that this person earns $60/hour, meaning that your $100/hour has a nice margin of $40/hour.

Well, not so much.  If you make this backfill hire, don’t forget that you’ll pay payroll taxes on your new employee’s wages, along with benefits, like health insurance, PTO, retirement savings, ping pong tables, etc.

It’s crude math, but I’d rule-of-thumb that employees cost about 1.4 times their actual salary, meaning that your cost for this salaried employee will actually weigh in around $175K.  That margin just became much thinner, and we haven’t yet addressed how unlikely it is that you can keep your new hire billable 40 hours per week, 50 weeks per year.

You’d better hope that you can sell 35 hours per week of the engineer’s time, though, because that’s how much it will cost you just to break even on the cost of having this employee.  If you nudge it up close to 40, you might have enough left over to pay for acquisition and overhead and break even.

Backfilling Overhead Costs

And, speaking of overhead, don’t sleep on these costs, either.  For a freelancer, they’re admittedly quite low, but they exist.  Take into account:

  • The cost of any bookkeeping/accounting software you use.
  • Annual tax preparation/year end bookkeeping.
  • Data entry labor costs associated with sending invoices, entering entries in the books, corresponding about payment issues, etc.
  • Any HR/benefits administration for your employees/contractors.
  • Recruitment costs and dealing with occasional staff turnover.

Now, you’re probably thinking, “I don’t have staff!”  And, yes, that’s true when you’re executing every role within your business.

But recall that this exercise is a question of the cost to backfill every piece of your business.  And if you’re paying a virtual assistant to answer RFPs and send invoices, you’ll occasionally have to find someone new to do that when the first one moves on.

A Realistic Look at Freelancer’s Profit

So, with all of that in mind, let’s very-back-of-the-napkin-math ballpark your annual costs and revenue to sell software development person-hours of labor.  Assume that you take on a project each quarter that, once you’ve ramped up and down, keeps your employee billable 40 hours per week.

  • Acquisition costs: $3,500. Figure $20/hour for someone to answer RFPs and bang out Upwork applications for your app dev service, and that this happens 4 times during the year for about a week each time.  Also throw in any miscellaneous membership fees and maybe some kind of proposal template software.
  • Delivery costs: $175,000.  I’ll generously just call this the cost of having a software engineer on staff and assume that your little agency passes along every other single cost of app dev, including IDEs and such, to the client.
  • Overhead costs: $3,000.  Let’s call it $100/month worth of software for bookkeeping/invoicing/other misc, 10 hours of administrivia per client at $10/hour for labor, $800 for tax prep, and another $600 for the cost of finding that contract help and dealing with any benefits issues that crop up for your employee (that latter being very optimistic).

So, the annual cost of your business comes to $181,500.

How about the revenue side?  Well, you have 4 clients during the year, so let’s assume that it takes you 1 week for each to ramp-up and ramp-down.  This kinda works out for you, since you need to squeeze in your employee’s PTO somewhere.

This means that you have 44 completely billable weeks during the year, for a total of $176,000.

Thus, your freelancing business has the following balance sheet:

  • 176,000 in revenue
  • – $181,500 in costs
  • for ($5,500) in profit


Fixing the Profit Problem: Naive Edition

Now, the first thing that occurs to you is that you could fix this problem in various ways:

  1. Jack your bill rate to $125 per hour and suddenly your profit becomes $38,500.
  2. Instead of 4 clients, why not just have one that you work for all year and eliminate all of this overhead and non-billable time?
  3. Pay your software engineer to do all of the sales and overhead stuff, since that salary is a sunk cost.
  4. Do some of the app dev work yourself, or maybe all of the overhead work.  Or maybe both.

Fair enough, in all cases.  But consider the following issues:

  1. When price increases, demand decreases. Your cost of acquisition will increase or, worse, you might wind up with only 3 clients.
  2. That starts to look an awful lot like your employee working as an employee for your client.  Why do they need you, again?
  3. If software engineers were amenable to freelance marketing, sales, finance and overhead, they would become freelancers themselves and cut you out of the mix.
  4. Well, if you manage to strike this balance just right and avoid pitfalls that I’ll go into during future posts, congratulations!  You’re taking your first steps to having your very own app dev agency.  As long as you thread the needle between under-staffed and over-staffed and don’t mind becoming a full time project manager and sales person (and thus not a freelancer), you’ll start to earn a profit.

This isn’t an exhaustive list of what solutions you might come up with.  But these solutions (and others you might think of) have pretty significant downsides and risks.  And the reason for that hews back to what I talked about in my post about freelancers not really being business owners.

Freelancing is basically a job, not a business.

It’s very difficult to backfill everything you do as a freelancer and to earn a profit because “selling a single person’s person-hours for dollars” is a highly dubious business model for anyone who cares about profit.  It’s optimized not for “you as owner,” earning money while you sleep, but rather for “you as employee,” who doesn’t care if your boss makes or loses money so long as your pay stays steady-ish and you don’t hate the work.

Fixing the Profit Problem in Earnest

In the last post, I talked about two freelancer career paths, and about how freelancer is simply an interim step along the path to either going back to employee or going on to business owner.  Hopefully, you now understand.

As a freelancer, you cast yourself as the sole employee of the worthless business you own.  So without a profit plan, you either toil away as your own employee indefinitely or you throw up your hands and go work for a business with a better business plan.

But with a profit plan, you have a path toward something better.

It may be option (4) above, where you intuitively figure out that owning an agency gets you off the treadmill and into equity-land.  Or it may come via a different route, such as realizing you need to stop selling hours, niching your way into much higher prices, creating productized services, or even creating products.

There are a lot of options, and we can and will dive into all of them if you all would like.  But they all involve what I’ve covered in the first two posts: understanding that business profit through freelancing is both unlikely and coincidental by understanding, in real detail, how business profit works.

And remember, having a freelancing/0-profit business isn’t a bad thing.  Every business starts out long on aspirations and short on proof in the pudding.  As long as you have a hypothesis about how to earn a profit and a willingness to adapt in the face of evidence, you’ll get there.

Newest Most Voted
Inline Feedbacks
View all comments
3 years ago

This resonated. The first time I turned down a project due to lack of hours, the true nature of business hit me.     Maybe I’ll buy developer hours and just sell them at a higher price! But, that is sales. I’m not good at sales. Uh oh…     A few friends freelanced in order to devote more time to side projects. But I’d guess the right path is to find the similarities across all your clients, and then automate those similarities? If you are getting started, should your goal be number of clients (wide net for product ideas)… Read more »

Last edited 3 years ago by Ryan
Erik Dietrich
Erik Dietrich
3 years ago
Reply to  Ryan

I’ll talk a lot more about this subject as I work my way through these posts/this series, but I think you’re on the right track with finding similarities across clients (i.e. picking a niche). As for whether to value finding the niche over paying the bills, I think that’s going to be pretty context-dependent and unique to each person’s situation.