Category Archives: Freelancing

Watch me try to get my first Shopify client

For the last 6 years I’ve done mostly the same kind of freelancing work: web development at $X/hour. When I first started freelancing in 2011 I had some vague idea of the exciting life I was going to live, but I slowly realized that being a freelancer programmer is basically just a glorified job. Or more accurately, that’s true for most freelance programmers most of the time.

Because I intend to eventually to become a millionaire, I’ve been working for years on trying to build a product business. Those efforts date back to about 2008. My first five attempts didn’t make any money. My sixth attempt made something like $5,000 over the course of five years. My seventh attempt made about $8,000 over the course of a year. My entrepreneurial skills have been improving over time.

You could kind of say that my first five entrepreneurial attempts made an average of $0/year each, then my next one made an average of $1,000/year, then my next one made an average of $8,000/year. Now that I’ve gotten some decent entrepreneurial practice, I’m ready to build the business that will make $100,000/year. I’m not yet experienced enough to make a $100,000/year idea appear out of nowhere but I do believe I’m now experienced enough not to mistake a $1,000/year idea for a $100,000/year idea.

I’ve also come to understand that successful product businesses aren’t brainstormed but stumbled upon. So the question I’ve been asking myself has gone from, “How can I come up with a good product idea?” to “How can I put myself in a situation that will cause me to stumble upon a good product opportunity?”

I’ve cycled through a lot of different potential answers to that question. My current idea is that maybe I can get involved in the Shopify world and try to get a product idea to emerge there. How did I pick Shopify? I really don’t know. I just kind of randomly picked it.

My thought is that if I want to stumble upon a good Shopify-related product idea, maybe I can do some Shopify consulting for a while to give me some visibility into that world. In fact, maybe that Shopify consulting can even replace my freelance programming income and provide me with a better lifestyle during the time I’m working on my ultimate goal of build a product business.

The kind of Shopify consulting I’m thinking of doing is to help Shopify store owners build their email lists and make more sales to their existing email subscribers.

I’ve run out of time to write this post (gotta get back to the hourly programming work!) but I plan to share more as I go.

Why most freelancing advice doesn’t apply to programmers most of the time

In the business advice I encounter, I’ve noticed certain ideas coming up again and again:

  • It’s better to sell more stuff to existing clients than to go find new clients
  • Repeat business is a great thing and you should try to get it
  • Referrals are very important
  • Testimonials are very important
  • Charge more

I would consider all this very good advice when applied under certain circumstances. However, it seems to me that the vast majority of freelance programmers are not in the right circumstances to apply most of this advice. Let me explain what I mean.

Consulting vs. contracting

A lot of freelance programmers, including myself, call themselves “consultants”. The word “freelancer” has bad connotations, like somebody who’s between jobs or not fully committed. The word “consultant” sounds more professional. But that doesn’t make a difference in the work that’s being done.

Most “consultants” are really contractors. Specifically, most consultants do staff-augmentation contacting. A business has an employee-shaped hole and I fill that employee-shaped hole. I get plugged into the client’s GitHub account and the client’s issue tracker. I attend all the client’s regular meetings. I work roughly the same schedule as the rest of the client’s development team which consists of full-time employees. I’m paid by the hour. Maybe I’m even required to work exactly 40 hours a week. Maybe the only thing that differentiates me from the client’s employees is that the employees have W-2 paperwork and I have 1099 paperwork.

Hopefully I have more flexibility than that, like maybe I work 20ish hours a week instead of 40 and I have a little schedule autonomy. Maybe I’m paid by the day or week instead of by the hour. But the nature of the relationship is still staff augmentation.

So that’s contracting. Now here’s my definition of consulting. The way I define consulting is that the client has a desired outcome of an engagement and you’re hired to help achieve that outcome. In this case the client doesn’t really care how many hours you spend to achieve the outcome (to an extent of course) or what technologies you use (within certain constraints) or any of the stuff that’s so rigidly dictated within staff-aug-style contracting. In this case hourly billing wouldn’t make sense. The compensation goes by the project.

Now let’s talk about why most freelancing advice doesn’t apply to contract programming.

Why “sell more to existing clients” doesn’t work for contracting

If I’m in a staff-aug relationship with a client, I’ve been strongly pigeonholed into a narrow role. I’m seen as a “coder” and a “geek”. I might even be seen as a “wizard” or a “genius” but, in my opinion, in a negative way because programmers have acquired (perhaps deservedly) a reputation for being interpersonally inept geeks who are myopically focused on technical matters to the exclusion of the more pertinent and important business realities. In my experience this is a very hard perception to shake.

In my experience, business owners and other stakeholders aren’t interested at all in getting business-related input from developers. They’ll almost certainly claim to be interested, and even take time to solicit superficial feedback (“Do you guys like the version of the marketing site design with the blue background or gray background better?”) but they aren’t genuinely interested in the developers’ input on these matters. And frankly, they’re probably right 95% of the time not to be interested, because most developers aren’t qualified to comment on business matters. Programmers have a reputation for not being knowledgeable on business because, most of the time, they really aren’t.

