Author Archives: Jason

September 2019 Revenue Report

My September revenue report is pretty simple: my revenue was $0. Not surprising because I didn’t do any launches.

Here’s my revenue for past months.

2019 September $0
2019 August $426
2019 July $40
2019 June $0
2019 May $481
2019 April $98
2019 March $1037
2018 October $400
2017 June $185
2017 May $480
2017 April $735
2017 March $352
2017 February $449
2017 January $371
2016 December $428
2016 November $871
2016 October $1580
2016 September $1053
2016 August $868

I’ve quit freelancing for the indefinite future

Over the last 8 years I’ve spent a lot of time studying, thinking about, and writing about freelancing. I’ve been a freelancer on and off—mostly on—since 2011. I had had a dream for a long time of building a high-income, low-labor lifestyle as a successful consultant, kind of like what Alan Weiss has done.

Since I’ve written a decent amount about freelancing on this site in the past, I feel it’s appropriate to give the following update: I’ve given up on my freelancing dream. It’s a good thing, though, because the only reason I decided to leave the path I was on is because I found what I believe to be a better path. (Also, I discovered that freelance programming is basically a sham and 99% of “freelance” programmers are just contractors and glorified employees and that the kind of success I was fuzzily envisioning is not really possible, but that’s a different story.)

What’s the new path I’m on? I don’t want to get too much into the details publicly but I’ll say that I’ve found myself in a monogamous relationship with a client who I like more than any other client I’ve worked with. He and I have been working together for just over a year. All the aspects of the working arrangement are good, about as good as one could hope for. It’s basically a job, but a really good job. I expect that my client and I will work together for many years to come and I don’t expect to be working with any other clients on the side during this time. So, no more freelancing. I’m not saying never again, because who knows what will happen 5 or 10 years from now, but no more freelancing for the foreseeable future.

What I’m NOT ready to give up on yet, or probably ever, is my endeavor to build a successful product business. I don’t think that part of me can ever be killed. You can follow my progress in that area in my Entrepreneurship Journal.

Suite Magic test runner: project aborted

Recently I had an idea for what I thought was (and still think is) a good idea for a product: a test runner/CI tool that can run any Rails test suite in about 30 seconds, no matter how big the test suite is. I even had a rough proof-of-concept working.

However, I decided to abandon the project. The reason is simple: I realized that the work involved in building this product/business would almost certainly be too much. As someone who earns my living working more or less full-time doing coding (and as someone who has a wife and kids), I can only afford to put in so much time per week on side projects.

I know the pain of trying to take on something too big because I’ve tried it before. From early 2011 to late 2015 I tried to build a business selling hair salon scheduling software, and among other reasons for failure, I was never able to achieve “escape velocity” due to the limited amount of bandwidth I had to work on the business.

So, that’s my reasoning. Now that I’ve made that decision, my plan is to continue to focus on blogging about Rails and making Rails podcasts, which I do at CodeWithJason.com and the Rails with Jason podcast, respectively. As I move forward with these things I intend to keep my eyes open to other entrepreneurial opportunities.

August 2019 Revenue Report

Unlike June and July, I did do a launch in September. I didn’t launch a course like I was planning, and nobody bought the service I launched. But I did relaunch my book and made $327. I launched to roughly 100 new subscribers and made 5 sales, so about a 5% conversion rate, not bad.

Incidentally, I also sold a copy of the Angular for Rails Developers video package for $99. I didn’t even realize that that product was still purchasable. I guess it is since someone bought it.

Below is my revenue for every month worth mentioning.

2019 August $426
2019 July $40
2019 June $0
2019 May $481
2019 April $98
2019 March $1037
2018 October $400
2017 June $185
2017 May $480
2017 April $735
2017 March $352
2017 February $449
2017 January $371
2016 December $428
2016 November $871
2016 October $1580
2016 September $1053
2016 August $868

July 2019 Revenue Report

July’s revenue was low for the same reason June’s revenue was low: I didn’t do any launches. In both June and July I was focused on building my email list.

