Category Archives: Freelancing

Why vertical positioning for freelance programmers is hard

Around 2011 or 2012, when I first started out as a freelance programmer, I had what I thought was a brilliant idea Rather than working as a generalist programmer, I should specialize in some industry. For whatever reason, the industry I picked was the real estate industry.

I put a fair amount of effort into the endeavor but it never worked out. I specifically recall having a lunch meeting with some old man who used to work as a real estate agent or something. The meeting felt forced. I didn’t know what we were there to talk about and neither did he. We didn’t uncover any way for us to help each other. I remember having at least a couple interactions like that.

Now, in 2018, I’m noticing as I hang out in various freelancing “watering holes” that a lot of programmers are developing the same idea that I did, that if they specialize in some particular industry (aka vertical specialization), it will lift their freelancing career to a new level of success.

There’s no evidence that this works

Before I move on I just want to say that I’ve never seen any evidence that vertical specialization works. That’s actually a little imprecise. What I mean is that I’ve never seen the following happen:

  1. A programmer (not a designer or copywriter) starts off as a generalist
  2. The programmer decides to develop a vertical specialization
  3. The programmer successfully develops a vertical specialization

What I have seen is non-programmers who have specialized vertically. I’ve also seen one example – only one – of a programmer who inadvertently stumbled into a vertical specialty with success. But there was no reproducible methodology to his case, it was just happenstance.

The reasons why vertical specialization for programmers doesn’t make sense

Reason 1: the bottleneck isn’t domain knowledge, it’s programming skill

It’s of course a very well-known fact that good programmers are hard to find. Not everyone is smart enough to become a good programmer, and even for someone super smart, it takes years to gain enough experience to be really good. Talk to any recruiter and you’ll find that they agree wholeheartedly with the statement that “everybody good is already taken”. The skill of programming is extremely scarce.

The scarcity of the skill of programming means that for any programmer job opening, the bottleneck is in the programming knowledge, not the domain knowledge. I’ve never been turned down for a job by someone saying, “Well, Jason, you look like a great Rails developer but I’m afraid we need someone with more solar power experience.” The employer always assumed the programmer has no domain-specific experience and is always comfortable training the programmer in the domain.

Just to throw things into as stark contrast as possible, imagine the opposite scenario: a solar power company hiring someone as a programmer who knows all about solar power but nothing about programming. Obviously this new hire wouldn’t be able to start being productive nearly as quickly as the programmer who doesn’t know anything about solar power.

Compare this with, say, copywriting. With copywriting, the bottleneck isn’t English composition. The copywriter’s level of knowledge makes a huge difference. If I have a nutritional supplement business and I have the choice between hiring a generalist copywriter and a copywriter who works exclusively with nutritional supplements, I’m going to want to choose the latter. If I’m going to hire a programmer for that nutritional supplement business, the programming skill is so much more important than the nutritional supplement knowledge that I wouldn’t even care about the nutritional supplement knowledge. How much help could that knowledge really be?

Reason 2: automation

The other reason vertical specialization doesn’t make sense is that for the most part programmers don’t provide a repetitive service.

If I’m a designer, it might make sense for me to specialize in designing websites for hotels. All hotels websites probably have roughly the same goal, presumably: to get as many bookings as possible. If I’m a designer, I can get really good at designing websites that serve that business goal of increasing bookings because I apply the same service over and over.

The same is not the case with a programmer. There’s not really a project-based service I could offer to hotels. I could offer the same service as the designer – optimizing the site to increase bookings – but then I’m no longer bringing to bear my years of experience in, say, Ruby on Rails programming. Now I’m working with WordPress sites, and I’m not doing programming, I’m doing design work and marketing work. That’s not necessarily a bad thing but it means I’m starting over with my career. I’m not niching my service down to an industry, I’m staring a whole new career that requires a totally different skillset and throwing out all my valuable prior experience.

There are two programming-related services I know of that are repetitive. Those services are training and code reviews. I myself have been paid to do both. I know others who have made a very good living from training. Maybe it would even make sense to combine training with a vertical positioning (“I train programmers how to build restaurant booking applications”) but I’ve never seen an example of this.

Don’t believe advice without examples

