Category Archives: Entrepreneurship

Why vertical positioning for freelance programmers is hard

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

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

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

There’s no evidence that this works

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

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

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

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

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

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

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

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

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

Reason 2: automation

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

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

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

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

Don’t believe advice without examples

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

For truth-seeking, empiricism beats reasoning

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

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

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

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

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

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

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

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

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

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

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

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

Internet Business Advice Baloney Detection Kit

Who this is for

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

Background

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

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

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

Motivation

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

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

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

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

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

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

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

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

Closing

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

2017 Review and 2018 Goals and Plans

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

January and February

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

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

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

March, April and May

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

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

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

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

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

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

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

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

June and July

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

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

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

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

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

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

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

August to December

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

Reflections on the year

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

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

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

 

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

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

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

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

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

2018

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

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

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

These are my two professional goals for 2018:

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

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

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

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

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

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

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

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

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

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

Watch me try to get my first Shopify client

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

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

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

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

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

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

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

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

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.

May 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

And here are the last six months in graph form (I used Gumroad prior to December 2016 so Stripe doesn’t have data for those months):

So May was not as good as April, but better than the months leading up to April. Why wasn’t May as good as April? I don’t exactly know.

I’ve been pretty distracted from Angular on Rails lately. I’ve been doing a lot of training. Last week I taught a class in Amsterdam and the week before that I taught a class in Detroit.

I’m frankly expecting to have to neglect Angular on Rails for about the next 6 weeks. I really hate to do that but the first priority has to be the client work that pays the bills, and I have a lot to do for clients over the next 6 weeks.

Side note: I tried Facebook ads in May. It went well it the sense that I was able to acquire 37 subscribers for about $2 a pop but it went poorly in the sense that none of those 37 subscribers bought anything. I’ll try again later when I can afford to waste some money to get it figured out.

April 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

And here are the last five months in graph form (I used Gumroad prior to December 2016 so Stripe doesn’t have data for those months):

So March 2017 was the worst month ever, and then April 2017 was the best month in a long time. I attribute this improvement to two main things:

  • I dramatically improved my opt-ins from April to March
  • I raised my prices from $39/$89/”custom” to $49/$99/$249

More opt-ins means more sales and higher prices means higher average sale size.

I had set a goal at one point to double my average sale size. Prior to April 2017 my average sale was $35.13. In April my average sale was $52.52. That’s of course not a doubling but it’s a 50% increase which isn’t bad.

In my last Entrepreneurship Journal I described a 4-step plan:

  1. 3X opt-ins/mo
  2. 2X average sale size
  3. 2X traffic
  4. 2X average sale size again

I think I was initially imagining I would start with the first goal and not move to the second goal until the first goal had been achieved. Later I decided it would probably be more effective to turn some knobs on goal #1, then move to goal #2 while I’m waiting for results to come in, and so on, since there’s a delay between the time I take action and then time I have enough data to see the results of my action.

Here’s what has happened with opt-ins so far:

That’s not a 3X but it is a 1.5X which I’m happy with for now. And we’ve already seen that I’ve 1.5X’d the average sale from $35.13 to $52.52. 1.5 * 1.5 = 2.25. That’s interesting because March’s revenue, $352.25, times 2.25 is $792.56, which isn’t too far off what April actually was. So it looks like fiddling with these inputs really does affect the outputs in the way I would expect. And as long as my opt-ins stay about the same and average sale size stays about the same, I can expect May to be about the same as April.

I haven’t done much yet to influence traffic and I certainly haven’t 2X’d the average sale size for a second time. But for the foreseeable future I think traffic is what I’m going to be focusing on. My first goal is still to 2X traffic but I wonder now if maybe I should just try to, say, 5X traffic. I’ve been told that all my conversion numbers are pretty good and that it might be easier just to crank up traffic than to try to squeeze out some higher conversion rates. I can see the logic in this.

Right now my traffic is at about 8,000 visitors a month, so I’m shooting for 16,000 a month. My guess is that if I do that my revenue will go from about $750/mo to about $1500/mo. So that’s the next milestone.

March 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

To use the classic geological metaphors, you can see a peak in October and then a plateau from December to the March. Why the peak and why the subsequent plateau?

Well, here’s one possible factor:

subscriber chart

That’s a chart of my new email subscribers. I had a peak in October 2016 with about 300 subscribers. Then it was all downhill from there. In March I had something like 98. So that’s one issue. (The jump in April 2016 is when I imported a list of ~300 subscribers from MailChimp.)

Then there’s this:

sales page traffic

That’s the traffic to my book’s sales page. Again, it peaks in October 2016 and goes down from there.

I think the decreased traffic to the book’s sales page is probably at least partially a function of the waning opt-in rate. And I think the slowing opt-in rate is a function of traffic to the home page. The home page is where all the opting in happens. Here’s the home page traffic:

home page traffic

Similar trend: down.

It took me until recently to notice these things because overall traffic has gone up! Here’s a graph of site-wide traffic:

overall traffic

That graph by itself makes the site look pretty healthy. Not entirely so, of course.

I have a hypothesis of the “no shit, Sherlock” variety that more opt-ins would result in more sales. I figure if I can get my opt-in rate from its current 100ish to its erstwhile 300ish, then I could reasonably expect sales to roughly triple.