I’m writing this on August 5th, 2019. This week I’m launching a new service. I plan to launch a course next month. Hopefully after those things happen I’ll see an increase in revenue.

Below is my revenue for every month worth mentioning.

2019 July $40
2019 June $0
2019 May $481
2019 April $98
2019 March $1037
2018 October $400
2017 June $185
2017 May $480
2017 April $735
2017 March $352
2017 February $449
2017 January $371
2016 December $428
2016 November $871
2016 October $1580
2016 September $1053
2016 August $868

June 2019 Revenue Report

I made exactly $0 in sales in June. This isn’t too surprising as I didn’t do any launches. During June I was focused on building my email list.

Below is my revenue for every month worth mentioning.

2019 June $0
2019 May $481
2019 April $98
2019 March $1037
2018 October $400
2017 June $185
2017 May $480
2017 April $735
2017 March $352
2017 February $449
2017 January $371
2016 December $428
2016 November $871
2016 October $1580
2016 September $1053
2016 August $868

May 2019 Revenue Report

In March 2019 I launched my new book, Rails Testing for Beginners, and made $988 on the launch with a couple sales later in the month.

April was launchless. My revenue was only $98.

This month I launched a video package to accompany the book. I earned $481 which was less than I expected but in hindsight it makes sense. My list hadn’t grown much since the book launch so almost everyone who got the video launched to them had already had the book launched to them. I did the math afterward and out of ~700 email subscribers, about 5% of them ultimately bought something, whether it be the book by itself or the book + video package. A 5% overall conversion rate isn’t bad.

Now that I have this higher-tier product my focus for the next while will be to get a bunch more subscribers to launch to. I’m tentatively thinking that I’ll wait until I have at least 1000 subscribers to do another launch.

Below is my revenue for every month.

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

How I uncover genuine pains in technical watering holes

Note: this post is targeted at my fellow 30×500 students and might not make sense to anyone else.

A common problem students encounter in 30×500 is that we come across watering hole posts that are purely technical and have a short and clear answer.

Example: the question “how do I reverse an array in Ruby?” has a very cut and dry answer: Array#reverse. There’s not much more to say about it. This question isn’t really a pain, just a question.

The kinds of posts I prefer to find are ones that say things like: “No matter how much I read, I can’t figure out how to get started with automated testing. What can I do?” There’s a LOT to say in response to this question. This question reveals pain, pain that can be addressed with an ebomb.

I’ve often used a special google query to help me uncover pains. It looks like this:

rails testing confused inurl:forum

The inurl:forum part scopes the search to URLs that contain “forum”. The “rails testing” part is the topic under which I’m trying to uncover pains, and “confused” is one of several “pain words” I’ll plug into this query. I might run through several, like this:

rails testing confused inurl:forum
rails testing frustrated inurl:forum
rails testing stuck inurl:forum
rails testing confused inurl:reddit
rails testing frustrated inurl:reddit
rails testing stuck inurl:reddit

Here’s the full list of “pain words” I’ve come up with so far:

confused
frustrated
stuck
lost
painful
don’t understand
don’t get
struggling

Once I find posts via my queries, I of course safari those posts and then write ebombs addressing the pains.

April 2019 Product Revenue Report

As I wrote about a month ago, I launched my new book, Rails Testing for Beginners, in mid-March, for a total launch revenue of $988. I sold one book at the full $49 price post-launch for a March 2019 total of $1037.

April was a much slower month. I made two sales, each at the full price of $49 for a total of $98. This low total is not surprising. I did basically nothing to try to make any sales in April. Almost all my effort was focused on adding a video package tier that I can offer at a higher price.

I’m planning to launch the video package this coming week, May 6-9 2019.

Here are my numbers for last month and every prior month.

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

My advice to brand new freelance programmers and aspiring freelance programmers

As time goes on I find myself being asked with increasing frequency what advice I have for someone who’s just starting out as a freelance programmer. Here’s my advice.

Freelancing == marketing

My first piece of advice would be to make the realization that successful freelancing is all about marketing. The one skill that matters more than everything else is the skill of finding clients who are enjoyable to work with, who value the work you do, and can afford to pay well.

