Author Archives: Jason

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.

Entrepreneurship Journal, 6/13/2018

This is the longest I’ve gone without posting an Entrepreneurship Journal entry in a while. The last one was almost three months ago.

I’m happy to report that I’ve continued to stick with the same focus, Ruby testing, and I still feel good about it.

As I mentioned in my last post, I finally enrolled in 30×500. It was 30×500 that helped me arrive at my focus of Ruby testing.

At one point I think I asked Amy and Alex in 30×500 how many subscribers I should have before launching my first product. I think had around 225 subscribers at the time. I was wondering whether I should work on getting more subscribers or if I should launch a product to my existing subscribers. The answer I got was that a list my size is big enough to launch a product to. The advice was to launch a tiny product.

So that’s what I’ve been working on. For the last couple weeks I’ve been working on an “Intro to Ruby” course. My intention is for the course to be tiny in scope and for the price to be relatively low.

Also since last time I wrote, I started a podcast called The Ruby Testing Podcast. According to the stats I’ve gotten 131 downloads so far. Seems good, I guess. So far I’ve interviewed two guests. I have one more interview scheduled for July. I’m holding off on scheduling anything more right now because I’m teaching a class through mid-July.

My near-term plans are to finish the course as quickly as possible and then launch it. After that I plan to work on getting more subscribers, improve the course, and sell the course for a higher price. I plan to pretty much repeat that process indefinitely.

Unlimited Memory

I just finished reading Unlimited Memory by Kevin Horsley. I have a hunch it might turn out to be one of the more useful books I’ve ever read. To be more precise, I read most of Unlimited Memory. Some time ago I let go of the idea that I need to read every book word-for-word.

Some years ago I read Moonwalking with Einstein by Joshua Foer. I was inspired to read Moonwalking partly because I’m super absent-minded and I want to not be so absent-minded anymore. For example, one time I drove two and a half hours to Detroit for a work thing and forgot my laptop, so I just had to immediately drive back. Another time I accidentally left my car running overnight.

I found Moonwalking to be somewhat useful although the book format was my least favorite format of book. It was what I call a “journalisty” book. Some books, like The Better Angels of Our Nature by Steven Pinker, are super thick and packed with a huge amount of data (data as opposed to anecdotes). Journalisty books tend to be short and contain anecdotes instead of data – and often specious conclusions. Other books of this format, that a bunch of people love but I don’t, include The Power of Habit and So Good They Can’t Ignore You.

Anyway, my memory from Moonwalking is that I learned from it the memory palace technique. I found that technique pretty useful. I actually haven’t put it to use a whole bunch since because, ironically, I forgot about it.

I also learned from Moonwalking that time passes by more quickly when each day is similar and more slowly when each day is different. I think there was some guy who spent a long time on an isolated island or something and he way underestimated how long he had been there because the days just blended together. This made me think about what a person’s life would seem like if they spent their whole life at the same job in the same town. Life would probably seem like a brief blur.

I found Unlimited Memory to be a better and more useful book than MoonwalkingUnlimited Memory was stylistically kind of amateurish but the content was sufficiently useful that I didn’t care about the style.

Unlimited Memory talked about the memory palace technique and also talked about using things like your car and your body in addition to the insides of buildings. I thought this made sense. I plan to make use of this idea.

The main thing the book discussed that I’m currently interested in is how to memorize numbers. The technique this book suggested was to turn numbers into words. Each number can be represented by a sound, like this:

1: T or D
2: N
3: M
4: R
5: L

…and so on. Vowels are “wildcards”. So the number 43 could be represented as “rum” – R for the 4, M for the 3, and U, which is just a filler. I could have used “rim” or “ram” for 43.

I’m currently using this technique to try to remember all the presidents. I have a quasi-autistic obsession with the presidents. So far I’ve read biographies of George Washington, John Adams, Thomas Jefferson, Abraham Lincoln and Theodore Roosevelt. At one point I thought I would read biographies of all the presidents but later I decided that wouldn’t be the greatest use of time. I’ll just read about the most interesting ones. I just tested myself and I was able to remember the first 12 presidents. The cool thing about the number memory system is that it allows random access. So if you ask me who the 8th president was, I could say Martin Van Buren. Later I expect to use this system to memorize not just the presidents but information of a more practical nature.

