Author Archives: Jason

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.

Entrepreneurship Journal, 11/28/2017

The last few weeks have included some very positive developments.

Successful Launch

On November 8th, I set up a WordPress site at SixFigureCoding.com. My idea was that my next project would be teaching job search skills to developers.

I was able to leverage my existing AngularOnRails.com audience and immediately get over 100 subscribers at SixFigureCoding.com.

I wanted to get to my first dollar of revenue as fast as possible. So, on November 17th, I did a launch. What I sold was access to a Slack group for $19 and a coaching call for $249. Nobody bought the coaching call but 8 people did buy the Slack access. My total revenue for the launch (which took place over the course of 3 days) was $152. The first sale took place on November 17th, meaning it was only 9 days between the time I set up SixFigureCoding.com and the time I made my first dollar.

This is an improvement over Angular on Rails which took me 2 months to monetize. (And actually, Angular on Rails existed as an unmonetized blog for about 2 years before I made any real money off of it, but during that time I wasn’t really trying yet.)

And it’s a big improvement over the 18 months it took me to make my first dollar of revenue from Snip (my failed hair salon scheduling software business).

Next Steps

My planned next steps for Six Figure coding include:

  • Guest on career-related and coding-related podcasts
  • Guest post on relevant high-traffic sites
  • Write articles on SixFigureCoding.com to build up a body of useful content
  • Launch a light, relatively low-priced ebook

Something I’ve learned relatively recently is the wisdom of tapping into other people’s audiences rather than trying to create my own from scratch. A year or two ago, my traffic strategy might have been to write a whole bunch of blog posts to try to get traffic. That probably would have worked but it would have taken needlessly long.

This time my approach is different. I figure that when I guest on podcasts, I’ll get at least a little inflow of traffic as well as a backlink in the show notes which will have SEO benefits. Similar deal with the guest posting.

My thinking with the ebook is that it will have two particular benefits. First, it will get the feedback loop started early. I know that my first attempt at an ebook will not exactly be a bullseye. I’ll probably be at least slightly off the mark and I’ll have to go back and adjust based on buyer feedback. Since the first incarnation of my product will be imperfect and there’s nothing I can do about it, I might as well launch that first incarnation in a low-key, low-stakes kind of way.

Second, I expect that having an ebook, even a very small one, will do something to put my name on the map and lend me some credibility when I’m doing my outreach campaigns to podcasts. I’ll no longer be just “Jason Swett” but “Jason Swett, author of [whatever I decide to call my book]”.

Long-Term Vision

I’ve long been a fan of patterning off of successful people’s business models. For this one I intend to do a hybrid of Brennan Dunn and Ramit Sethi, mostly Ramit Sethi.

My understanding of Ramit Sethi’s products is that they’re mostly high-ticket items in the hundreds or thousands of dollars. Right now I’m thinking it could make a lot of sense for me to offer a program that is, say, $97/mo for 6 months, with the idea being that by the end of that 6 months you have a better job (or your first coding job).

Ramit’s “authority piece” is a published book. Brennan’s authority piece, on the other hand, was just an ebook. In the beginning, I think it was even just like a 30-page ebook. That’s the model I plan to pattern after because it seems a lot more achievable, especially in a short time span.

So several months from now, my product ladder might look like this:

  1. $49 ebook
  2. $599 job search program

That’s probably too big a gap between the tiers so it might actually look something more like this:

  1. $49 ebook
  2. $299 job search program (“light” version)
  3. $599 job search program (“pro” version)

If I can sell just 200 copies of something that costs $500 (just to pick numbers that make the math easy), then that’s $100K per year. That’s actually my #1 2018 goal, to earn $100K from SixFigureCoding.com.

Entrepreneurship Journal, 11/13/2017

In the last few months the following things have happened:

  1. I decided to put Angular on Rails on the back burner
  2. I started a new project called Landing Page Breakdowns
  3. I killed Landing Page Breakdowns and started a project called AWS for Rails Developers
  4. I killed AWS for Rails Developers and started trying to do Shopify consulting
  5. I decided not to try to do Shopify consulting anymore and decided to start a new website that teaches job search skills to developers

Here’s how the last thing happened. Some time after I decided to try to do some Shopify consulting, I realized how hard it was to get clients, or at least the right kind of clients. I also didn’t like the starting-over feeling of moving into Shopify consulting. It became apparently to me a little while after getting into the Shopify thing that it would take me quite a while to gain a level of genuine competence. To a certain extent I’m okay with a business idea that takes a long time to build but I’m not okay with an experiment that takes a long time to build.

Based on when I wrote the blog post about it, it looks like my decision to put Angular on Rails on the back burner came around July 2017. Then I spent July, August, September and October experimenting with various other business ideas, none of which ended up seeming very promising.