If you’re a freelance programmer, I would advise you: don’t believe advice when there are no examples of others successfully carrying out that advice. If the person suggesting the thing has never done the thing, that’s a red flag. If the person suggesting the thing can’t even produce a single example of success, that’s a really big red flag. Don’t accept advice uncritically. Be empirical.

How I’ve gotten my best freelancing/consulting clients

Good role models are hard to find

I’ve found it very hard to find success as a freelance programmer. One of the things that makes it so hard to be successful is that there are so few freelance programmers out there who have achieved what I would consider success.

What do I consider success? If I’ve managed to create an income or lifestyle that’s substantially better than what I would be able to have at a regular job, then that’s success. (To quantify this, I would not consider $150K/year working 40 hours a week to be freelancing success. You can get that at a regular job. Something like $300K/year for 20 hours a week with a lot of vacations would be more like it.)

Alan Weiss wrote, IIRC, that his ideal client would pay him $5 million a year for 15 minutes of work. Me and Alan Weiss are on the same page as far as what success means.

The sad fate of most freelance programmers

In my observation most freelance programmers end up in one of the following three scenarios:

  1. Give up on freelancing and get a job
  2. “Succeed” by managing to pay the bills but with no lifestyle or income gain over a regular job. (Most technical “freelancers” and “consultants” are just full-time contractors, effectively employees who happen to be paid hourly instead of salary.)
  3. Actually achieve the dream of creating an abundant income and exceptional lifestyle

This list is in order of most common to least common. Scenario 1, “give up”, probably accounts for the ultimate fate of 75% of freelance programmers. Scenario 2, pseudo-success, probably accounts for almost all the rest. If I had to guess, I would guess that fewer than 1% of freelance programmers actually achieve #3.

There’s also the career path of building an agency. I’m personally not interested in that path. My goals are to make a lot of money and have a low level of stress. I judge agency ownership to be a poor bet for both those objectives relative to other available options.

What the successful technical consultants do

Over the years I’ve been able to discover a small handful of technical consultants who seem to have built a good career for themselves. They are:

There might be one or two that I’m forgetting. But in seven years of freelancing, the number of freelance programmers I’ve encountered who I’d gladly switch places with is pretty much fully contained in the above list. I think this is very important to understand. There aren’t a lot of successful freelance programmers out there.

(By the way, I have to mention Matt Inglot because he’s one of my favorite people in the world and gives a lot of great freelancing advice. He personally went the agency route though and I’m focusing on solo consultants in this list.)

Why would I gladly switch places with the people on the above list? Because I understand them to be making a lot of money and to have a decent lifestyle. For example, in a post called The Prosperous Software Consultant, my friend Nader Dabit claims to have made between $200K and $400K for four years straight, from Mississippi. I believe Ryan Waggoner makes no secret of his claim (a claim I believe) that he has earned $250K/year freelancing while working about 20 hours a week. I understand others on the list to be doing similarly well or better, although I don’t want to publicly share numbers without permission.

So, these people earn hundreds of thousands a year. How do they make their money?

Here’s a list. What follows is just my understanding and isn’t necessarily completely accurate.

Person Income source(s)
Reuven Lerner Training
Wes Bos Training, product sales
Todd Motto Training, product sales, development
Ryan Waggoner Development
Jonathan Stark Training, consulting, development
Nader Dabit Training, development
Alain Chautard Training, consulting, development
Mike Julian Consulting
Corey Quinn Consulting

By the way, when I say “consulting”, I mean getting paid purely for providing counsel, not implementation. A lot of people refer to writing code as consulting, but I don’t define that term that way.

The other question, after “how do these people make money?” is “how do they get their work?”

How successful consultants get their work

My understanding is that successful technical consultants get their work via the following marketing tactics:

  • Conference talks
  • Local user group talks
  • Podcast hosting/guesting
  • Blog posts
  • Self-published books/ebooks
  • “Real” technical books with reputable publishers

These tactics have varying degrees of effectiveness. Writing a technical book for a publisher carries with it a lot more weight than just writing a few blog posts on the topic, for example.

How I’ve implemented the tactics I’ve observed in successful people

In the last few years I’ve done the following:

In my experience the benefits from each of these activities come obliquely.

I used to imagine that if I were to speak at a conference, someone in the audience would come up to me afterward and ask me to work for them. I think that happens sometimes but I think a different scenario plays out most of the time.