So that’s one problem: there’s a perception that I’m a coding machine and that they should use the coding machine to write code. There’s another problem, too, which is that I’ve already arranged with the client that for $X/hr, the client can give me stuff to do and I’ll do it. Let’s say a client is paying me $100/hr or $4000/week for 40 hours a week. It’s going to be pretty tough then to pitch the client on, for example, flying me to their office to train their staff for a fee of $10,000/week. I’ve already demonstrated to the client that my time is worth $100/hr. Now I want them to pay me $250/hr? It’s a pretty tough sell. And it’s weird to come out of nowhere and offer some additional service. Nobody ever does this (in my experience) and on the few occasions that I’ve tried, it hasn’t worked, and only made me feel stupid for trying.

Now let me explain why selling more to existing clients can work much more easily in a true consulting relationship. Let’s a say a client hires me to deliver a training engagement and, during the training, I notice that a couple students are so inept that they shouldn’t really have been allowed to participate in the class in the first place. I can mention this to the client and offer the additional service (for an additional fee) of helping process the applicants. In this case the “upsell” is very welcome because the amount of additional value I’m proposing to provide probably well exceeds the additional fee I’d require. Plus the client already sees me as someone who’s totally qualified to perform the service and naturally fitting in this role. (By the way, the example I just gave isn’t hypothetical. It’s from a real experience I had.)

Why “repeat business” doesn’t work for contracting

When I’m working in a staff-aug relationship, the work doesn’t really consist of discrete projects for the most part. It’s just a continuous stream of features and bugs, some big and some small. And my performance probably isn’t evaluated on a per-project basis but just the general impression of how I’m doing with this continuous stream of features and bugs. If the client likes me, my reward is more work. My reward is I don’t get fired and I get to keep working with the client for another week or month. The “best” scenario is that the client likes me so much that they never fire me and I get to work there for the rest of my life. A thoughtful person might ask how that’s freelancing and my answer would be that it’s fucking not. It’s a fucking bummer is what it is.

I’ve experience the other kind of repeat business and it’s great. When I’m not doing contracting, I’m doing corporate training or some other kind of teaching. A few weeks ago I went and taught a class for a very large company for whom technical training is a new thing. (I taught this class under a training company I’ll call Company A.) After I taught this class, the end client called Company A and told them they’d like to make them their “premier training partner” and the training company told me they want to use me for future classes. When I heard this, it was such a great feeling. It felt like a big win. I’ve also had other teaching clients use me multiple times and it felt like a huge win in those cases as well. I don’t think I’ve ever felt like I’ve “won” by having a staff-aug client simply not fire me. Again, the idea of “repeat business” for staff-aug clients just doesn’t even really apply.

Why referrals don’t work (very well) for contracting

If I teach a one-week class for a client and the client likes it, that client may refer me to other prospective clients. This in fact has happened to me. The situation is a little different with contracting clients.

Let’s say I’m working with a contracting client and the client absolutely loves me. What the client will want to do, of course, is hang onto me for as long as possible. The client won’t refer me to somebody else. Why would they? They want as much of my bandwidth as they can possibly get. What if we stop working together? Well, if I mention to my now former client that I have some availability again, they’ll probably want to hire me again. Why would they send me to somebody else if they can have me themselves? And of course if we parted ways on bad terms, they probably won’t be singing my praises around the neighborhood. So whether the client liked me or didn’t, I’m probably not getting many referrals from them.

When I get a contracting referral, it’s usually not from a past client but a “co-worker” from a previous client engagement. That’s fine, and in you could even say it’s necessary, but there’s a key weakness to these types of referrals in that it’s not a buyer-to-buyer referral. I’ll explain what I mean shortly.

I’m going to keep using examples from my teaching experience because that’s what I know. If I teach a class for a client, that client probably won’t need/want 100% of my available time extending into the indefinite future, which is what a contracting client would want. The client probably just wants somewhere between a few days and a few weeks of my time. So there’s plenty of room for multiple clients to use me without those clients competing too much for my time. And it’s entirely possible for these referrals to be buyer-to-buyer referrals. This is significant because buyers (that is, the people with the decision-making and check-writing authority to hire me), I believe, trust recommendations from other buyers more than they trust recommendations from their subordinates.

It’s also much more natural for me to ask a training client for referrals than a contracting client. At what point, exactly, would I ask a contracting client for referrals? Again, if the contracting client likes me, they’ll want to keep using me, and if not, they probably won’t want to refer me anyway. I guess the only “referrable” scenario I can think of is if the client likes you but goes out of business or gets a new job.

Why testimonials don’t work that well for contracting