It’s pretty easy to find freelancing meetups or freelancing books that discuss things like taxes, accounting, contracts, etc. All that stuff matters but it matters way less than the ability to get good clients. Administrative work is pretty easy. The reward for doing it well is not that great. Marketing is super hard. The reward for doing successful marketing can be life-changing.

The key question to ask in freelancing is: how can I constantly be getting more leads for better, more lucrative clients?

Hunting and farming

There are different methods of acquiring clients. I put these methods into “hunting” and “farming” categories.

Hunting tactics include things like responding to job board ads, reaching out to people you know to see if they can help you find a gig, or going to a conference to try to find a new client. Like real hunting, hunting for clients can be fast, but it’s only successful a fraction of the time, and you don’t always get something good.

Farming tactics include things like writing blog posts, writing books, speaking at local meetups, speaking at conferences, guesting on podcasts, hosting podcasts, and other things that demonstrate your technical competence to a (if done successfully) large number of people. Farming can yield much better results than hunting, but there can be quite a long interval between the time you plant the seed and the time you get to reap the harvest. And just like in real farming, not all the seeds you plant will sprout into plants that bear fruit.

In my freelancing career I’ve kind of made a three-part transition from hunting to farming.

  1. Early on I got most of my gigs from job boards
  2. Later, as I developed a network of peers, I was able to rely more on referrals from past co-workers or “co-freelancers” (and by the way, these usually weren’t unsolicited referrals, but referrals I specifically asked for at times when I needed work)
  3. Later, as I got more into speaking and writing, there were a couple occasions when prospective clients came to me who I attracted via my speaking and writing, and these turned out to be the best clients of all

I strongly prefer “farming” methods. If I go knocking on someone’s door to ask them to hire me, the burden is on me to convince them why I’m worthy and why they should hire me. Plus, if I’m responding to a job ad, I’m typically competing with any number of other applicants to that gig. Conversely, if someone comes knocking on my door and they’re asking me if they can hire me, then the burden is on them to convince me why I should allow them to divert my attention from whatever work I was doing when they found me and work for them instead. It’s a MUCH stronger position to be in, and it typically results in much better fees.

When farming is impractical

If you’re just starting out freelancing and you want to get your first client ASAP, it probably doesn’t make much sense to focus on farming tactics to the exclusion of hunting. Luckily there’s no reason hunting and farming can’t be done in parallel.

I would suggest that the very first thing you do as a freelancer is plant a couple certain seeds:

  • Get a non-Gmail email account (e.g. jason@codewithjason.com)
  • At the same domain where your email is hosted (in my case codewithjason.com) put up a very minimal website – it almost doesn’t matter what’s on it because very few people will be visiting it anytime soon

What I would not advise is to fuck around with business cards, logos, business entities or any of that stuff. None of that stuff, not even having a business entity set up, is a prerequisite to getting your first client. Get your first client first, then deal with that stuff.

Then I would suggest hunting for your first client.

How to hunt for your first client

The people who are the most likely to agree to pay you money for programming now are the people who have paid you money for programming in the past. So my first move as a freelancer would be to go back to all my old employers and say, “Hey, I’m available for freelance work now. Want to work together again?” In fact, that’s exactly what I did when I first went freelance and it worked. It’s a super common thing for people to do when they start freelancing. A lot of times people even start freelancing by going to their current employer and pitching their employer to switch from an FTE relationship to a contract relationship. Sometimes it works.

Next I would reach out to some of my past co-workers and see who of those people I might want to reach out to about freelance work. I would start with the co-workers who I’d feel most comfortable asking about it and then gradually reach further out until there are no more past co-workers who I’d feel comfortable reaching out to. I would probably word my outreach something like, “Hey {{friend}}, I’ve decided to go out on my own as an independent contractor. I’m looking for my first client. Do you know anybody I should talk to?” Most of them won’t know anyone, and for any intros you are able to get through your past co-workers, most of them won’t pan out. This is just how it goes.