Last month I spoke at Little Rock Tech Fest in Little Rock, Arkansas. They had a speakers’ dinner where I ran into one of the other speakers who, in a crazy coincidence, I had actually met before in Michigan. He and I had a chance to hang out at the conference and deepen our relationship. One of the other speakers worked for CircleCI. I invited him onto my podcast and he said yes. In another crazy coincidence, I ran into someone at Little Rock Tech Fest who I had met at Double Your Freelancing Conference in Virginia in 2015. She actually had a project lead for me. So I didn’t meet any actual prospects at this conference but I met people who could introduce me to prospects.

Pretty much all my speaking and writing has been on the topic of Rails testing. Just how it happened when I wrote Angular for Rails Developers and became known in my network as “the Angular/Rails guy”, I’m now becoming known as “the Rails testing guy”.

A week or two ago someone in my network approached me about giving a paid talk inside their company on the topic of Rails testing. As far as I know, this person isn’t a subscriber to my email list. I doubt he actually consumes the content I create. I’m guessing he just became kind of peripherally aware of the work I do. Because I put out so much Rails testing material, I’m perceived as a Rails testing expert (whether I claim to be or not) and it generates leads. I understand this happens with book authors as well. Clients hire the author for consulting projects because of the author’s book, even if the client never cracked open the book.

Empiricism is key

I hope you’ve noticed throughout this post that I’ve tried to be ruthlessly empirical. I’m not asking myself, “What do the freelancing gurus saying I should be doing?” I’m asking, “What are successful technical consultants actually doing?”

There’s a lot of bullshit freelancing advice out there. Some freelancing advice is bad simply because the advice-giver is (wittingly or unwittingly) full of shit. The advice-giver means well but he or she sells some untested theory that sounds for all the world to everyone like it’s a great idea, but in practice, doesn’t actually work.

Other freelancing advice is bad not because the advice is actually wrong, but because it’s the right advice applied to the wrong person. For example, I often read advice to go to Chamber of Commerce or BNI meetings. That advice might work plenty well for someone selling auto insurance or even brochureware websites. That tactic will not work for someone like me, trying to sell Ruby on Rails testing services.

I’m a beginner

Speaking of bad advice, I don’t want to add to the problem and give bad advice myself.

So let me be clear that I’m a beginner in the skill of getting good clients. But in the spirit of being empirical, I can share a couple of the successes I’ve had.

A couple years ago a local friend of mine introduced me to a prospective client who needed an instructor for a bootcamp. Me and the prospect made a deal and continue to work together this day. It’s been one of my most enjoyable and most lucrative consulting engagements ever. I attribute this success to the fact that I had developed a reputation in my local community as a speaker. Because I regularly gave tech talks at local user group meetings, I became known as a knowledgeable developer and teacher. I also met a lot of people that way. One of the people I met was the person who introduced me to this client. So the takeaway: speaking works. (Caveat: aside from that one ideal lead, speaking at local user groups has not led to any other client engagements of nearly equal quality.)

About a year ago I wrote a few blog posts on how to get Rails set up on AWS. A couple months ago someone contacted me who was trying to follow my tutorial. He didn’t have a background as a developer. Ultimately he just hired me to build his project for him. This has also turned out to be one of my most enjoyable and lucrative client engagements ever. My takeaway from this: writing works. (Caveat: again, aside from this client, I can’t recall any other clients who have found me this way.)

The last example I’ll give is a recent scenario where I was looking for a job. I announced on my podcast that I was looking for a job. I said the same thing to my email list of a few hundred people. As a result, a number of people wrote to me and invited me to apply to work where they worked. This resulted in a number of actual interviews. I ended up calling off my job search but it was an interesting demonstration of the power of having built an audience. I imagine that if and when I do the same thing saying I’m looking for consulting work, the effect will be similar. Charles Max Wood has told me that on the occasions he has announced on the Ruby Rogues podcast that he was looking for work, people would always respond.

The takeways

I might characterize the takeaways from this post as:

  • When studying what works and what doesn’t for getting new clients, be empirical
  • Speaking and writing are good ways of attracting clients – but not all speaking and writing channels are equally effective
  • Building an audience and getting prospective clients to knock on your door is much better than going around and knocking on prospective clients’ doors. In my experience the prospect conversations are generated obliquely. I don’t attract the clients themselves, I attract people who are connected to the prospects and introduce me later.

