Stop leaving money on the table with your freelance rate

When I took on my first client, I had no idea how to set my freelance rate. Asking for too much would make me seem greedy. Asking for too little and I would fall into the trap of being overworked and underpaid. It has taken a couple years, but I’ve finally come up with a system to set a rate that is best for me and my client. First I had to unlearn the hard way.


Most freelance web developers base their rate off their current (or last) salary. Our salaries represent our market value so it makes sense to use it as a basis for our rates. Well, as it turns out, thinking this way is wrong.


To figure out what you should charge, you need to understand how your work fits into a client’s budget. You may know your client’s budget but how did they even come up with this budget? What is the relationship between the budget and what you are working on? A quick story will help illustrate my point.


Sally, the CTO of the Acme Corporation, just got off the phone with Wile, their biggest customer. He wanted some quick drying cement delivered today, but yesterday’s website outage prevented his purchase. Wile is threatening to take his business elsewhere, costing the company thousands of dollars in revenue.

What Wile doesn’t understand, is that the outage was out of the Acme Corporation’s control. Their sales site is hosted on Jeroku and when Jeroku started doing maintenance, it took the sales site down. Sally decides to make a tough decision: it’s time for them to move off of Jeroku.

Sally had seen the warning signs for months: their Jeroku bill is well over $10k/month and outages seem to be happening more and more. She’s wanted to move them off, but delayed the decision because they didn’t have a dedicated web developer on staff. Sally wants this done right away. So they bring in Bill, the freelancer, and ask for a quote. Being new to freelancing, Bill thinks he has to come up with a hourly rate.


At his last job, Bill was compensated as follows:

  • a $70k salary
  • Health insurance
  • 3 weeks paid vacation plus holidays

To come up with his freelance rate, Bill reverse engineers what he was last compensated:

($70k salary + $20k in health insurance)
(49 working weeks * 40 hours)
= ~ $46/hr

Now Bill has an hourly freelance rate.

Based on his experience, Bill estimates it will take two weeks for the migration off of Jeroku. He quotes the Acme Corporation at $3.7k (40 hours * $46/hr * 2 weeks). Sally quickly accepts. Bill doesn’t realize it, but he’s just missed out on a ton of money because he’s missing a key insight in his calculation:


Sally knew it was costing $10k/month to stick with Jeroku. If the Acme Corporation could migrate off of Jeroku by the end of the month they would save $10k next month and every subsequent month afterwards. With this in mind she set an initial budget for the project to $10k. This is why going for Bill’s $3.7k quote was a no brainer.

Sally was considering the amount of money it was saving her company. Bill on the other hand, only considered the money he thought he should be making. Simply put, Sally was focused on a solution while Bill was focused on hours.


Let’s revisit the Acme Corporation but now Sally is contacting you for a quote. Your first task is to talk to Sally and identify two things:

  1. Their problem. The more specific details you find, the better. You get bonus points if you can identify how much money the problem is costing them and therefore, how much money a fix will save/make the company. In our example, the Acme Corporation loose $120k/yr staying with Jeroku and significantly more whenever their site goes down.
  2. The budget to solve the problem. To find the budget out, simply ask: “What is your budget?” If they don’t have an answer for this, it’s a red flag. This client has not put enough thought into their cashflow, what makes you think they’ll be reliable in paying you? You don’t need to know the exact budget number, just a ballpark. Jason Fried of 37Signals has an excellent tip on this:

When they tell you they don’t have a number say, “Oh, ok. So a $100,000 solution would work for you?” They’ll quickly come back… “Oh no, probably something more around $30K.” BINGO: That’s the budget.


You have already migrated 8 or so Rails apps off of Jeroku so the switch for the Acme Corporation shouldn’t be a problem. You offer to get the work done for $8k, knowing their budget is $10k. Plus, you guarantee the work will be done in time thereby assuring their savings of $10k next month.

Compare this to Bill’s quote of $3.7k, and you’ve doubled what he would have made for the same amount of effort. All because you thought about the problem from the client’s perspective.


I was Bill for a long time, each client engagement was just someone paying me for the hours I worked. Then I realized clients only care about solutions.

You should keep this in mind whenever working with clients. Understanding your client’s thought process will add clarity to the value you are providing and how you bill. Most importantly it will help build lasting engagements. Give it a shot.