As I mentioned earlier, contracting usually doesn’t consist of a series of distinct projects with measurable outcomes but of a steady stream of features and bugs. Not only is the work typically not of a measurable nature, but the work of any one programmer is often blended together with the work of all the other programmers on the team, making it pretty thoroughly impossible to measure the value of any particular programmer’s contribution. Even if the client loves the shit out of you, the kinds of testimonials the client could provide don’t really match up with the kinds of testimonials a freelancer would want. The kind of testimonials you want are “Jason helped us double the conversion rate on our sales page which immediately doubled revenues.” But the kind of testimonials you can get from contracting clients are more like, “Jason is a rock-solid communicator and I knew I could absolutely trust him to run our development team.” The latter kind of testimonial might make me feel good, and it might even help me get more clients in the future, but it’s more of a “character” testimonial, not a “results” testimonial. And in my experience, contracting testimonials are kind of awkward to get, because when do you get them? The only purpose of a testimonial is to help get a new client. So if I try to get the testimonial while you’re still working with a client, it’s kind of weird because from the client’s perspective what am I doing, am I trying to leave? The other option is I can ask for a client’s testimonial after I tell them I don’t want to work together anymore, which is also weird for obvious reasons. And the last scenario is that the client is the one who ends the relationship, in which case a asking for a testimonial would be weirdest of all. I know I might be overthinking it but that’s the way I look at it.

Testimonials for project-based work, on the other hard, are much more natural. Projects pretty much by definition have a beginning and end. If I teach a one-week class for a client, it’s totally natural for me to have a conversation with the client afterward which includes the solicitation of a testimonial.

Why “charge more” can be hard with contracting

Lastly, it’s very common to hear the advice “charge more”. It’s absolutely true that no matter how much you’re charging, you could be charging more. The reason this is true is that no matter how valuable your services are, you could always make them more valuable. There’s a very important nuance to this truth, though: market rates are real. I’ll explain what I mean.

If you’re charging $25/hr for programming, you absolutely can (and should!) raise your rates to $50/hr. You can even double that again to $100/hr and still get work. But good luck charging $900/hr for programming. There’s a line somewhere. I’ve charged $100/hr for plenty of work in the past, and I’ve even charged as much as $150/hr for emergency work or highly specialized work. But I’ve found that if I want to charge a client something like $150/hr or even $120/hr for regular old staff-aug development work, they’re going to tell me that it’s substantially more than they’re paying any of their other team members and they’re going to want me to explain to them, quite understandably, why they should pay me so much more than anyone else. “Because I’m really good” is not a compelling answer.

I’ve discovered that there seem to be a few particular ways to charge better-than-market rates: 1) do very specialized work that’s not readily available anywhere else, 2) charge a “rush rate” for an emergency, 3) charge by the project and offer a service other than programming. That last point is so important that I made it bold and underlined.

There’s a perception in my experience that coding is coding and that good programmers cost between $50 and $120 per hour. This perception is totally wrong (programmer productivity varies not by a factor of 2X or 3X but by a factor of infinity*X because some programmers are so bad that they provide zero or negative value), but that doesn’t mean that the perception doesn’t have real power with real effects. So I’ve come to believe that if I want to escape market rates for programming, I have to offer a service other than programming. Let me talk about what that has meant for me.

The solution

I’m eternally and intensely interested in how to make more money in less time. I raised my freelance rate over time from $50/hr up to $100/hr and, like I’ve said, even up to $120/hr or $150/hr at times. But I’ve discovered a ceiling just above $100/hr that seems really hard to break through. That’s where that force of the market rate perception comes in. Most clients perceive the top of the range to be around $100/hr. I first bumped up against this ceiling in 2014 when I first started trying, unsuccessfully, to make $150/hr my new “official” rate.

For a couple years I desperately wanted to understand how to break through this ceiling that seemed to exist somewhere between $100/hr and $150/hr. Then, in 2016, I heard a podcast episode about technical training and saw it as the potential answer to my question. I didn’t realize that companies regularly pay up to $5,000 a day or $25,000 a week (or more, apparently!) for technical training. So I made it my business to break into training, and I did it. Technical training has made up most of my income so far in 2017. (I’m writing this is June 2017.) I’ve made roughly as much from training in the first five months of 2017 as I did in the whole year of 2016.

So I wouldn’t say that training is the answer but it’s an least an answer. It has worked pretty well for me so far so my plan at this point is to apply the principle of “double down on what works” and just take the training stuff as far as it will go. I’m not charging $5,000 a day yet but I intend to get there. I understand that some consultants charge thousands or even ten thousands for a single one-hour speech, and since training is a form of speaking I imagine that it might be a good stepping stone to even higher fees. But like I said, my plan for now is just to double down on training and see how far I can take it.

How I got started in training

As is so often the case, I have very little time to write this so I will dash it off as quickly as possible.

I got an email today asking a few questions about training. I’ll answer the questions here in case anyone else asks the same questions in the future.

The first question was about training companies. I wasn’t aware of this situation before, but there exist a ton of technical training companies who act as brokers between technical trainers and the end clients. I heard an episode about training on the Freelancers Show where Reuven Lerner recommended to work through training companies first, then go out on your own later. I would second this recommendation.

Here’s how I identified training companies to work with: I made a list of technologies I thought I could teach, then I googled “[technology name] training” or “[technology name] training company”. My list included Angular, Ruby on Rails, Ruby, JavaScript, HTML, CSS, PHP, MySQL, PostgreSQL…you get the picture.