After all that time and effort and disappointment I asked myself, “Rather than trying to start a new thing from scratch, why don’t I just go back to the thing that was already working and make it work better?” Angular on Rails isn’t perfect but it does have revenue. And as of August through October 2017 it was even back to the $300-$400/mo it was doing around December 2016 to March 2017 (before it dipped sharply in June and July).

So I took a fresh look at Angular on Rails and even made a concrete list of things I might do to move the needle. One thing I wanted to think about was this: I have a $49 product and a $99 product. Is there anything I could create that would be worth, say, $499? Because it would sure be a lot easier to grow the business’s revenue that way than by just trying to increase volume.

In pondering this question I recalled that a good portion of the people who signed up for the Angular on Rails mailing list did so because they wanted to build side projects. I wondered if a large percentage of these side-project-builders were doing so because they wanted to try to get a better job. So I emailed my list of about 2,100 people and asked.

The response was somewhat overwhelming. Over 50 people responded, almost all of them with a yes. So I thought, it looks like there’s something here.

And then I thought: I could add a new product onto my Angular on Rails product ladder, or I could start a whole new product ladder. I decided that creating a whole new product ladder would make the most long-term sense. This decision was partially driven by the fact that a lot of the people who responded to my “Are you trying to get a new job?” email said that they were no longer interested in the Angular + Rails combo. There’s no reason why the skills of finding a new programming job have to be tied to any particular technology.

The name I came up with for my new endeavor is Six Figure Coding. IIRC I registered the domain on November 7th. By November 8th, I had set up a WordPress site (using WP Engine) and then I used Leadpages to connect my site with Drip, allowing people to subscribe to an email list. At midday on November 8th I emailed my Angular on Rails list and let them know that Six Figure Coding was open for business. I also tweeted about it and put a link on Facebook.

I would have been satisfied with 20 or so subscribers. I remember that I immediately got about 8 subscribers. Then later the number crept up to the mid-20s. Then the number passed 32, making it the second-biggest email list I’ve built after Angular on Rails. By the time I closed my computer for the day around 8pm, I had 67 subscribers. When I opened my computer the next day, I had 86 subscribers. By the end of that day, I had over 100 subscribers. Today I have 115. My expectations have been greatly exceeded.

At a high level, my plan is to come up with a product ladder with products at $0, $29-49, $99 and $299+. I plan to immediately sell access to a paid Slack org and see how that goes. I actually have that launch scheduled for Friday, November 17.

My plan for getting traffic early on mostly revolves around doing podcast interviews and guest posts.

I’ll of course continue to post updates here like always.

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.

Entrepreneurship Journal, 10/16/2017

In the last few months the following things have happened:

  1. I decided to put Angular on Rails on the back burner
  2. I started a new project called Landing Page Breakdowns
  3. I killed Landing Page Breakdowns and started a project called AWS for Rails Developers
  4. I killed AWS for Rails Developers and started something else that doesn’t have a name yet

The reason I killed AWS for Rails Developers is because I realized that there are people who are just getting started with AWS + Rails who need help but don’t have much money, and there are established business who use AWS + Rails and have a lot of money and those two groups of people don’t really overlap. I’m capable of teaching myself how to help people get started with AWS + Rails but I’m not capable of teaching established businesses how to scale AWS + Rails. I believe that knowledge has to be gained experientially. I’m not really excited about the idea of doing something that requires super deep technical knowledge at this point, either.

The new idea I had was to build some sort of product for the Shopify ecosystem. I have no idea what this product might be.

My thought is that maybe I can do some consulting for Shopify store owners which would give me insight and visibility into the Shopify world. The consulting could potentially even be a good income source on its own. Maybe it could even be a replacement for my contract development income.

So far I’ve had calls with two Shopify store owners. Both expressed interest in working with me, at least on the free basis that I offered. Yesterday I had a call with a guy from Australia who I found on the Shopify forums. I plan to try to find more prospects that way.

I also have a friend joining me in the Shopify endeavor. We’re working on starting an email list for it too.

Entrepreneurship Journal, 9/20/2017

Product

Last time I wrote it was to say that I decided to back-burner Angular on Rails.

I had decided to move onto a new idea called Landing Page Breakdowns. The idea seemed good for a while but then I realized I didn’t know exactly who I was targeting with LPB or what exactly I was offering them. I found it really hard to even begin to gain traction for this reason.

Since then I’ve moved onto another idea that’s less of a radical departure from what I’ve tried before. I’m calling the new project AWS for Rails Developers. The idea is similar to the Angular + Rails idea except I’m of course applying it to AWS instead of Angular.