Procrastination and the Internet

Procrastination. It happens to all of us. Work starts to get overwhelming and the shiny Interwebs are there to take us away.

When I start to feel overwhelmed with all the things I have to take care of, I’ll open up Netflix or Hulu and catch up on shows I’ve missed. Or, I’ll look at random news on Reddit and Hacker News. I can easily escape and avoid all my burdens. A couple hours of
this is okay, but sometimes it can turn into days; and then reality starts to sink in: none of this is pushing my business forward!
Knowing my own weaknesses, I’ve developed a several techniques over the years to keep me productive and away from the Internet.

Block Sites at the Computer Level

For this I like to use Concentrate. You can specify domains you visit often and it’ll block them for you.

Blocking Hacker News

Blocking Hacker News

Unfortunately its abandonware but you can still download the 60 hour trial. I’ve also heard good things about Freedom. If you want to go completely old school you can also manually edit your /etc/hosts file.

Block Sites at the Router Level

I use OpenDNS as a DNS service. Just sign up, log into your router, pop two IPs to use as your DNS servers and you’re golden. It allows you to specify filters and individual domains on the web interface.

Setting Filters

Setting Filters

Block Sites/Apps at the Phone Level

I do this more so for social and family reasons. There was a time when I noticed we were all having dinner and everyone was just looking at their phones. Now, by default, I do the following things:

Disable Emails

Disable Emails

Turn off Emails

Restrict Safari

Disable Safari

Disable Safari

Restrict Apps

Restricting to 9 and under blocks most of my time sucking apps (Netflix, Instagram, etc)

Restricting to 9 and under blocks most of my time sucking apps (Netflix, Instagram, etc)

Block Things at the Partner Level

This is when you know you have a real problem. I used this technique when I was playing a lot of World of Warcraft and StarCraft II several years back. The solution? Create a random password for the account, give it to your partner and have them hide it or throw it away.

What about you? What kind of tricks do you use to stay away from the internet?

Why You Should Consider Working for a Consultancy

Tell me if you’ve heard this one before: “I’m a successful software consultant and I’ve quadrupled what I used to make at a cube farm. This is my success story. Blah. Blah. Blah. You can do it too!”

While inspirational, these type of posts tend to forget all the anxieties associated with making the switch to freelancing:

  • How will I get paid?
  • What if a client doesn’t pay me?
  • Do I need an accountant?
  • Do I need a lawyer?

And most important of all is: how do I land my very first client?

Sure, being your own boss and having the freedom and flexibility associated with consulting sounds awesome. The reality is though, if you don’t have a client, there’s no money, and with no money, you’ll quickly be heading back to the farm.

if you don’t have a client, there’s no money, and with no money, you’ll quickly be heading back to the farm.

Go Work for a Consultancy

My recommendation? Skip the “being your own boss” part for a little bit and go work for a consultancy. Instead of having to worry about things like accounting, lawyers, getting paid, and lead generation you will get to focus on the most important thing about freelancing: building relationships with clients by delivering them value.

The good news is that most consultancies are always in a state of hiring. They have two ways to increase their revenue: hiking up their rates or hiring talent to take on more work.

You do have to be careful about the kind of work the consultancy is taking on though. You don’t want to be at a place that is hiring developers to just fill seats. You want to be with a firm that empowers its developers to work intimately with clients.

a firm that empowers its developers to work intimately with clients

Some good questions to ask when interviewing are:

  • How often will I be in contact with a client? You want be the primary point of contact. If you have to work through some kind of project manager you won’t develop the skills necessary to communicate with clients if you were ever to go independent.
  • Who writes the proposals? The majority of consulting is understanding your client’s world view and effectively communicating it through project tasks and proposal writing. You want to be able to understand your client’s vision and coming up with a plan to get them there.
  • Who manages project scope? You’ve got to practice when to say no and when to ship. It’s true that the client is always right, but sometimes their vision can be blurred by shiny new features. You’ve got to be their advocate in ensuring that the money they are paying the consultancy will translate to either making them more money or solving some kind of pain in their business.

Want to make the leap?

My good friends at Test Double are hiring.

The Impact of Kindness