I checked each training company’s website to make sure they offered a least one class I thought I was qualified to teach. Then I emailed the training company and said (roughly), “Hey, I’m an instructor. I teach X and I see you offer X. Want to talk?” The response rate was insane. I think more than half the companies I reach out to respond.

I also keep an Excel spreadsheet where I keep track of who I’ve contacted, when I contacted them, whether they responded, etc.

It seems that most training companies want to have you do something called a test teach before you’re an officially-vetted instructor with them. I found this process to be surprisingly time-consuming, but if you want the rewards, I guess you have to put in some effort.

Some training companies will provide the actual training material for you and some will expect you to provide your own. They usually use the term “courseware” for the material. Some training companies want your fee in the form of an all-inclusive rate. Other training companies just want your day rate exclusive of expenses. I understand market rate for working with training companies in the US to be about $1000/day plus expenses. I understand market rate for working directly with clients in the US to be $3000/day or $5000/day or more. Training companies tend to have big-name clients. I’ve worked for clients like HP, VMware and Deloitte through training companies.

I’ve noticed a commonality among trainers: they seem to have written a book or at least have a lot of technical writing available online. Some trainers get leads directly via their book or blog posts. This is a great situation but it’s a long-term strategy and the lead flow isn’t very easy to control. It’s a little easier to make your own destiny by proactively reaching out to training companies for gigs, although they of course take a hefty cut. Best of all is probably to proactively reach out directly to end clients, although that’s much easier said than done. If I had to guess, I would guess that training companies have sales teams that directly reach out to Fortune 500 companies and pitch the training companies’ services. They have a lot of overhead so they’re probably not waiting around for someone to call them.

How to meet other freelancers

I saw a question on /r/freelance the other day about how to meet other freelancers. Here’s how I’ve met other freelancers.

Local tech meetups. Grand Rapids has a number of tech meetups including a Ruby meetup, a general web development meetup, and a few others. I only go to the Ruby one and the web development one. At both those meetups I’ve met a number of freelancers.

National conferences. I’ve been to Windy City Rails in Chicago a couple times and met freelancers there. Last September I went to Double Your Freelancing Conference (DYFC) where I met a ton of freelancers. The people I met at DYFC are some of my favorite people I’ve ever met. One thing about national conferences is that due to their cost they tend to filter out people who aren’t very serious about what they’re doing, meaning every single person you meet there is probably pretty serious about what they’re doing.

Jobs and freelance gigs. In the past I’ve tried to keep in touch with my former employers and co-workers after I’ve left jobs. Sometimes these people go freelance later. I’ve also found that the kind of clients who will hire me as a freelancer will also hire other freelance developers. I like to reach out to these people and make it a point to form relationships with them because these relationships can be mutually helpful as time goes on.

Online communities. When I bought Double Your Freelancing Rate I was given access to something called The Freelancer’s Guild, on online forum. This forum has been a good place to ask and answer questions with other freelancers. The other day I reached out to someone I found on /r/freelance and had a Skype with him. Now we have each other in our network. I also run a Slack organization full of freelance developers.

By following influencers. I listen to a number of freelancing podcasts, follow freelancers on Twitter, and occasionally read freelancing blogs. Sometimes I comment on what these people are saying. Sometimes a conversation emerges, and sometimes out of those conversations a relationship develops.

This blog. Just like I sometimes engage with people I follow, there are some people who follow me (inexplicably) and engage with me. This is another way I’ve met people. If you’d like to meet me this way, send me an email at jason@jasonswett.net. I’d love to talk with you.

Million Dollar Consulting

I believe I first read Million Dollar Consulting by Alan Weiss in 2011. I thought it sucked, and I thought most of it didn’t apply to me. I thought it only applied to fancy consultants who worked exclusively for huge companies.

Over the course of the next five years I kept hearing about it, so I decided to give it another look. This time around it seemed like an entirely different book. I was clearly just not ready for its advice the first time I read it. This is a wonderful example of the fact that what you get out of a book depends on more than just what’s in the book. A book’s value equals the book’s information multiplied by who you are at the time. If you gain knowledge or have additional experiences between two readings of the same book, you might see the book in a totally different light. You might grow “hooks” that catch parts of the book you didn’t catch the first time around.

One of the things that stuck out most for me on this reading of Million Dollar Consulting was the importance of relationships as it pertains to getting clients. The author said people don’t go googling for consultants and I think for the most part he’s right. There’s too much trust necessary in hiring a consultant to just find one online and hire him. My understanding is that people like this are usually sought out via referrals. This got me thinking about how to develop good relationships with high-caliber people. One way that I’m doing this now is through my BNI group. I’ve gotten one client via BNI so far, a really good one. Another way I’ve found to form good relationships is by attending conferences.

Another takeaway from the book was the idea of getting strong “conceptual agreement” to a project before presenting the proposal. My understanding of Alan’s sales process is that by the time they get to the proposal/contract, it’s just a formality. They’ve already talked enough about the project by that time that the client is already totally onboard with the project.