My plan for increasing opt-ins includes:
– Put an “ad” on each blog post for the same Free Guide that’s offered on the home page (I’ve actually already done this)
– Add an opt-in on each of my most popular blog posts that offers something related to what the blog post is about (I believe this is known as a “content upgrade”)
– Write an promote some new material, which I haven’t done in quite some time. I have a hunch that the lack of “freshness” on my site is partially responsible for my decline in opt-ins, although I can’t explain exactly how that would work. Regardless of whether my hunch is correct, there’s a ton of stuff I think I should be writing about that I’m not. The more I write, the more traffic I get, generally, and more traffic is of course one way to increase opt-ins, although perhaps not the smartest/easiest way. New writing is a lower priority for me than adding content upgrades and refreshing old content.

Another thing that can increase sales is of course to raise prices or to increase the average purchase size. I recently re-did my $89 video product and adjusted my sales page to do a better job of presenting the $89 product and of saying to prospects “this is the default option, the best value, the one you should buy”. Anecdotally, my efforts seem to have worked, although it’s too early to tell. And I certainly haven’t yet done the best job of improving the sales page that I could possibly do. It really needs a ground-up rewrite and redesign. But that’s a lower priority. First let me just get opt-ins back up to where they used to be.

I mentioned that I re-did my $89 video product. I also updated my book so that it covers the latest version of Angular, Angular 4. After I did both these things I did a launch. I was expected big sales from the launch, like a couple thousand or more, but on launch day I believe only two people bought. Big disappointment.

I wondered why that was, and I think I know the answer. On my list of 1500ish subscribers, about 130 have bought. That’s about 8 or 9 percent. Maybe about 8 or 9 percent of my subscribers are going to be buyers, and that’s just all the buyers there are. Maybe by trying to get the others to buy I’m just trying to squeeze blood from a stone. A huge portion of my list comes from places like India and Brazil, after all, where $39 is a lot of money.

I think there’s also another explanation as to why my launch failed. Every time a subscriber subscribes, I give that subscriber his own private “launch sequence” which often does result in the subscriber making a purchase. So if my “private launch sequence” is effective, then a regular launch would probably be mostly redundant. For the most part, the people who would respond to the launch have responded the first time, and the people who would never respond aren’t going to respond to the second launch any more than they would to the first. Again, I think this is true for the most part although of course not always.

Those conclusions, if true, lead me right back to increasing opt-ins. If all the buyers on my list have already bought, find more buyers.

If I can boil down everything I’ve said so far into a concise plan, it’s this: increase opt-ins and increase average sale size. If I can 2X my sale size and 3X my opt-in rate, I can 6X my revenue. That would take my from my current ~$400/mo plateau to 400 * 6 = $2,400/mo. I would be very happy with that number. Heck, I’d even be pretty happy with a consistent $1,000/mo right now.

I don’t want to jump to conclusions or get my hopes up but it seems like some of the actions I’ve taken recently might have helped improve opt-ins and average sale size. My April sales as of right now, April 10th, are $386.75. That’s an average of $38.68 a day which would mean about $1,160 for the month. Again, I’m not going to jump to conclusions or get my hopes up. Even though my launch was a flop, the $386.75 does include launch sales. But just by absolute numbers, I’m already right at “plateau level” on the 10th day of April and I do think I can reasonably expect that April’s final sales will be higher than any other month since the plateau started.

Entrepreneurship Journal, 2/23/2017

Lately I’ve been posting income reports that talk exclusively about Angular on Rails.

I’m not sure what my original intended scope of these “Entrepreneurship Journal” entries was but I think I’ll now include in them everything I do that makes money.

In 2017 I think I can pretty accurately say that I make my money by a mix of three things:
– Custom software development
– Training/mentorship
– Products

In fact, I just got new business cards which say on the back, “Training / Mentorship / Custom Software Development”.

The training service is something I’m doing more of in 2017 than in the past. By the beginning of February my sales of training services were roughly equal to 75% of my total earnings for 2016. That’s a pretty big deal.

The “regular old coding” work I’ve done so far in 2017 is probably about 15% of my total earnings for 2016, so I’m already at about 90% of 2016’s income. Keep in mind that these are sales numbers, and not everything I’ve sold has yet been delivered or paid for. But the contracts are all signed.

This might sound like I have it made for 2017, and in a way I do, but a lot of this money is just going toward back taxes and credit card debt from 2016. I had a dry stretch in 2016 that really put the squeeze on at an inconvenient time. And when you get behind on taxes, it can be very hard to dig yourself out of that hole. So the pressure is still very much on to make a lot more sales over the next few months.

My plan is to first go after as many training gigs as I can, and once I think I’ve exhausted those resources, go after “regular” contracting gigs. And all the while I plan to put in an hour or two a day on Angular on Rails.

Let me talk for a second about the training I’ve done and the training I’m going to do. Last week I taught a 5-day Ruby on Rails class in Vancouver, Washington. In two weeks I’m teaching a 3-day Angular 2 class in Sofia, Bulgaria. Then, in June/July, I’m leading a 5-week coding bootcamp. I have two other leads, both in India, incidentally. One would be a remote teaching gig (in the middle of the night!) and the other would require me and the family to move to India for something like three months.

I also started something called the Grand Rapids JavaScript Meetup. I’m hoping/expecting that this will lead to some training and/or contracting gigs.

My #1 goal for 2017 is to go full-time on Angular on Rails. The way I’ve quantified this is that when I hit a consistent $10K a month from Angular on Rails, that means I’ve hit my goal. Even though I’m only making a few hundred a month right now I have a pretty good feeling about getting there. We’ll see where I am in a few months.