Author Archives: Jason

Entrepreneurship Journal, 12/17/2018

It’s been a very long time since my last Entrepreneurship Journal post. Here’s what I was up to last time:

  • I was about to put on my first paid online workshop
  • I had just given my first- and second-ever conference talks within a short period of time
  • My podcast was going well
  • I was continuing to work with my new client

Here’s what has happened since then:

  • I sold $800 worth of tickets for my workshop
  • I got accepted to my first national-level conference
  • I had some big guests on the podcast
  • I visited my new client in person, and realized over time that our project is a bigger and more important project than I had originally thought
  • I started writing a new book

I’ll discuss each one of these items.

Workshop sales

I sold tickets for my October workshop over two launches. On the first launch I sold 3 tickets which were $50. When I did the second launch I wouldn’t have been surprised if I hadn’t sold any more. But I did sell more, 5 more. I was pretty surprised and happy about that.

The workshop itself went pretty well. It took place over a Saturday and Sunday. Given that it took up my whole weekend, $400 of revenue wasn’t a great return on investment time-wise. That’s not the point, though. Putting on the workshop showed me that the answer to the question “Can I get anybody at all to buy tickets to an online workshop I put on?” is yes. It doesn’t matter that the number was small this time. I can do this again and do a better job of everything.

As a mental exercise, if I double the price to $100 and I’m able to sell 16 tickets next time, that would be a revenue of $1600 instead of $400. Maybe I shift the delivery to be more self-serve and less live time, too, making my effective hourly rate higher. Eventually maybe I could get to the point where it’s almost fully automated and revenue is a few thousand bucks each round. We’ll see.

I’m putting my workshops/courses on the back burner for the time being, though, due to certain other things I need/want to work on instead.

Conference talk

On December 5th I got an email saying my talk proposal to RubyConf India had been accepted. So I’m going to India next month. I’m bringing my wife and kids with me and we’re planning to stay for two weeks.

This will be my first time speaking at a “national level” conference as opposed to a regional conference. It will also be my first Ruby-focused conference. I’m excited to be able to add to my bio that I’ve spoken at RubyConf India. Speaking at a conference like this has also been kind of a goal of mine for a long time. The conference itself happens on January 20-21.

I actually got accepted to another conference as well, PyTennessee in Nashville in February. I don’t know much about this conference yet.

Podcast

I had some relatively big guests on the podcast including Michael Hartl and Ben Orenstein. That was pretty cool.

I also had someone reach out for some Rails testing consulting help, a CTO from a Y Combinator startup. We had a call about it. Somewhat surprisingly, after the call, my prospect said he was going to go with a certain gem instead of seeking outside help for the various problems his team was having with the test suite. My suspicion is that the reality is that he just wasn’t that impressed with our call for whatever reason. Oh well. It’s cool to have generated a consulting lead via the podcast anyway. Hopefully I can expect this sort of thing to continue happening.

Having said that, I plan to take a break from the podcast for the next couple months. I’m getting kind of tired of it and I don’t want to burn out. Preparing my RubyConf India talk and preparing for India travel will take most of my available time and mental bandwidth between now and the end of January.

Consulting client

Things continue to go well with my new (relatively new now) consulting client. I had originally thought the project would only last perhaps a weekend. Then I thought it might last a few months. Now I think it may well last 10 years. I visited my client in person just before Thanksgiving and I was very impressed with him as a person. And I’m not just saying that because I know he might be reading this right now.

Book

Some time ago I decided to write a book. Recently I pulled the trigger. The book will be called Rails Testing for Beginners.

All I’ve done so far is set up the plumbing for the book (I’m using a tool called Softcover) and write a few paragraphs. My decision to write the book came right around the same time my RubyConf India talk got accepted, and things have been kind of crazy since then. Getting everything in order for traveling to India is a surprisingly large amount of work, even though I’ve flown internationally three times before (Nigeria, Bulgaria and the Netherlands).

Plans for the next few months