The Freelancer-Consultant Spectrum

In the freelance programming world you’ll often hear terms like “freelancer”, “contractor”, “consultant” and even “freelance consultant”. I’d like to help put some clarity around a) what these terms mean to different people and b) what the real work is that most freelance programmers are doing.

First let me say that there’s basically no consensus as to what “freelancer” or “consultant” mean. People have abused these terms (especially “consultant”) to the point where they have no real meaning.

I want to share my personal definitions of these terms. I consider a freelancer and a consultant to exist at opposite ends of a Freelancer-Consultant Spectrum, or more precisely what I’d call an Employee-Consultant Spectrum.

I don’t necessarily see any particular self-employed programmer as being either a freelancer or consultant. There exists a large gray area in between the two.

At one end of the spectrum you have an employee: order-taker, implementer. At the other end you have a consultant: trusted expert. Probably about 95% programmers who call themselves “consultants” are really just contractors.

A contractor has much in common with an employee:

  • Work at client’s office
  • Attend client’s meetings
  • Work right alongside client’s other programmers
  • Seen as basically interchangeable with W2 employees
  • Get paid about the same as client’s employees (but hourly 1099 instead of W2 salary)

I see Freelancer/Contractor as being just one small notch from Employee. Here’s how I’d compare Employee, Freelancer/Contractor with Consultant.

Employee Freelancer/Contractor Consultant
Status Implementer/order-taker/peon Implementer/order-taker/peon Trusted expert
Perceived value provided Bandwidth (more features/bugs addressed) Bandwidth (more features/bugs addressed) Counsel (save/make money for business)
Pay Market rate Market rate Proportionate to value delivered
Labor intensity Large quantity of difficult work Large quantity of difficult work Small quantity of easy work
Presence Onsite or remote, ~40 hours Onsite or remote, ~40 hours Infinitely flexible

Notice how the Employee and Freelancer/Contractor columns match 1:1. That’s because a contractor is, for all intents and purposes, an employee. And when you hear all these stories about freelance programmers and imagine their kick-ass lifestyle, 95% of these people are really just glorified employees.

There are of course exceptions. Not all contractors are seen as peons. At the same time, not all employees are seen as peons, either.

I mention all this because when I first started freelancing I had some vague idea of what freelancing was like for other programmers and what freelancing would be like for me. Slowly, over the years, it was revealed to me that almost nobody has a great lifestyle as a freelancer. The people who really have it figured out are few and far between.

The way to move away from the Employee end of the spectrum toward the Consultant end of the spectrum is very difficult, especially for programmers (as opposed to e.g. marketers). The successful model I’ve seen is when a programmer becomes known as an expert in one narrow area of technology. Here are some examples:

As far as I understand, these guys make my by selling services other than programming. Instead, they transfer know-how from their brains to yours. The way they get clients is that they have books, courses, podcasts, blog posts, etc. that attract prospective clients to them. They don’t troll craigslist for contract job postings.

I don’t have all this stuff figured out yet but I wanted to help share step zero of getting from freelancer to consultant: realizing that most programmer consultants really aren’t, and knowing what the very few who became successful consultants are and what they did.

2017 Review and 2018 Goals and Plans

2017 was an interesting year for me. One of the biggest differences between 2017 and my previous years of freelancing is that for about five months of the year I did very little development work and instead did corporate training as my main source of income. I had decided to get into training because I’ve never enjoyed sitting in front of a screen all day and training seemed like a good opportunity to try a different kind of work. Unfortunately, I had a hard time making training work out business-wise. I’ll recount my year in chunks.

January and February

In September 2016 started working with a long-term development client. The people involved with the project were good but the codebase was ghastly. Around December 2016 I told my client that I would only be available through the end of February 2017 because I wanted to stop doing development work and start doing training work. The reasons why I was motivated to start doing training work mainly revolve around the fact that in my experience software projects are generally high-stress affairs where everything is always “behind” and nobody’s happy. I heard a podcast episode about how training work is different and thought it sounded like a good fit for my personality.