I also gained a new term from reading this book that I don’t know how I lived without before, and I don’t know how I missed it the first time. The term is market gravity which in my understanding is how easy it is for you to attract clients. I used to think that the way to smooth out the boom-and-bust cycle of freelancing was to work for a number of clients at a time. I tried working that way for a while and it’s fucking horrible. What I believe now is that it’s best to have one client at a time and to cultivate the ability to quickly and easily spin up a new client engagement at the time your current engagement ends.

I would definitely recommend this book to any freelancer. If it doesn’t seem good the first time around, maybe give it some time and read it again.

How to build a network as a freelance programmer

Relationships are the foundation of business, especially freelancing

Success in most business endeavors is largely dependent on the owner’s ability to build and maintain relationships. Some businesses are more relationship-oriented than others.

Freelance programming is one of those particularly relationship-oriented kinds of businesses. An individual freelance programmer is an owner of a professional services business, similar to how a solo lawyer or solo bookkeeper is the owner of a professional service business.

A professional service business is especially relationship-oriented for two reasons.

The first reason is that a large amount of trust is necessary in order for a client to hire a service professional. My client engagements often cost many tens of thousands of dollars and can last many months or even years. If you’re going to spend that kind of time and money with someone, you’re going to want some very good reasons to believe you can trust the person. It’s obviously a whole different ballgame from buying, say, a bottle of shampoo, which requires very little trust and not much money (unless it’s some of that really good million-dollar-a-bottle shampoo). A person has to trust you in order to hire you.

The second reason a professional service business is particularly relationship-oriented is that the service provider and the client spend so much time interacting. The client and vendor have to like each other, or at least they have to like each other enough not to want to fire each other. If you act like a weirdo idiot dipshit toward your client, they’re probably not going to refer you to many other clients. It’s not enough to hit your deadlines and “do great work” and all that stuff. You have to be a good communicator as well in order to maintain the relationship. In fact, many people have told me that they’d prefer a developer who’s a good communicator and just an okay developer over someone who’s an awesome developer but shitty communicator.  A person has to like working with you in order to refer you.

How jobs get filled

The way jobs get filled and the way freelancing gig get filled is pretty much the same. I’ll just use the word “job” to mean either actual job or freelancing gig.

I think most people are aware that most jobs are filled via referral. This goes back to the trust thing. When a company has a need for, say, a Rails developer, the first thing the boss might do is to think of anyone he personally knows who does Rails work. Then he might ask his employees if they have any friends who do Rails who might want to work there. Then he’ll probably reach out to people outside the company to ask the same question. Only if those things don’t produce satisfactory results will he put up a job posting. So the priority list goes like this:

  1. Developers I know
  2. Developers my employees/co-workers know
  3. Developers who anyone I know knows
  4. Strangers from job boards

Obviously, the amount of “trust juice” is highest at the top of the list and lowest at the bottom. That’s why job board applicants often have to jump through a ton of hoops, but developers who are referred from trusted sources might not even have an interview, not even as a formality.

If you think of groups 1 through 4 above as concentric circles expanding outward from the hiring manager, the aim of your networking is to be in the “developers I know” circle for as many people as possible.

The Networking Snowball

“The Networking Snowball” is something I made up just now. It’s how you can build a network if you’re starting from nothing.

I started freelancing in 2011. I was living in West Michigan after having bounced around the country for a number of years, meaning I didn’t have deep roots anywhere. In addition, I was working on transitioning from PHP to Rails (I move I’ve never regretted), so a lot of my old contacts weren’t terribly valuable because they mostly led to work that wasn’t very interesting to me anymore.

Here’s what I did when I started freelancing, which is what I would recommend to anyone who’s starting out or thinking about making the leap:

  1. See if your current or most recent employer will be your first client
  2. Reach out to all your past employers (at least the ones you liked) and see if they’d want to be your client
  3. Reach out to all your contacts and see if they know anyone who could use your services
  4. Start hitting up the job boards for work

You’ll notice that, like the list of hiring steps from earlier, these steps are in descending order from “highest amount of trust juice” to “lowest amount of trust juice”. Who would be more likely to pay you money to do work for them than the people who are paying you money to do work for them right now? And the next best bet is people who aren’t paying you know, but have happily paid you before.

Going through this list of four steps will provide you with your first paying client which will be the nucleus of your snowball. Even if your current employer wants to be your first client, it’s still a good idea to carry out steps two and three and just let people know what you’re doing. If you announce that you’re now self-employed, but also mention that you’re not available at the moment because your services are so in demand, it will make you all that much more desirable in their eyes.

(By the way, notice how I didn’t say it might provide you with your first paying client. It will. If steps 1 to 3 don’t work, you’ll eventually get work if you diligently the job boards and contact a large number of prospects. It might seem like your efforts are futile and you’re wasting your time, but then at some point everything will hit at once and you’ll get some work. You just have to put in the time and effort.)