My plans for the next few months are:

  • Prepare and deliver my RubyConf India talk
  • Ditto for my PyTennessee talk
  • Get a good portion of Rails Testing for Beginners done
  • Continue putting out blog posts and videos the whole time at roughly the usual pace
  • Continue working for my consulting client as normal

That all should be enough to keep me fully busy. Then, perhaps sometime in the spring, I’ll start turning my thoughts back to the podcast and paid workshops. I’ll certainly want to start the podcast back up before I launch my book (it will be a good way to get the word out) but I think I want to wait until after the book launch to start the workshops back up again.

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.

For truth-seeking, empiricism beats reasoning

In my life I’ve observed people at all different degrees of success. When I think of a person being successful or not, what I’m thinking of is the degree to which they’ve achieved the results they want to achieve, whatever kind of results those may be.

There are a number of factors that lead to a person’s ability to accomplish their goals. There’s one big factor that I think might be more important than most of the others: an accurate mental model of reality.

To paraphrase the example from The 7 Habits of Highly Effective People, if I want to navigate around Chicago but I’m looking at a map of Detroit, I’m not going to be able to navigate very effectively.

Same with everything. If I’m trying to build a successful career as a freelance programmer or trying to build an online product business but I have an inaccurate understanding of how the rules of business operate, my success is going to be hindered to the extent that my mental model is inaccurate. (An exception is if I get lucky. Luck requires no understanding.)

There’s a lot of bullshit advice out there. If I uncritically feed all the world’s business advice into my brain, it will be impossible for me to develop an accurate mental map of reality because the body of advice I’ve loaded into my brain won’t be consistent with itself. Somehow I have to figure out what’s true and what’s not true.

This brings me to my next point. There is a such thing as a single truth and a single reality. Two people might have a different opinion on, say, who the most talented Beatle was and there’s no way to say one of them is objectively right or wrong. A lot of people seem to overly apply this same kind of idea to business. “There’s no one single path to success.” “There’s no one right way to do it.” It’s true that there’s no single right way to do many things in business, but some things really do work and other things don’t work. Business isn’t some hocus-pocus field with rules that apply separately from the rules that apply to everything else in the world. There’s one single reality. Our job is to figure out how that single reality works and get on the winning side of that reality.

Everything I’ve said so far has been to lay the groundwork for this: all the reasoning in the world is no match for a little empirical observation.

Some things are simple and small enough that conclusions can be confidently drawn using reason alone. For example, if I hit my toe with a hammer and then notice that my toe hurts, I can safely conclude that hitting my toe with a hammer makes it hurt.

Other things are sufficiently complex that reasoning alone doesn’t work. For example, I once reasoned that if I were to build a hair salon scheduling program that was superior to any existing salon scheduling program (an extraordinarily low bar, at least at the time) then the result would be that people would buy my product. I was WRONG.

What I should have asked was: is there any empirical evidence that this is going to work? Has there ever been a programmer like me who started a business similar to this who had success?

Better yet, I should have zoomed out even further and came at the matter from a more productive direction: for programmers like me (i.e. a bootstrapper with no VC, very little time or money, and a family to support) who wanted to start a successful product business, what did they do? I would have discovered that they did not try to start a SaaS business serving a customer they knew nothing about in an industry where they had no connections and in an industry that hates computers and has very little money and spends extremely little time online.

So, my advice to people out there trying to figure out what will lead to business success and what won’t: place very little confidence in your powers of reasoning. Turn to empirical evidence instead.

Internet Business Advice Baloney Detection Kit

Who this is for

This article is specifically for programmers who do some sort of business online. Some it applies to both product businesses and freelancing, but mostly I’m writing this article with freelance programming in mind.

Background

In his book The Demon-Haunted World: Science as a Candle in the Dark, Carl Sagan describes something he calls a “baloney detection kit“. The baloney detection kit (BDK) is basically a set of mental tools that can be used to apply skepticism to any particular claim or argument.