Here are some reasons why I think I can reasonably expect AWS + Rails to go better than Angular + Rails:

  • AWS changes at a slower rate than Angular, and the back-end world in general is less fickle than the front-end world
  • I personally enjoy AWS as a topic more than Angular
  • Unlike Angular, I don’t have a philosophical problem with AWS as a technology (although I might have some philosophical problems with Amazon as a company, but then again I definitely have some philosophical problems with Google as a company, the company behind Angular)
  • AWS costs money to use (sometimes a huge amount of money), so I think I can reasonably expect that the people I attract might be more closely tied to serious commercial activities than the people Angular + Rails attracted

All this is unproven and remains to be seen. I don’t even consider AWS for Rails Developers to be my official next business endeavor yet. I view what I’m doing as research. I’m asking the question, “Does anybody give a shit about this?” and trying to arrive at a reasonably confident answer as fast as possible.

So far I’ve put out one blog post which gave me a modestly good spike in traffic (~50 visits the first and second days of the post being live) and two email subscribers. I consider the email subscribers a stronger indicator of people caring about the topic than the traffic.

Right now I’m working on a second blog post that I think speaks more to the heart of the challenges encountered when working with AWS + Rails. My next goal is to get 10 email subscribers.

Service

I’ve decided to drastically simplify things on the service side. I’m not planning to take on any new training gigs anytime soon (unless on the off chance a wildly lucrative one falls into my lap). I started working with a new client full-time about 7 weeks ago. It’s a contract arrangement but for all intents and purposes it’s basically a full-time job. I’m okay with this. I’ve spent about 6 years experimenting with ways to get to a better place with freelancing and the only thing that has resulted from most of the things I’ve tried is disappointment, frustration and lost money. I’m glad I tried everything I’ve tried, though, because now I have a better understanding of what works and what doesn’t. I’ve learned that freelance programming is basically a sham and it’s futile to try to have a good freelance programming career because “good freelance programming career” is basically a contradiction in terms. The vast majority of freelance programmers (like 99%+, I would guess) are just contractors, just a tiny notch away from full-time employment. I do believe it’s possible to create a lucrative and enjoyable service business for oneself, I just believe it has to involve selling a service other than coding. (The service itself can involve coding but the thing sold can’t be coding, the thing sold has to be a result that may or may not be achieved by coding.) So long story short, I plan to take a long hiatus from attempting to improve my freelancing business. I have a small amount of discretionary time/energy available to me outside of client work and family time and I plan to devote 100% of that discretionary time and energy to moving forward with product income. Oh, I also stepped down as organizer of Grand Rapids JavaScript Meetup and stopped attending all three of the mastermind groups I was part of. I’m really making it a point to concentrate my efforts and simplify my schedule.

Entrepreneurship Journal, 7/11/2017

Over time I’ve come to discover some weaknesses in Angular on Rails as a business. These weaknesses include:

  • Most of the people who subscribe to my email list seem to be interested in building side projects. They don’t come to my site because they’re part of a going concern that has suddenly developed an expensive problem. They’re interested in my site because they’re working on a side project which almost by definition doesn’t have any revenue associated with it. I’m selling to individuals paying with pocket money, not businesses paying with business money.
  • Angular moves and changes very quickly, meaning my content is constantly going out of date. I have to either live with the out-of-date content or go back and update it, which is very, very time-consuming.
  • The market size for “developers who use Angular + Rails” might not be great enough to support the size of business I want to build.
  • I actually believe that most web applications should not be single-page applications and that the single-page application craze is a force for ill in the web development world.
  • Unlike other people’s self-published books apparently did, mine never led to any real consulting gigs (I tried!), probably for the “side project reason” listed above.

So I’ve decided to move on and start a new business. Unlike when I killed and shuttered my previous business, Snip, I plan to leave Angular on Rails up for the time being. It doesn’t cost that much to run and it doesn’t require any meaningful level of customer support.

Ideally, my next business has the following characteristics:

  • My customers are spending company money to buy my products and services, not personal money
  • The domain of the business is something I personally can write about intelligently
  • The domain be written about in an evergreen way
  • It’s conducive to building an audience
  • It touches on an area where I already have some expertise

I have an idea which I believe checks most if not all of these boxes. I call it LandingPageBreakdowns.com. It’s somewhat inspired by UserOnboard. I first conceived of the idea a few weeks ago, although in a somewhat different form. Today I kind of finalized the idea, registered the domain name, and put up my first breakdown: I Will Teach You To Be Rich.

My thinking is this: over time I expect to build some traffic and get some email opt-ins. Once I have enough subscribers—1000 or so—I can think about putting together an info product, perhaps just an ebook aggregating my breakdowns and discussing what the good ones and bad ones have in common. Then, like Samuel from UserOnboard does, maybe I can offer training. I also plan to do interviews with some of the people behind the businesses whose landing pages I examine.