Last week I was saddened to hear the news of Jim Weirich’s passing. I had only met Jim once, but his impact on me was profound. I remember downloading PragProg’s Source Control Made Easy and having my mind blown as a cheerful gentlemen explained the intricacies of Git. When I started getting into Ruby and TDD, the very first thing I played with was his Ruby Koans. Fast forward a couple years, and I got to have lunch with him at my very first Ruby conference!

At the time I had no idea who he was or what his contributions were. I can still remember him enthusiastically addressing each of my newbie questions regarding Rake and contributing to open source. The entire conversation felt like I was talking shop with an old friend. That was one of the special things about Jim: his unmatched empathy allowed him to bridge that experience gap. Simply put, he just made everyone feel special.

he just made everyone feel special

Just take a look at some of things that other developers had to say about him:

The above tweets made me reflect on how we treat one another. More specifically, they emphasize how simple acts of kindness can impact people; and even more specifically than that, how they can alter a person’s day. Just one thing can inspire someone to pay it forward and contribute to their community. Individually they can seem small but all together they can cause a giant ripple effect and compel thousands of people to rally together to say goodbye to a complete stranger.

With Jim, you could find his marks of kindness everywhere: they were as big as sharing his work with the entire programming community to as little to sitting down and chatting with a brand new Ruby developer.

Thank you Jim. You will be missed.

Why Your Spouse Should be Your First Client

One of the biggest worries for new freelancers is how to get from a lead to closing the deal. How do you create a credible proposal to convince the client you are the right fit? Before even getting to the proposal you’ve got to practice your Listening and Compromising.

And who else better to practice with than your spouse.

Why Your Spouse?

Your spouse is the first person you’re going to tell about your plans to start freelancing.1 To do this, you don’t just tell them “I’m going to start freelancing tomorrow” and expect everyone to be happy. Just like closing a deal with a client, you’ve got to follow a process to get everyone on the same page.

Step 1: Listening

When you bring up the idea of wanting to freelance, your spouse will have concerns. How does this affect our income? If you’re doing this part time, when will you have time for family? What about chores and errands?

As a developer, I understand the urge to shout out answers and solutions. Fight it! Paying attention to what your spouse is saying. Check out the following video if you need an extreme/hilarious example.

In the video all the partner is looking for is sympathy. Your potential client is no different, they want to feel you understand the problem at hand. The most direct way to do this is to identify their fears and values through listening.

Step 2: Compromising

You told your spouse you wanted to freelance, causing an eruption of emotions and concerns. You listened and discovered that your spouse’s vision of  freelancing is much different than your own. When you encounter this scenario in every kind of relationship the best step forward is compromise.

By definition compromise is

an agreement or a settlement of a dispute that is reached by each side making concessions.

How can you compromise to ensure everyone is happy with you freelancing? Maybe you should limit the number of hours a week you do freelancing. Maybe even the days. The goal here is to compromise to get your spouse 100% on board with you freelancing.

This Isn’t Marriage Counseling

So far we’ve talked about working on listening and compromising. These skills transfer directly into closing that first deal with a client. From the first time you meet, you’ve got to fish out what they find valuable. As we found in step 1 a great way to do this is by listening.

Setup an initial client interview. At the interview learn about what they need help with, while also trying to probe what they find valuable. Ask them about their family, their hobbies, and conversely things that may be stressing them out. Maybe they’re feeling a ton of pressure from a deadline and they need an extra dev to speed things up.2

Once you’ve got notes from the first meeting, try to make a list of everything they find valuable. Then compare their list of values to your own list (i.e. your rate, your availability, etc). How can you maximize your value to them? Will you have to compromise your own values to move forward? Will it be worth it?

Finally, use this information to come up with a proposal. Congrats you’ve sent over your first proposal!


  1. You don’t really need to use your spouse. You just need to pick a person who will be affected by your decision.
  2. Yes, I read the Mythical Man-Month. I used this example because listening isn’t about providing answers up front. Gotcha!

How Savings Impact Freelancing

Last time I asked you to consider how much savings would you need in order to take a STRESS FREE three month sabbatical. The goal of this exercise seems pretty straightforward right? We’re just trying to determine how much you need to save to start freelancing full time. But there’s actually a secondary realization here.