In February I did my first corporate training gig. It was a 5-day Ruby on Rails class that took place in Vancouver, Washington. Due to a number of factors the class was a total disaster. I think the biggest factor was my own inexperience. These kinds of classes tend to receive numerical evaluations at the end. This one got something like a 3.3/5. It may not be obvious but 3.3/5 is very bad by corporate training standards.

I had also been working on Angular on Rails at this point, a business I started in the spring of 2016. In January and February Angular on Rails made $371 and $449, respectively. You can see the full income report here.

March, April and May

About a week or two after I taught the Vancouver class I was sent to Sofia, Bulgaria by the same training company that had sent me to Vancouver. This time it was a 3-day Angular 2 class. I had spent the time between the Vancouver class and the Sofia class frantically preparing for the Sofia class because I didn’t feel like I could afford to get another bad evaluation. I barely slept at all during the 3-day period when I taught the class. Fortunately, all my hard work paid off and I got (IIRC) a 4.5/5 eval for the Sofia class. I celebrated this success by getting drunk at a bar with a bunch of European strangers.

I returned from Bulgaria on March 11th. I don’t recall having done much work in the month of March. My wife and I went on a vacation to Savannah, Georgia later in March. In mid-April I went to MicroConf. I believe this was the first year that MicroConf was split into two parts, “Starter” and “Growth”. I understand Growth is for people who are already full-time on their business and Starter is for people who haven’t yet gotten to that point. I went to Starter because at that time Angular on Rails was only making a few hundred bucks a month (and, as of December 2017, still is). Starter was okay but it lacked the magic I experienced at MicroConf 2016. For 2018 I bought a ticket to Growth.

I think I spent the rest of April working on Angular on Rails and preparing for a class I was due to teach mid-May.

In early May I taught a one-day corporate class in Phoenix. It went great but I learned that one-day classes aren’t really worth it. From May 15-19 I taught a 5-day class in Detroit. This class was one of the funnest ones I had done so far, and everything went great as far as I could tell. Teaching this class really helped cement how different teaching is from programming. Teaching this class was way more fulfilling than any software project I had ever worked on. At the same time this class had been pretty draining. I remember thinking on Friday afternoon, “I don’t want to do this again for a LOOONG time!” Unfortunately I had to get on a plane the next morning to fly to Amsterdam to teach another class.

The Amsterdam class was good but weird. I was sent there by a shady Indian company who lied to the students about my background. (They said I had 15 years of experience with JavaScript frameworks like Angular, despite the fact that JavaScript frameworks have not existed that long. They also said that the “original” instructor could not make it due to a family emergency, also untrue.) Content-wise, the Amsterdam class went well and I got good evals. By this time I felt like I had pretty much gotten a handle on how to teach a good class.

While I was in Amsterdam I had a conversation with a new (US-based) development client. My memory is that this whole time I had been looking for another development client, but out of the several strong-looking prospects I had had, nothing had came through. It was actually really surprising. I had been getting nervous because I wasn’t earning anything between classes, and I was only teaching an average of maybe two classes per month. I think my income was less than half of what it normally would have been had I just been doing hourly coding work. Luckily, things worked out with this new prospect. I got back from Amsterdam on May 25th and started working with my new client the following Monday.

Angular on Rails was still going this whole time. In March, April and May it made $352, $735 and $480, respectively. I had thought I was on the upswing in April when I made $735. I thought my pricing changes and some other things I did were what had made my revenue go up. But apparently it was just luck. Revenue has never reached that level since. It was around this time that I did an interview on Indie Hackers.

Around April or May I decided to make one of the dumbest financial decisions I’ve ever made and buy an almost-new car. I bought a 2015 Subaru Outback. I don’t even know why I bought it because I don’t even like it that much. Whoops.

June and July

For the five weeks spanning June 12th to July 14th I taught a coding bootcamp in Detroit. This was a pretty stressful time. I was away from my family. I was continuing to run out of money. I was fairly consumed by teaching the class but I was also trying to work for my new development client nights and weekends to get some income coming in again. But as far as I can tell, the class went great. This is a class that happens every year and I was invited to teach it again in 2018.