Entrepreneurship Journal, 3/22/2018

So I’ve changed my focus for the thousandth time. I’m now exploring the idea of teaching Rails testing.

Let’s review what I’ve explored since roughly this time last year:

  • Angular + Rails
  • Landing page breakdowns
  • AWS + Rails
  • Shopify email marketing
  • Job search skills for programmers
  • Rails testing

Of all the things I’ve tried since ditching Angular/Rails, the job search thing was the most successful. I was able to get about 100 of my Angular/Rails email subscribers to follow me to that topic. I also wrote an ebook on the topic and sold more than zero copies. (I sold four more than zero copies, to be exact.) So why did I decide to move on?

In January I enrolled in 30×500 which was something I had wanted to do for a long time. My approach for going into 30×500 was to be totally neutral and not bring the baggage of any previous ideas or endeavors I’ve had. If going through 30×500 led to the job search focus still making sense, then great. If going through it led to working on something else, great. The important thing is that I come out with something that works.

A big part of the 30×500 process is research. You go to places where people talk about the thing you teach (“watering holes”) and find out what their pains are in order to alleviate their pains.

I decided to do my research at /r/rails, at least for starters, to see what I could turn up. I ended up uncovering a certain amount of pain around TDD/testing, which is something I have a lot of experience with. I’ve been doing Rails testing since 2011. Many of the questions I saw were things I could answer.

I started writing blog posts (“ebombs” in 30×500 language) about Ruby/Rails testing. To my delight and surprise one of my posts ended up getting featured in Ruby Weekly. Then I decided to email my list of 2,353 Angular + Rails and job search subscribers and basically say, “Hey, I’m only going to write about testing from now on. If you want to keep hearing from me, click this link. Otherwise you’ll be unsubscribed.” So far 154 people clicked the link. Combined with the 43 people who opted into my “Ruby testing micro-course”, that makes a total of 197 subscribers.

(Side note: I just remembered that I kicked off my Angular on Rails product sales with only about 300 subscribers.)

Here’s where I’m imagining going with the Rails testing specialty. I’m imagining that to make money from this I can do two things: 1) sell online Rails testing courses and 2) sell live, in-person Rails testing classes. These are arguably roughly the same service, just delivered two different ways.

I discovered not long ago, through a Twitter conversation with Wes Bos, that it’s apparently a common pattern for someone to buy a course and then request custom in-person training services. This was a real eye-opener for me. It means that, presumably, all the work it would take to market and sell a packaged Rails testing course would be along the same exact path that it would take to market and sell onsite Rails testing courses.

I’ve also recently realized that it would probably be a really good idea for me to speak at conferences. So I started applying to a whole bunch of conferences to talk about Rails testing. I even got a talk accepted but the dates ended up not working out.

My plans as of right now are to keep putting out educational material around Rails testing and to keep going through the 30×500 course and keep following its advice. I can’t emphasize enough how helpful it has been to be part of 30×500. It’s so nice to follow a path as opposed to try to blaze my own trail which I’m demonstrably not very good at.

Unlike some previous ventures I have no goal of getting to my first dollar of revenue as quickly as possible. I want to focus more on building something that’s genuinely good and helpful. I want to focus more on doing things right than doing things super fast.

Entrepreneurship Journal, 2/1/2018

In 2016 I started selling an ebook about how to use Angular and Rails together. Between June 2016 and December 2017 I sold about $8K worth of the book and related video package. I sold (and still sell) these products at AngularOnRails.com.

In July 2017 I decided to put AngularOnRails.com on the back burner for various reasons. I then proceeded to flail around wildly for a while. I tried several new business ideas, all of which I ended up deciding I didn’t like.

I eventually basically said, “Okay, fuck it. I give up. I’ll just go back to the thing that was working—AngularOnRails.com—even though I’m maybe not super crazy about it anymore. It will be easier to grow this existing success than to try to make a new one.”