To share an example, one item in Carl Sagan’s BDK is the fallacious ad hominem argumentative strategy, i.e. attacking the arguer and not the argument. The example from the book of an ad hominem usage is: “The Reverend Dr. Smith is a known Biblical fundamentalist, so her objections to evolution need not be taken seriously.” (There’s no reason why an argument on evolution from a Biblical fundamentalist should not be taken seriously since it’s the argument itself that needs to be evaluated, not the person producing the argument.)

My BDK takes a slightly different form from Carl Sagan’s but the principle is the same: a checklist that you can go through to help determine whether any particular thing is bullshit.

Motivation

In my endeavor over the last ten years (and counting) to create a successful online business I’ve consumed a lot of business advice from books, blog posts, podcasts, etc. I think I can pretty safely say that more than half of the advice was either unhelpful or actively harmful. Sometimes the advice was good advice but it wasn’t the right advice for my particular situation at the time. Sometimes the advice was just plain bad advice.

In recent years I’ve had a somewhat close-up view of certain colleagues, particularly freelance programmers, falling for what I clearly see to be bad advice that will for the most part only waste their time and lead to disappointment. This makes me sad and I want to try to help stop it.

Sometimes I’m even a firsthand witness to the bad advice being given. On those occasions I desperately want to speak up and say, “Wait! That’s bad advice!” but a) I’m not always one hundred percent sure I’m right and b) it would obviously be super uncool for me to meddle in other people’s affairs that way anyway. What I do feel comfortable doing is to provide a framework for detecting bullshit freelancing advice.

Before I start I want to say that it is not my goal to personally attack anyone. If you read this and say, “I bet he’s talking about so-and-so!” Maybe I am, but saying “So-and-so has given bad advice” is different from saying “I think so-and-so sucks as a person.” We all make mistakes and all advice-givers, including me, have at one time given some really bad advice. In no case is my intention to say “Don’t listen to so-and-so,” but “Listen to so-and-so except when they give bad advice.”

The online business advice baloney detection kit: questions to ask yourself about any piece of business advice you encounter

Has the advice-giver actually done the thing he or she is advising on? This to me is the most important question to ask because if the answer is no then it’s highly likely that the advice is bullshit. There do exist advice-givers who give good advice despite not having direct experience doing what they advice (Ramit Sethi comes to mind) but most advice-givers are not nearly as sharp or as honest (with their audiences or with themselves) as Ramit is. And if the answer seems to be yes that the person as done the thing that they’re advising on, go deeper. Did they do the exact thing they’re advising or some variation on it? How significant is the variation?

Does the advice-giver have examples of success? Is there any empirical evidence that this works? If the advice-giver can’t produce at least a handful of people who have successfully followed their advice, then that’s a big red flag. If the advice-giver can’t even produce a single example of success, not even themselves, then that’s a screaming-loud alarm bell. And beware of examples that seem legit but really aren’t. Are the supposed success stories examples of people who followed a certain methodology to get where they are, or did the successes blindly stumble into the success they achieved and the advice-giver is retroactively laying a narrative on top of the story to make it look like the success was a result of the methodology? Also, if you’re a programmer, it matters whether the subject of the success story was a programmer or not. The laws of nature in the world of freelance design are different from the laws of nature in the world of freelance programming.

Are the testimonials instances of actual results or just anticipated results? Here’s a testimonial I found on a real sales page, paraphrased to protect the identity of the author: “This system is great. I know my business is going to change if I follow it!” This testimonial contains no evidence that the system actually works.

Closing

I want to re-emphasize that just because an advice-giver commits the (virtually unavoidable) sin of occasionally giving bad advice doesn’t automatically mean that that person is generally full of shit nor does it mean that I think you should start ignoring that person forever. It just means that that person gives bad advice once in a while. It’s useful to be able to tell which advice is the good and which is the bad.

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.

Entrepreneurship Journal, 10/12/2018

Last time I wrote I mentioned the following things:

  1. I sold 3 Rails testing workshop tickets for $50 each
  2. The Ruby Testing Podcast is doing well
  3. I was about to go do my first conference talk ever

Workshop