As part of building your snowball you should always have a mind for “collecting” people. When you start freelancing, you should spin up a CRM account if you don’t already have one. Begin by putting every professional contact you can think of into your CRM. Then, each time you get a client, put everyone at your client’s company into your CRM who you think could be useful to you in the future. This also goes for people you meet at tech meetups, conferences, and whatever other kinds of networking events you might go to.

If you come across a particularly interesting person while working with a client, especially if it’s a fellow freelancer, ask that person to an off-the-clock one-on-one meeting to get to know each other a little better. If the other person is business-savvy, and especially if the other person is a freelancer, he or she will get what you’re talking about and usually be glad to get together compare notes with you. If the other person is a freelancer, you should ask him or her what would be a good referral, and just how you can help in general. Usually the other person will naturally reciprocate the question.

Here’s the next step of building your Networking Snowball: go through your CRM periodically, maybe once a month, and reach out to everyone who you think it makes sense to reach out to. A question that might come to your mind is, “What do I say?” Good question. I like to reach out only to business owners or salespeople and ask, “Is there any way I can be helpful to you right now? Are there any intros or referrals you’re looking for at the moment?” People will usually appreciate this offer for help and reciprocate the question. This tactic is a good one to use periodically, but it’s also a good one to use on the occasions when you’re looking for work. You can elicit referrals from people in this way without looking desperate and without looking like you’re only contacting them because you want something out of them.

How to continue your networking self-education

I’ll leave you with a list of good networking books, in no particular oder:

  • Get Clients Now! by C.J. Hayden
  • Endless Referrals by Bog Burg
  • The Go-Giver by Bob Burg
  • Dig Your Well Before You’re Thirsty by Harvey Mackay
  • The Little Black Book of Connections by Jeffrey Gitomer
  • How to Win Friends and Influence People by Dale Carnegie

What to do when the client doesn’t pay

It’s a really bad feeling to put a bunch of time into a project for a client and then get stiffed for the bill. This happens to a lot of freelancers. It has certainly happened to me. It doesn’t happen to me anymore. I’ll tell you why it doesn’t happen to me anymore in a bit, but first let’s talk about what to do when you’ve already been stiffed.

What everyone wants to know is how to recover the money. The unpleasant fact is that if you got stiffed by your client, there’s a really good chance you’re never getting your money. I’m guessing that that’s not the advice you were hoping for. The good news is that you can do something even BETTER than getting your money back (at least over the long run), which is to make sure you never get stiffed again.

In order to understand how to avoid getting stiffed, let’s take a look at the reasons a client might not pay. Here are some:

  • They don’t have the money
  • They’re dicks
  • They’re insane
  • They think you didn’t do what you agreed to do (even though you did)
  • You genuinely didn’t do what you agreed to do, and you actually don’t deserve the money
  • Some combination of the reasons above

Let’s look more closely at each reason and what you can do to combat it.

They don’t have the money

It’s better to work with clients who have a lot of money than clients who don’t have very much money. This statement sounds like a no-brainer but I’m embarrassed to admit how many times I’ve chased after prospects who ultimately turned out not to have very much money.

There are two tactics I use now to avoid working with clients who don’t have much money.

The first tactic is that I require a deposit. The amount doesn’t matter too much; a few hundred bucks is fine. The point is to see how the prospect reacts to the idea of a deposit. If they push back for any reason, that’s a negative signal. I recently “lost” a prospect because when I asked for a deposit he got all in a huff and said he’s NEVER worked with a developer who has required a deposit, and as a result he thought I was “too inexperienced”. How’s that for backwards? Every serious freelancer I know requires a deposit. It’s noobs who don’t require a deposit. I was of course very happy to let my prospect out himself as a bad apple before I invested more time into the conversation.

The second tactic I use is what Perry Marshall calls “racking the shotgun”. In my very first meeting with a prospect, I’ll often say something like this: “I like to start with a small five-thousand dollar project, and then as long as we’re both good after that, we’ll do more work together.” The key here is that the client needs to agree with me that $5,000 is small. If they don’t consider $5,000 to be small, that’s a signal that they probably don’t have very much money.

They’re dicks/they’re insane

I’m lumping these two problems together because they mostly have the same solution, and the solution is simple: the more you work with clients who come from referrals from trusted friends in your network, and the less you work with random weirdos from the internet, the smaller your chances of ending up working with crazies/assholes. This isn’t a 100% fool-proof tactic but it’s something.

You also sometimes end up with crazy clients because you get desperate. This can be solved by having a healthy lead flow, which is a whole other topic unto itself.

And by the way, here are some things I’ve found that are signals of a crazy person:

  • Extremely long emails
  • Talking way too much
  • Extreme frequency of emails/calls/texts
  • Unrealistic expecations
  • Showing up to meetings naked

They think you didn’t do what you agreed to do (even though you did)

If this is the case, I might invite you to abandon your own consciousness for a minute and look at the world through your client’s eyes. Did you lay out your agreement in a way that was 100% clear and complete with absolutely no room for misinterpretation? Did you create some tangible representation of what you were going to do, be it a document, a series of wireframes or mockups, some user stories, or some combination of those?