Why save to start freelancing?

  • It’s good to have backup when starting a new endeavor.
  • You may be completely miserable at your job but it’s better than going broke.
  • You’ve made a compromise with yourself and decided, “I’m going to temporarily stick to this crappy gig but I’m also going to save so I can start freelancing. With the money I save I’ll have a backup when the income slows down.

If this is what you’ve considered, I’d say congratulations you’re almost there.

Head fake! You’re managing fear, not risks

The real reason you’re saving money isn’t to mitigate the risk of your income slowing down, it’s to mitigate YOUR FEAR. What will happen if I start freelancing and lose clients? What if I go broke and fail? These feelings are completely natural but it’s essential to notice the how much of an impact money can have on your emotions. This money/emotion relationship is the very reason we have financial advisors, people whose job is to help you make objective decisions with your money.

News flash! Money has an impact on our behavior.

What does this have to do with freelancing and your savings? Everything! If you’re short on cash, your going to be afraid of going out of business. If you’re afraid of going out of business, you’re going to take the next freelancing contract you come across. You won’t care if the terms are terrible, all you’ll care about is relieving the emotional pressure you’re feeling from the FEAR of failing.

all you’ll care about is relieving the emotional pressure you’re feeling from the FEAR of failing.

Now lets take that scenario and flip it on its head. You’ve got a pile of money you can use to live comfortably for three months. A new gig comes around, it sounds like an awesome collaboration but they’re asking you for a discount on your rate. Suddenly with savings you’re no longer desperate and you can think things through more objectively. Maybe the rate hit will result in more leads. Maybe you should sit on the deal for a week. Maybe you should renegotiate and see if there was something else you could compromise on.

Will having savings prevent you from stumbling in your first couple of months of freelancing? Nope! But it will help you think about things more objectively, less emotionally.

So how do we save?

So how do we save? There are a ton of schools of thought on this. You could put away 5% each month. If you’ve got a significant other that works you could try and live on one of your incomes while the other’s goes straight to savings. My beef with all of these approaches though is that they’re likely to impact your lifestyle.

The best approach in my opinion is to just start freelancing part time. You want to do it full time eventually, why not ease your way into it? Just make sure all that money goes into a separate savings account!

Warding Off the Financial Fear Spiral

You know what sucks about being a grown up? The loss of financial freedom. One day you’re care free, spending your weekly allowance at the arcade and then BAM all of a sudden you’re shopping for health insurance.

Sure your parents preached to you about saving your money but you didn’t really get it. So you’ve started to set aside some money in case something catastrophic happens. Better yet, you’re setting aside money so you can leave your 9 to 5 and get into the consulting game as an Independent Developer. But how much money is enough to get into the game?

The general rule of thumb has always been to have enough savings to cover your expenses for three months (including that of your family). The truth is the amount is less objective than that and more emotional. The amount you have to save is any amount that you can look at and not go into the Financial Fear Spiral.

What is the Financial Fear Spiral you ask? Its that experience you have when your savings have been suddenly wiped out or your income has ceased. “Oh man, how am I going to make next months rent? What am I going to do if I get kicked out of my apartment? Am I going to be homeless? I’m going to die alone.”

Dying alone is pretty frightful so another rule is to have two buckets, one that covers the entire family’s expenses and a second to cover your salary for three months.

For your homework you’re going to figure out how much you need to keep the Financial Fear Spiral at bay.

  1. What’s your average monthly expenses for the last six months?
  2. Also how many months worth of savings would you need if you wanted to take a stress free three month sabbatical?
  3. Multiply 1 and 2.
  4. Start saving for 3.

In the next post we’re going to talk about strategies on how to build up your savings and why its so important to take emotion out of your business decisions. Afraid you might miss it? Join my newsletter.

Building our Local Developer Community

Its been roughly a year since I started to help co-organize the Norfolk Ruby Users Group. When I started Ken, the sole organizer at the time, was getting a little burnt out. And to no fault of Ken (he’s a pretty busy dude) it was becoming apparent in our meeting attendance (from May to August of last year we were averaging 5 RSVPs per meeting). Our main goal was to grow our community.

Starting out I wanted to accomplish two things: adding structure and being more consistent.