If I reached the end of my past employers and co-workers without landing my first freelance client (a distinct possibility!) then my next step would be to start hitting up the job boards. The job board I’ve used most successfully in the past for contract gigs is We Work Remotely, although I’ve had some success with craigslist as well. Sometimes the jobs I apply to are specifically contract jobs and sometimes not. I never shy from applying to a full-time job as a contractor unless it specifically says no contractors. I make sure to be upfront from the beginning that I’m looking for a contract relationship, too. No point in wasting either of our time if they’re not open to it.

The sales process

I see freelancers make a lot of mistakes around the sales process. Ironically, programmers tend to be hypersensitive to anything that appears “salesy” and programmers don’t want to be salesy themselves, but probably the most common mistake I see freelance programmers make is to try to sell themselves too hard too early.

Recently I introduced a friend of mine to a potential prospect via email. He committed the classic mistake of emailing his whole life story to the client including a list of past accomplishments. Dude, they were already sold on talking to you. Just give them your phone number and say give me a call.

The job of an email isn’t to sell the prospect on hiring you for the project. The job of an email is to sell the prospect on getting on a call. The job of the call is to sell the prospect on having another call. Then, maybe, the job of that call is to sell the client of hiring you for a project.

And when I say “sell the prospect on…” I’m really not talking about pitching or persuading. All the sales process is is an honest attempt to answer the question: “Are we a good fit to work together?” If so, then not much persuading is necessary. What is necessary is a certain amount of trust-building. Trust-building can be built a few certain ways. Some simple psychological triggers like hearing someone’s voice and seeing their face are ways to build trust. The more times someone has the opportunity to hear your voice and see your face, and the longer period of time over which that happens, the more they’re likely to trust you. Spending time in person also builds trust a lot faster than just interacting online. That’s part of the reason it’s so much easier to get someone to hire you if have an IRL relationship with that person prior to a discussion about working together.

Another way to build trust is by having strong marketing, strong authority pieces that signal to the client that you know what you’re doing without you having to make a single claim yourself about your own abilities. This brings me to my advice on what marketing activities you should engage in (since again, freelancing is all about marketing) after you get your first freelance client.

Seeds to plant after you get your first client

After you get client #1, I would suggest that you spend all your working time outside of working for client #1 on the job of securing client #2.

If you have a client who’s paying the bills, you can afford the luxury of the slow tactic of farming. Like I said earlier, the farming tactics that will attract clients are speaking and writing. What if you don’t like speaking or writing? Then you can’t farm, and you’re at a huge disadvantage. But hopefully you either already enjoy speaking and writing well enough or you’re willing to take your freelancing career sufficiently seriously that you’re willing to get past the fact that you don’t enjoy speaking or writing and do them anyway. Even just doing one is better than doing neither. I personally enjoy writing and feel like I’m pretty good at it. I am NOT good at speaking and I loathe the sound of my own voice most of the time and I’m embarrassed by 80% of the things I say, but I do it anyway because my desire to be successful is stronger than my distaste for speaking.

In your farming activities you can select from a menu of options:

  • Writing blog posts
  • Writing books (self-published or traditionally published)
  • Developing courses
  • Speaking at local user groups
  • Speaking at small regional conferences
  • Speaking at big national conferences
  • Guesting on or hosting podcast

I myself have done every one of the above items. If I hadn’t done any of these things before and I were just starting out, I’d probably start out with writing blog posts and speaking at local user groups, and in fact that’s exactly how I did start out. These activities are relatively low on the ROI scale but they’re also relatively low on the time/effort/expense scale.

Blogging is most successful when it’s done around a specific topic. For example, I currently mostly write about Ruby on Rails testing. (I also have a podcast and give talks on the same topic.) Deciding on a technical focus can be a little bit tricky. I arrived at the focus of Rails testing as a result of enrolling in 30×500, a class that teaches entrepreneurship skills to developers.

For more help

There’s probably a whole bunch of important stuff I’m leaving out. If you’d like to learn more about how to be a freelance programmer, you can check out my other posts on freelancing.