I haven’t opened sales back up since the initial launch. I’m doing another launch next week which will be the last launch before the course runs October 27-28.

I also decided to start offering free Rails testing workshops. My thought is that this can serve as a lead magnet and lead people into the paid workshop offerings.

Podcast

Yesterday The Ruby Testing Podcast got featured in Ruby Weekly 420. This resulted in the download spike you see below:

I’m at about 4500 downloads total.

Conferences

About three weeks ago I gave my first conference talk ever at DevOps MidWest in St. Louis. Then, last week, I went to Little Rock and gave my second conference talk ever at Little Rock Tech Fest. Little Rock Tech Fest was a lot bigger.

These speaking experiences were both positive. They gave me the confidence to apply to speak at more conferences.

Consulting

I’m continuing to work for the client who found me on awsrails.com. It looks like I’ll be doing this for at least the next few months as my main gig. This arrangement allows me much more time to work on CodeWithJason.com than my prior contract did.

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.

Entrepreneurship Journal, 9/14/2018

Last time I wrote I described the failed launch of a Ruby testing course I had created. I launched the course to 271 subscribers. When the dust settled I had made exactly one sale for $49. One sale out of 271 subscribers is a 0.37% conversion rate. Not great.

I had said in my last email that I was going to regroup and maybe try launching another product when I had about 500 subscribers. I only have a little over 300 subscribers but I did in fact launch something else. It went a little better this time.

Some time ago, maybe a couple weeks ago, I put up a sales page for a 2-day online Rails testing workshop. I didn’t make it available for sale. I just put a link to get on the waitlist. Six people signed up for the waitlist.

Yesterday, kind of on a whim, I replaced the waitlist link with an actual purchase link and emailed my list, letting them know tickets were available at $50 apiece. Two people bought pretty much immediately and then one other person bought not long after. I’m much happier with this launch than the last one. Three people out of 308 bought, for about a 1% conversion rate. A 1% conversion rate isn’t terrible, especially considering that I didn’t put a whole bunch of time and effort into trying to make this launch really effective.

My plans as of now are:

  1. Have a call with all three Ruby Testing Workshop buyers to understand exactly what their situation is and what kind of help they need
  2. Design the workshop to specifically address the needs of the buyers
  3. Get testimonials from the buyers, maybe even video testimonials
  4. Based on what I learned from this workshop, make my workshop sales page much crisper (my sales page is currently pretty vague because I’m honestly not super sure yet exactly what people want to learn)
  5. Relaunch the improved workshop

I figure if I tailor this workshop to precisely match what these 3 buyers want, there will be more buyers like them. I kind of believe in the idea of finding my “super fans” and then dialing in everything to specifically address them.

I also want to mention that The Ruby Testing Podcast is doing great. Check out the stats.

As of today, September 14th, there have been 827 downloads this month. Based on that I can expect about 1800 downloads by the end of the month for September, about twice what August was. I’m really blown away by the growth. I haven’t been doing anything special to promote the podcast.

I thought it would be a little challenging to get guests but not only has almost every guest I’ve asked said yes, but four people have reached out to me and asked to be a guest. I would actually prefer to spend less time on the podcast and more time writing articles but good guest opportunities keep popping out of the woodwork.

My plan as of now is to stop scheduling new guests so I can spend more time on writing. In my experience so far, writing is what gets subscribers.

In other news I’m speaking at a conference next week, DevOps Midwest in St. Louis. This will be my first conference talk ever. Three weeks later I’m giving my second conference talk ever at Little Rock Tech Fest in Little Rock, AR.

Another interesting thing: a week or so ago somebody found awsrails.com, a site I had put up about a year ago. This was a little after I had decided not to do AngularOnRails.com anymore. I thought maybe AWS + Rails would be my new focus. That exploration didn’t last long. But almost a year later (like 4 days before I was going to let awsrails.com expire and fade into the mists of time forever) somebody found it, contacted me, and asked me to do a project for him. I had to charge a lot in order for it to be worth it to me, but he was okay with that, and now he’s a client. It’s been a good experience so far. Things go so much better when clients find me than when I try to go after them.