If the client thinks you didn’t do what you agreed to do, I think there are only two possibilities: a) the client misunderstood because there was too much room for interpretation in your agreement, or b) the client is just not the kind of person who understands plain and simple things. (People like that do exist! The world is full of fucked up weirdos!)

The corresponding solutions to these problems are a) be less ambiguous in your agreements and b) don’t work with clients who are dumb or crazy or whatever.

One of favorite ways to be less ambiguous is to go through a usability testing process with my clients. If you’re unfamiliar with usability testing, I’d recommend the book User Interface Design by Soren Lauesen. Basically the idea is that you let the client help you design what you’re going to build. If the client helps design the work, it’s much less likely that they’ll expect anything much different from what you intend to build.

And as for not working with dumb/crazy clients, it again comes back to having a strong network of people who will refer you good clients, and having good lead flow.

You genuinely didn’t do what you agreed to do, and you actually don’t deserve the money

I don’t think this one requires much explanation. If you fucked up, you shouldn’t take your client’s money.

The take-away

If you’re having problems collecting payments from clients, that’s a symptom of a problem you have further upstream. To avoid getting stiffed by clients, you should:

  • Require a deposit (or even require 100% upfront payment, making it physically impossible to get ripped off)
  • Filter out broke clients by “racking the shotgun”. Toss out a number in early conversations (“projects start at $5K”).
  • Filter out crazy/stupid/mean/whatever clients by building a strong network so you don’t have to resort to job boards
  • Lower the chances of misunderstandings by communicating agreements in a very clear, crisp manner, preferably by allowing the client to be involved in the design process

By the way, I said earlier that if a client doesn’t pay you, your money is probably gone forever. Before you hold a funeral for your invoice you might want to contact Julie Elster who specializes in helping freelancers collect outstanding fees.

The optimal number of clients to have at once

My freelancing boom-and-bust cycle used to look like this: I would get a client, usually one who wanted 40 hours a week, and work with that client for some number of months. During the time we were working together I would be too busy with client work to market myself, so when the client engagement inevitably ended, I would have to scramble to find my next gig. Since I would be desperate, I would often compromise on things like rate, payment terms, weekly workload, “coolness” of the client and other things. So I would end up with a client who was in one or more ways not a very good fit, but I had painted myself into such a corner that I didn’t have much of a choice. The worst compromise is for me to work with a shitty client who I want to get away from as fast as possible, meaning that the client engagement doesn’t result in a permanent relationship (meaning referrals), but that it ends in a “thanks for the business, have a nice life” kind of way.

I used to think that a good way to smooth out this boom-and-bust cycle might be to work for more than one client at a time. Working 20 hours a week for two clients is better than working 40 hours a week for one, right? If one goes away, it’s not the end of the world. I did in fact try out this way of working. At one point I found myself working for eight different clients at once! That was a nightmare.

What I found in practice was that two 20-hour clients adds up to more total work than one 40-hour client. Each client has a certain amount of overhead in terms of both time and in terms of space in your brain. If I juggle multiple clients, I have to make weird decisions about whose work I work on when. I rob Peter to pay Paul. I usually have a “favorite” or a “main” client, with the other client being more of an obligation than a privilege.

What I’ve come to believe is that working for multiple clients at once is not the solution to the boom-and-bust cycle.

What I think is the solution to the boom-and-bust cycle is having what Alan Weiss calls market gravity. I’ve spent the last few years building up a healthy professional network of ever higher quality. Because of this, the last time I wanted to find a new gig (and this time it was not a need but a want, which is of course always preferable), all I had to do was ping my network and I suddenly had a bunch of leads available to me.

So my strategy for security now is not to try to have multiple client engagements in parallel, but to always be forming more and more relationships with people of higher and higher caliber. If a person has enough strong relationships with the right kind of people, I think it’s unlikely that that person will find him- or herself short of work for very long.

If you’re interested in learning more about how to form more and better relationships, you can sign up to get notified of the release of my new book, Business Networking for Freelance Programmers.

Boss Clients vs. Guest Clients

I spent most of 2014 working contracts that were 40 hours a week of billable client work, or some combination of hourly projects that added up to more than 40 hours a week. Most of 2015 was about the same.

I was technically freelancing but I often found myself asking: how is this really different from just having a job?

And I think the answer is that it’s not, at least not in a very meaningful way.

Boss Clients

The story of most of my client engagements goes like this: I scan a job board for someone who’s looking for a Ruby on Rails developer. I send them an email, probably with my resume included. The prospect emails me back and set up a time to talk. We talk over Skype and they ask about my skills and experience. If they like me, we work out the details of our arrangement and they give me access to their codebase and issue tracker, and I get started.

This type of client is evaluating me as an individual. They more or less know what they want. I’m signing the contract they have all their contractors sign. I use their technology stack, their way. They communicate their desires to me and I carry out the work. Compensation is based on time and effort.

I call these clients boss engagements because it’s just a few degrees away from having a regular job.