This was also around the time I started considering pumping the brakes on the training work and going back to coding. Most of the training gigs I was doing were through training companies. Actually, most of my gigs were through just one single training company. The rates a person can get through a training company are not nearly as good as what you can get for direct gigs. The 5-day classes were lucrative enough to make the travel worth it but the 1-day, 2-day and 3-day classes pretty much weren’t. The travel was also hard on my family. I remember one Sunday when I told my four year-old son it was time for me to leave and spend another week in Detroit, he started bawling. Not just crying but bawling. That really tugged at the heartstrings. Experiences like that helped me realize that if I were going to do training for a career, I’d have to figure out a way to make my income from just one or two classes a month so I could make up for my absence during the time I was home. Unfortunately, when I looked at the numbers from the training I did in 2017, the math didn’t really work out. I think it was in late July when I decided to go back to contracting full-time.

Then, on Monday, July 17, the first business day after my five-week bootcamp ended, I got a call from my new development client saying he had decided to shut down his business. I thought I was going to have a somewhat steady income but now that was gone. My financial prospects at this point were comically dismal.

Luckily, I had lined up one last training gig. This was a two-day class in Palo Alto. I actually got on the plane the day after my main development client went out of business. I decided that I’d take advantage of the fact that I was in Silicon Valley and try to line up some in-person meetings with prospects. I shook the trees and was in fact able to line up two in-person meetings. One of the two prospects said they’d like to work together and we started working together pretty much immediately. I’m still working with them today. It’s full-time contracting which means it’s basically a job. I’m fine with that, though. After the rollercoaster that was February to July 2017 I was ready to just be a pair of hands and earn a steady paycheck for a while.

Sometime in June, I believe, I decided to stop working on Angular on Rails and start something new. Part of the reason was that Angular on Rails only made $185 in June and that was really a kick in the balls. Revenue was going down despite my efforts to make it go up. I also was never a huge fan of Angular. My interest in it was kind of mercenary.

After I back-burnered Angular on Rails I spent a few months trying out different product business ideas and flailing wildly. I was frustrated that after eight years of trying to build a successful product business I was basically back to square one and I didn’t know how to move forward. It was a painful time.

In November I started a new venture called Six Figure Coding. The idea is to teach job search skills to developers. Within nine days of creating Six Figure Coding I made $152 in revenue. Presently I’m working on an ebook which I plan to launch on February 6th, 2018.

August to December

Business-wise, not a lot of noteworthy things happened from August to December. Except for a few hundred bucks of product revenue, all my income has come from my main development client. I expect that it will be this way for quite a while, although I do expect product income to grow over time.

Reflections on the year

I learned a lot in 2017 about what works and what doesn’t work and why. I’m glad I tried training even though it ultimately didn’t work out the way I had hoped. If I hadn’t tried it I would have always wondered if I had left some huge opportunity untapped. Now I know what training is like.

By the way, I did learn how to theoretically make training sufficiently lucrative. I’ve noticed that the trainers who get the direct gigs (as opposed to gigs through a training company) tend to be people who have written published books or who have built a really strong online presence. So if I wanted to write a published book, I understand that I could expect to attract clients who want me to do training for them. I actually started to go down this path. I talked with Prag Prog about writing an Angular book and they were interested. Unfortunately, I decided that I really just didn’t have it in me to write an Angular book. I frankly think most of this single-page application stuff is a little on the bonkers side and I would have a hard time writing a whole book about something I believe to be crazy and unnecessary. Plus, if I’m going to spend a whole bunch of time putting effort into some extra thing, I think I’d rather put that effort into building  a product business since my ultimate goal is not to be a trainer, it’s to be a product entrepreneur.

2017 was my second-best year ever for product revenue and best year ever for service revenue. In 2016 I made about $4,800 from Angular on Rails. In 2017 it was about $4,300. This might sound crazy but my goal is to earn $100K in product income in 2018. I honestly think this goal is realistic given everything I’ve learned about entrepreneurship over the last eight years or so.

 

I’m going to ask myself a couple questions that I’m borrowing from my friend Kai Davis (thanks, Kai) as well as a couple questions of my own.

What went well this year in my personal life? In 2017 I honestly didn’t have much of a personal life. I spent too much time working. But there are a few things that did go well. I took my wife on a vacation to Savannah, Georgia (with no kids!) which is a place she had wanted to visit for a long time. We took a family vacation to Asheville, North Carolina which was really fun. I got my wife a dog. I got to visit two new countries, Bulgaria and the Netherlands. I met some cool and interesting people in the course of teaching classes. I recorded a couple new songs that I’m pretty happy with, although they’re not finished yet.