So I went back to AngularOnRails.com and tried to think of how I could grow its revenue. At that time revenue was at a couple hundred bucks a month (although it varied quite a bit from month to month). The two products I had for sale were a $49 ebook, a $99 video package and a $249 “corporate” package which no one had ever bought.

I figured the easiest way to grow revenue would probably be to add a higher-tier product (~$500) that people would actually buy.

I had gotten the impression that most people who were learning Angular + Rails were doing so because they wanted to get a job. So I sent an email to my list. The answer was an overwhelming yes. Over 50 people responded (out of a list of a little over 2000) saying yes, they were in it for a job.

So I thought maybe I could add some sort of “get a job” course as a higher-tier item in my product ladder. But then I realized there’s nothing specific to Angular + Rails about getting a job. So rather than add an item to my product ladder I decided to create a whole new product ladder.

I decided to call the new site Six Figure Coding, drawing some inspiration from Million Dollar Consulting. I emailed my AngularOnRails.com list. Over 100 people signed up for the SixFigureCoding.com email list within the first two days. The intention was to make the site all about how to get a higher-paying programming job (or how to get your first programming job).

Then, later, I decided I didn’t like the name Six Figure Coding. I renamed it to Code with Jason.

Then I realized that if I wanted an instant traffic injection for Code with Jason, I could just move some of my best-performing blog posts from AngularOnRails.com to CodeWithJason.com. That’s what I did and it worked.

Then, slowly, it dawned on me: I don’t have to completely abandon the audience I’ve built up at AngularOnRails.com. I can just retroactively decide that I’m just renaming AngularOnRails.com to CodeWithJason.com. I can still offer the same products, which are still selling, and I can still use the same lead magnets, which are still working. My email list can continue to grow as always.

But the advantage to the new domain name is that now I’m no longer limited to just talking about Angular + Rails. I can do a course that’s just Angular if I want. I don’t think the job search idea was a bad one but now I’m no longer sure that I want that to be the primary focus.

So my plans for the near future are:

  1. Launch my job search book, which I already have 95% done
  2. Move all the products at AngularOnRails.com over to CodeWithJason.com
  3. Move all the lead magnets at AngularOnRails.com over to CodeWithJason.com
  4. Start experimenting with an Angular-only product

I don’t imagine creating a product called “Learn Angular” or something like that. It will almost certainly be something more specific like Angular testing or observables or something like that.

Entrepreneurship Journal, 1/18/2017

Some interesting things have happened since my last update.

I renamed Six Figure Coding to Code with Jason. Something always rubbed me the wrong way about Six Figure Coding, like I was bragging about how much money I make or something. Plus I discovered that my readers aren’t mainly focused on making more money. They’re mainly focused on getting a more enjoyable/fulfilling job. I also like the name Code with Jason because it can be used for almost anything I want.

I realized that since I’m not concerned with keeping Angular on Rails alive as a business anymore, I’m free to move content from AngularOnRails.com to CodeWithJason.com for an instant traffic injection. So I did. I moved over my top 7 posts from AngularOnRails.com which account for about 2300 visits a month.

After I moved these posts I realized that if I want more traffic I can just write more about Angular + Rails. I can even move Angular for Rails Developers over to CodeWithJason.com and continue to sell it there.

I changed the name of my upcoming ebook from Six Figure Coding: The Book to The Job Search Manual for Developers.

I appeared on a podcast called Developer on Fire. Unfortunately I did this just before I changed the name from Six Figure Coding to Code with Jason. Oh well.

I plan to go on more podcasts after I finish and release the book. The planned release date for the book is still February 6th, 2018.

I’ve been working on the book pretty consistently. I got it to the length I want. Now I’m going through and editing it. Turns out I’m really not happy with most of what I wrote. So I’m rewriting a lot as I go. I suppose that’s kind of how it works.

Next steps are to finish the book, get a cover designed for the book, rewrite the sales page for the book, then launch the book, then go on a podcast tour.

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.