Guest Clients

There’s another type of engagement that goes like this: I attend a networking meeting, maybe a BNI group. I stand up when it’s my turn to talk and say that I convert tedious and time-consuming Excel-based systems into easy-to-use web applications. A prospect tells me that he uses a lot of Excel, and he’d be curious to hear my thoughts on his situation. We schedule a time to get together, at which point we dig into his situation and see if it matches up with what I do. If it looks like there will be an ROI there, we jointly identify a small initial project to tackle together. The client signs my agreement, gives me a deposit and I get started.

This type of client is evaluating the ROI of a project. They have a high-level business objective but the exact way we get there is not a big concern of theirs. They sign the agreement I have all my clients sign. I use my technology stack, my way. (Maybe I even have someone else do the programming work.) They share their pains with me and I alleviate their pains, my way. Compensation is based on results.

I call these clients guest engagements. I’m making the rules, I’m setting up the system. These clients are just visiting the world I created.

Having guest clients is the key to unlocking higher rates

I believe guest clients are the key, or at least a key, to charging really good rates. In 2014 I tried to raise my rate from $75/hr to $150/hr. I met so much resistance. Eventually I basically gave up on trying to charge $150/hr and did a number of (passenger) engagements at $100/hr. There seems to be some sort of hard psychological wall somewhere between $100/hr and $150/hr where $100/hr is acceptable but $150/hr is shockingly pricey. Frankly, I can understand this, and I don’t blame people for not wanting to pay $150/hr.

Table of differences

Boss Clients Guest Clients
Acquisition method Job boards, referrals Networking events, referrals
Methods used Dictated by client Vendor’s discretion
Work arrangement Usually 40 hours or close Vendor’s discretion
Subcontractable? Almost certainly not Almost always so
Perception of vendor’s role Technician, hired hand Expert and trusted partner
Pricing method Time and effort Results
Pricing anchor Client’s perception of market rates Value of project outcome

Driver vs. Passenger Client Engagements

Note: I’ve since decided that I’m not crazy about the terms I came up with in this post and I wrote a new, slightly modified version, which I think is better.

I spent most of 2014 working contracts that were 40 hours a week of billable client work, or some combination of hourly projects that added up to more than 40 hours a week. Most of 2015 was about the same.

I was technically freelancing but I often found myself asking: how is this really different from just having a job?

And I think the answer is that it’s not, at least not in a very meaningful way.

Passenger Engagements

The story of most of my client engagements goes like this: I scan a job board for someone who’s looking for a Ruby on Rails developer. I send them an email, probably with my resume included. The prospect emails me back and set up a time to talk. We talk over Skype and they ask about my skills and experience. If they like me, we work out the details of our arrangement and they give me access to their codebase and issue tracker, and I get started.

This type of client is evaluating me as an individual. They more or less know what they want. I’m signing the contract they have all their contractors sign. I use their technology stack, their way. They communicate their desires to me and I carry out the work. Compensation is based on time and effort.

I call these engagements passenger engagements because they’re driving and I’m coming along for the ride. There’s of course nothing so wrong with this kind of arrangement.

Driver Engagements

There’s another type of engagement that goes like this: I attend a networking meeting, maybe a BNI group. I stand up when it’s my turn to talk and say that I convert tedious and time-consuming Excel-based systems into easy-to-use web applications. A prospect tells me that he uses a lot of Excel, and he’d be curious to hear my thoughts on his situation. We schedule a time to get together, at which point we dig into his situation and see if it matches up with what I do. If it looks like there will be an ROI there, we jointly identify a small initial project to tackle together. The client signs my agreement, gives me a deposit and I get started.

This type of client is evaluating the ROI of a project. They have a high-level business objective but the exact way we get there is not a big concern of theirs. They sign the agreement I have all my clients sign. I use my technology stack, my way. (Maybe I even have someone else do the programming work.) They share their pains with me and I alleviate their pains, my way. Compensation is based on results.

I call these engagements driver engagements because I’m driving and the client is coming along for the ride. Passenger engagements are okay. Driver engagements are awesome.

Driver engagements unlock higher rates

I believe driver engagements are the key, or at least a key, to charging really good rates. In 2014 I tried to raise my rate from $75/hr to $150/hr. I met so much resistance. Eventually I basically gave up on trying to charge $150/hr and did a number of (passenger) engagements at $100/hr. There seems to be some sort of hard psychological wall somewhere between $100/hr and $150/hr where $100/hr is acceptable but $150/hr is shockingly pricey. Frankly, I can understand this, and I don’t blame people for not wanting to pay $150/hr.

Table of differences

Passenger Engagements Driver Engagements
Acquisition method Job boards, referrals Networking events, referrals
Methods used Dictated by client Vendor’s discretion
Work arrangement Usually 40 hours or close Vendor’s discretion
Subcontractable? Almost certainly not Almost always so
Perception of vendor’s role Technician, hired hand Expert and trusted partner
Pricing method Time and effort Results
Pricing anchor Client’s perception of market rates Value of project outcome