What went well this year in my professional life? Like I mentioned above, it was my overall highest-income year ever and my second-best year for product revenue. I learned a lot about what works and doesn’t work in freelancing/consulting. I appeared on two podcasts. I started a new product business which only took nine days to earn over $100 in revenue.

What didn’t go well this year in my personal life? I didn’t spend nearly as much time with family and friends as I would have liked. My personal life was almost nonexistent. I also would like to have spent more time on hobbies, especially playing music and reading.

What didn’t go well this year in my professional life? 2017 was too much of a financial rollercoaster. I started the year with a lot of money, then gradually ran out of money as my spending exceeded my income. I spent about five months focused on training (March to July) and seven months doing contracting (January, February and August-December). Gluing myself to the desk all day every day has always been a struggle for me, and so the months I’ve spent contracting have been really unenjoyable. So something that didn’t go well is that I spent a lot of time doing things I didn’t want to do.

2018

My top goal for 2018 is to escape contracting and go full-time on my new product business, Six Figure Coding. This has in fact been a career goal of mine since around 2008. I finally feel like it’s realistic. I’ve learned a lot about entrepreneurship in the last ten years and I think I learned more in 2016-2017 than any previous period. I truly believe that if I apply everything I’ve learned to Six Figure Coding, it will be successful.

Financially, my goal is to earn $100K from Six Figure Coding in 2018. I can imagine it going something like this: $1,000 in revenue for Q1, $9,000 in Q2, $25,000 in Q3, $65,000 in Q4. I can quit contracting when Six Figure Coding reaches a steady ~$10K/month. My dream is to be able to quit contracting in July 2018. My goal is to quit contracting sometime by December 31st, 2018.

I don’t intend to pursue any new training work in 2018. I will be teaching just two classes, one in May and one in June-July, because those two classes still make business sense for me. The rest of the time I plan to just do regular old contracting. 2017 was a year of stumbling and flailing and experimenting. I intend 2018 to be a year of executing on what I know works.

These are my two professional goals for 2018:

I honestly think that’s it for professional goals. If I can hit those two, I don’t give a fuck about anything else (professionally, that is).

Quitting consulting is also as much a personal goal as it is a professional one. Quitting consulting will ostensibly allow me to finally have a social life again as well as pursue various hobbies that I’ve neglected for years.

I do also have some vague personal goals which I need to think about more. Right now my plans for the year look something like this:

January, February, March: contracting
April: Vacation (April 1-8?), contracting
May: MicroConf (April 29-May 2), contracting, training (May 21-25)
June and July: contracting, training (June 11-July 6), contracting
August-December: contracting

Lastly, something else I like to do from time to time is compare where I am now to where I was at this time in previous years.

In December 2016 I was working on a miserable, excruciating contract project. That sucked a bunch although at this point I knew I was going to make the leap to training soon, so I was optimistic. I’m feeling better about life in December 2017 than I was in December 2016 though. Product-wise, Angular on Rails’ revenue had started to peter out in December 2016.

In December 2015 I was working at a miserable full-time job with no end in sight. I actually quit that job in early 2016 with no other work lined up just because I hated it so much. At this time I don’t believe I had any product business going at all. I had recently shut down Snip after five years of effort. This was a pretty dark time professionally.

In December 2014 I was working for Andela and about to go to Nigeria. Andela was only part-time and I had way less work than I needed to make a “normal” income.

In December 2013 I had recently been fired from a job which ended at the end of September 2013. I had tried and failed to get my first substantial freelancing client. I was running out of money but also unwilling to go back to a job. This was one of the worst times ever in my professional history.

People often compare where they are now to where they could potentially be if all their dreams came true. This is often a demoralizing exercise because you’ll never be where you could potentially be. It’s often much more gratifying to compare where you are now with where you were at this time in previous years. As I look back at 2013-2016, I realize that I’ve come an incredible distance since when I started freelancing. I’m looking forward to seeing how December 2018 compares with December 2017.

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.

*November 2018 update: I now understand that I had been mistaken. I now understand market rates through training companies to be more like $1500/day plus expenses.

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