And maybe throughout the course of doing all this I’ll come up with a software product to build.

In any case, my first goal is to get my first subscriber by the end of the week and to get 25 subscribers by the end of August.

June 2017 Angular on Rails Income Report

Here’s every month of Angular on Rails’ sales so far:

2016 August $868
2016 September $1053
2016 October $1580
2016 November $871
2016 December $428
2017 January $371
2017 February $449
2017 March $352
2017 April $735
2017 May $480
2017 June $185

As you can see, June 2017 was the worst month ever. Why? I don’t know for sure. One thing I do know for sure is that I’ve neglected Angular on Rails for about the last two months. That may well be the root cause of the decline.

My plan at this point is to focus on one thing and one thing only: traffic. I’ve gone from a peak of over 8,500 visitors a month (IIRC) to about 6,200 in June. So I set a goal of 10,000 visitors in the month of September.

A person might look at these numbers and wonder if Angular on Rails is really a viable business. My opt-in page still converts fine (~14%), my sales page still converts fine (~7%) and my checkout page converts okay (~18%) so I see no reason to seriously think about bailing now.

One big problem is that I’ve given my supposed #1 much less than my #1 slot attention-wise in the first 6 months of 2017. I’ve spent too much focus on training work. My plan for the remainder of 2017 is to go back to doing more coding-by-the-hour work. It’s not as enjoyable as training but it’s easier on my schedule and family, and the paychecks have tended to be more steady. From here on out I only plan to take on training gigs if they’re relatively easy and lucrative.

Entrepreneurship Journal, 6/25/2017

The work experiences I’ve had in the first six months of 2017 have been pretty different from anything I’ve experienced before this. I’ve learned some interesting things.

The main way the first half of 2017 has been different is that most of my income for this period has been from training as opposed to from coding. It seems that I generally enjoy training more than coding. To put it more precisely, I enjoy training more than I enjoy most of the real-world coding experiences I’ve had so far. Hacking away on leisure projects is more fun than either coding for money or doing training for money.

There are pros and cons to training as opposed to coding. One of the main pros of training is that it can be more lucrative. I know multiple people who have charged $10,000+ per week for training. It’s pretty hard to get that kind of compensation for coding. One of the main cons of training is it typically involves travel. Travel itself actually has pros and cons within it. The main con of travel is that it’s hard for my wife and two young kids for me to be away as much as I am.

I actually made a decision yesterday to be more judicious about what training gigs I take on. My strategy up to now was to take any training gig that came my way, no matter how low the pay was (to an extent), how inexperienced I might be with the subject matter (again, to an extent), or how ill-suited the timing was. From now on I only plan to take on training gigs that are some attractive combination of a) lucrative, b) prestigious, c) convenient and/or d) in alignment with my career direction (e.g. I wouldn’t want to try to teach a .NET class since I have no plans to do anything with .NET in the future).

Part of what made me decide to scale back on training is that I just finished teaching week 2 of a 5-week coding bootcamp I’m teaching in Detroit and my absence is really hard on my family. In addition to that, I’ve been volunteering at our local Eagles club and doing some coding work. This means that even though I’ve been coming back home on the weekends I’ve barely seen my family since the bootcamp started. I also decided today to step down from my position at the Eagles club.

I actually drove down to the Eagles club this morning and put in my resignation in person. Afterward I felt a great weight lifted off my shoulders as well as an instant flood of clarity. In addition to all the other crap I have going on, I’ve been talking with a major publisher of programming books about writing an Angular book. Before today I was imagining that I’d do my training/coding work, volunteer at the Eagles, write a published Angular book and continue to grow Angular on Rails. For some reason it wasn’t until after I resigned at the Eagles club that I realized how nuts that was. So now I think I’m probably going to tell the publisher nevermind. So rather than trying to do the Eagles thing, do a bunch of training, and write a published Angular book on top of coding and Angular on Rails, I’m going to say no to most training leads and focus on just coding (because I have to make money somehow) and Angular on Rails (because my #1 career goal is supposedly to create a successful product business). I feel good about this new focus.

Within Angular on Rails, what I’m working on right now is improving the design of the site. I’m working on both the aesthetic aspect of the design as well as the structure of the site. These things are perhaps not the highest priority growth-wise. The reason I’m making design the current top priority is psychological. Right now when I look at angularonrails.com I think, what a piece of shit. I’m not proud to show it to people. I can’t point to it and say, “Here’s a site I made that’s a good example of a well-optimized website.” So before I resume my previous top priority of building traffic for Angular on Rails, I first plan to make it look good, and also make it a little more navigable.

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.