Entrepreneurship Journal, 8/16/2018

A lot has happened since my last update on July 2nd. It’s hard to believe it’s only been about a month and a half since then.

I said in my last post that I would launch my Intro to Ruby Testing course on July 23rd. I did in fact do that.

My launch window was 5 days. On the first day I made exactly one sale. Later that day (IIRC) the guy came back and said that he actually didn’t learn anything in the course. I believed him. He was way too advanced for the course. I gave him a refund.

Then the next day or day after, somebody else bought the course. This guy actually seemed to get something out of it. But no more sales after that.

So after all this I made a grand total of $49 in sales. It was pretty disappointing.

But not everything is going badly. Here’s my “new subscriber” report:

I took a break from writing blog posts and stuff for a while, apparently from like April to June. But then in late June I started again and you can see the positive impact on subscribers. I haven’t kept up the blogging for certain reasons but I plan to pick it back up soon.

My total number of subscribers right now is 289. As of my last post on July 2nd it looks like I had 250. I’m pretty happy with that growth rate. It will be nice to get to 300. I think I can do better though.

I’ve been continuing to record The Ruby Testing Podcast. I’ve been able to get some pretty big names on the show. I’m really happy with the way the podcast is going so far.

I have 868 total downloads for the podcast so far. It will be cool to get to 1000.

I’m giving my first-ever conference talk in about a month. The conference is DevOps Midwest in St. Louis, Missouri. You can see my name on the speakers list. That should be pretty cool. I also gave a talk last week at the Chicago Ruby meetup.

Today I canceled my Teachable subscription, which was the platform my Intro to Ruby Testing course was on, and refunded my one sale that hadn’t already been refunded. I’m not sure exactly what I’ll do next. Putting together a course honestly felt pretty unnatural to me. Maybe I’ll do another book this time instead.

Things have been pretty crazy at the “day job”. I don’t really feel like talking about it that much right now but I’ve been learning a lot and expanding professionally.

I believe my focus with CodeWithJason.com for the next few months will to be to grow my subscriber list and build a more cohesive body of work. Maybe once I reach around 500 subscribers I’ll try launching another product.

Entrepreneurship Journal, 7/2/2018

Last time I wrote I said that I was planning to create a tiny, inexpensive Ruby testing course and then launch it to my relatively small subscriber list. Since that time I did in fact start building a course. I actually got maybe about 90% of the way done. But then I decided my course was dumb and confusing so I started over. Now I’m at about the 90% mark with the new version of the course.

I got far enough with the new version of the course that I felt comfortable committing to a launch date. The date I picked is Monday, July 23rd, 2018.

My plans between now and July 23rd are:

  • Finish the course material
  • Finish the course’s sales page (already 95% done)
  • Write several ebombs so I can provide free value before I ask subscribers to buy something
  • Put together an email launch sequence

My plan is that the launch sequence will consist of at least 5 emails, most of which will contain an ebomb or link to an ebomb. The first of the 5 emails will go out on Monday, July 23rd, notifying subscribers that the course is now available for purchase and will be through Friday night. The last email will go out that Friday, letting subscribers know that the course will no longer be available after Friday night. The emails in between will mostly just contain ebombs.

In other news, I finally made it to the round number of 250 subscribers. Here’s what my subscriber graph looks like:

As is labeled in the graph, the big spike is from when I got featured in Ruby Weekly. You can see that my flow of new subscribers really slowed down in mid spring. Part of the reason for the slowdown was that I got sidetracked by other, more pressing work during that period. Another part of the reason is that I chose to stop focusing on ebombs in favor of creating the course material. I also spent a non-trivial amount of time getting my podcast up and running.

The main thing I care about at this point is selling more than $0 worth of the course on my July 23-27 launch. After that we’ll see what happens. If my sales are abysmal, that probably means something is wrong with my offer or the way I did the launch, and I need to address that. If sales are fine, then the logical next step would be to go get more subscribers and then launch again.