Originally our meetings had no structure at all. Someone would volunteer to speak and if no one did it would default to Ken. Some meetings would last 30 minutes while others would go on for a couple of hours. This created an unpredictable experience for attendees and it possibly alienated those who had to be at home by a certain time. In order to alleviate this we simply added a time cap to our talks (45 minutes including time for questions).

The positive side effect of this was that it consistently gave us time to go to a restaurant afterwards for dinner and drinks. This unintended side effect is what strengthened our community more. People started to form relationships and our meet ups started to not only become time to learn something new but also a monthly time to catch up with friends.


Since our goal was to grow the community I wanted to keep things simple: have eight RSVPs per month for six consecutive months. The challenge for us as organizers was that we had to ensure we were consistently providing value to our potential attendees. Translation: informative topics and engaging speakers.

I didn’t want one person to take the burden of having to speak every month so I decided to never let the same person speak more than a couple times a year. To do this I did everything I could to encourage and empower our attendees to become speakers. No matter where they were in their journey as a developer I wanted them to feel like they had something to share.

The other thing we did, was bring in as many out of town speakers as possible. If I got any wind of interest in speaking from someone I followed on twitter I reached out to them to see if they would like to come visit and speak. For a lot of our out of town speakers we were able to find times when they were remotely close to the area and if so scheduled our meetings around them so they could come and present. Our thought process here was we didn’t have a lot to offer them with swag or reimbursements so we would go above and beyond to make things work with them. This included driving an hour here and there to pick them up.


For my own interests in teaching I also hosted a Coderetreat and a RailsBridge. After each of these we saw a slight bump in attendance. But the more powerful effect was that it created an infectious attitude about teaching. As a group we decided to add 15 minute lightning talks to our meeting agendas where the topics were geared to beginners. We always tried to record these talks and put them online to maximize our outreach.

I’m happy to report that a year later our average RSVPs for the past 12 months has been roughly around 13 with one month peaking at 20. We’ve revamped our website and our doing a fundraiser (only 8 hours left !) to help cover our costs as well as those of out of town speakers.

The Future

My most immediate goal is to continue to welcome new members. I’d like to get that average up a couple more and it is clear the only way to do that is to continue educating. We’re going to start having weekly hack nights for people to learn more from one another.

Long term wise I envision us becoming more of a polygot group. Even though we’re in a smaller area there have been a ton of other user groups that have come and gone. I want those people to feel like they could come join us regardless of the languages or frameworks they work with because we could learn a ton from them. Hopefully with enough growth I’ll eventually be able to train my replacement. :)

We’re All Impostors

I love the title of this post so much. Its a quote from Avdi on the Ruby Rogues’ Impostor Syndrome episode from several months back. Its so powerful on multiple levels. For one its an acknowledgement from a prominent figure in our community (writer, podcaster, conference speaker and generally awesome guy) that he too suffers from impostor syndrome. Secondly it alludes the fact
that we all suffer from it on some sort of level. The problem is that we just don’t talk about it.

Hello everyone, my name is Ryan and I’m an impostor.

I’ve been out of the game for a couple months. Nothing catastrophic, I just took some time to take care of my family. To help warm up to coding again I’ve been doing some open source contributions and working through (its awesome, go sign up right now). Just today I was working through one of the exercises and it struck. The little voice in my head started to say things like “don’t submit this, people are going to think you’re an idiot”. I froze, I walked away from the computer, and immediately went to the living room and started watching television. My avoidance mechanism was kicking in and I felt like an impostor.

What is this all about? For me its this deep fear of not being accepted. I know for a lot of others its a deep fear of looking dumb. Maybe as developers part of the way we’re wired just makes us naturally susceptible to it. I mean we spend our days telling our computers how things should be done and maybe that just leaks out into our interpersonal relationships as well. Maybe this just makes us elitists on some level: “Hey my brain is bigger than yours”.

I’m not really sure what the solution is or even if there is one. What I use to cope with it will definitely not work for someone else. But I do know it made me feel a whole lot better when I heard other people I respected acknowledging it.

A wise man once told me that we are all on our own journeys. We’re all at different at stops on the journey but what connects us all is that we share similar experiences, passions, and even pains. Lets just try and be a little vulnerable and open up about our personal pains.