Two years ago, I quit my developer job at Google to build my own software business. A year later, I posted an update about my finances, happiness, and lessons learned. Today marks the end of my second year, so it's time for another update.
How I made and spent money
|Net Profit||-$20,871||-$2,402||+$18,469 (+88%)|
My second year was a huge improvement financially. I increased profits by $18.5k!
Overall, I still lost money, but try not to get too hung up on that. I tripled revenue to $7.2k and cut expenses by more than half.
How can you afford to keep losing money?
My long-term unprofitability often perplexes people. They assume I fund my money-losing endeavors with freelance work, but the truth is that 100% of my working hours go into my non-lucrative businesses. This is possible due to three main factors:
- Low expenses: I have no children and live in an inexpensive area where my costs are ~$2k/month.
- High savings: It's hard to work for big software companies for 11 years without building a decent nest egg.
- Lucky investments: Throughout my career, most of my money has been in the S&P 500 during periods of especially strong market runs. My small bets on cryptocurrency also paid off well.
Project by project
Zestful launched in mid-2018 as my first attempt at a software-as-a-service (SaaS) business. It allows food apps to recognize the structure of recipe ingredients. Given an ingredient like, “2 1/2 tablespoons finely chopped parsley,” Zestful infers that
2.5 is the quantity,
tablespoons is the unit of measure,
parsley is the product, and
finely chopped is a preparation step.
After earning a big fat zero last year, Zestful finally realized significant revenue throughout 2019. A single enterprise sale in December accounted for 79% of its annual revenue. That sale also represented 53% of total revenue across all my businesses.
|Logo Design||$-200||$0||-$200 (-100%)|
|Net profit||-$7,854||$4,930||+$12,784 (+162%)|
Zestful is in a strange position because companies who parse ingredients never want to switch to Zestful. The cost of migrating to a new API outweighs potential price and performance improvements. Instead, all of Zestful's customers are companies building a brand new product.
How do you sell to companies if they don't even exist yet? My strategy has been to invest in search engine optimization so that Zestful ranks highly for queries like “ingredient parsing.”
Is It Keto gives readers clear, straightforward answers about which foods are compatible with the keto diet. It generates revenue through Google AdSense display ads and receives commission for every Amazon purchase through the site.
|Food corpus size||53||202||+149 (+281%)|
|Amazon Affiliate revenue||$1||$1,315||+$1,314 (+131,400%)|
|Google AdSense revenue||N/A||$940||+$940 (+inf%)|
|Meal plan sales||N/A||$24||+$24 (+inf%)|
|Content writing||$0||-$3,845||+$3,845 (+inf%)|
|Social media management||$0||-$314||+$314 (+inf%)|
|Graphic design||-$211||-$163||-$48 (-23%)|
|Net profit||-$1,882||-$2,158||-$276 (-15%)|
88% of Is It Keto's visitors come from search engines, but I've never been able to connect improvements in search traffic to any change I made to the site. There were months when I added lots of content, optimized page titles, and earned high-ranking backlinks, yet traffic remained flat. Other times, I ignored the site for months, and Google traffic grew the entire time.
Is It Keto was also my biggest expense, as I outsourced much of the writing. That cost me more than it should have because I knew nothing about hiring and managing writers, but the experience taught me a lot and led to my widely ignored guide to hiring content writers.
mtlynch.io (this blog)
|Affiliate revenue||$1,244||$374||-$870 (-70%)|
|Grammarly (Grammar and style checking service)||-$140||-$140||-|
|Net profit||-$3,835||-$1,265||+$2,570 (+67%)|
Pageviews are down substantially, which is unsurprising. My quitting Google post received 500k pageviews in 2018, so I didn't expect to land another smash hit like that.
Still, I struggled to find readers last year. Throughout the preceding two years, many of my posts became popular without me trying very hard to promote them. I'd write the article then find an appreciative community to share it with afterward.
In 2019, I branched out from technical writing and focused more on the struggles of running a bootstrapped business. Even though there are plenty of online communities for bootstrappers, they attract self-promoters, so the groups are less welcoming to off-site blog posts. I've also noticed that readers are less interested in business lessons unless the story involves thousands of dollars — earning or losing large sums both seem to work.
Blog revenue is also down, which is fine because I don't go out of my way to earn money from this blog. My development costs fell dramatically because the site's freelancer shifted focus to his full-time job. Rather than hiring someone else, I've taken over development myself, as my web programming skills have improved over the last couple of years.
What Got Done
What Got Done is a tool for recording and sharing weekly work accomplishments. It's a technique that I learned while working at Google, and I've been using it to record my progress every week for the last 10 months.
I never thought What Got Done was a brilliant business idea, but months of failing to turn a profit on Is It Keto left me feeling frustrated. What Got Done seemed like a fun project to cheer me up and an opportunity to teach myself Vue.js, a popular web framework.
And it worked! I love Vue. I've finally found a tool that lets me build websites quickly without struggling through a maze of leaky abstraction.
As long as I was building What Got Done, I figured that it was worth exploring whether the site could make money. After interviews with several companies, it seemed that managers felt that they could accomplish the same results with a dedicated Slack channel, so I moved on.
|Conferences||Networking and training||-$2,182|
|Bench to Xero migration (freelance accountant)||Bookkeeping||-$232|
|Circle CI||Continuous integration||-$350|
|Coveralls||Test coverage tracking||-$270|
Conferences were a hefty expense because travel and lodging are expensive, and the conferences that accepted my speaking proposals were regional events with minimal travel assistance budgets.
Switching from Travis to Circle for continuous integration reduced my expenses by $68/month, which worked out great because it turned out that I love Circle. They improve their product faster and integrate better with Docker. Coveralls unfortunately auto-renewed without me consciously choosing to do so. I've since accepted that code coverage metrics have little value for early-stage products and canceled for next year.
I also switched from managed bookkeeping with Bench to self-serve bookkeeping with Xero. I enjoyed Bench and have no love for Xero, but it was hard to justify an extra $1.5k/year for concierge bookkeeping when my finances were so simple and repetitive.
Raise prices, even if nobody's buying
One of the best pieces of advice I received this year was from Cory Zue. He suggested that at $0.003 per request, my prices for Zestful were too low. At the time, Zestful had almost zero paid users. How could my prices be too low if nobody was buying?
Though Zestful had few real customers, it had many prospective customers. Every few weeks, a new company contacted me saying that they were interested in Zestful, but it was missing one tiny feature they absolutely needed. Desperate to win my first big client, I'd work feverishly to implement the functionality they wanted. A week later, I'd proudly deliver it to them.
“Oh, yeah,” they'd reply sheepishly. “That was for a project we decided not to pursue.”
It cost these companies nothing to ask for features, but it was extremely time-consuming for me to meet with them and implement their wishlist. I recognized what was happening but couldn't figure out a way to stop it. Ignoring the request was an option, but what if they genuinely were prepared to spend thousands per month?
When I took Cory's advice and raised prices, it changed the conversation in an unexpected way. At $0.003 per request, nobody tried to negotiate with me on price. When my rates jumped by 6.5x to $0.02 per request, everyone started asking about volume discounts. Then, when they claimed they'd buy after Zestful had their pet feature, I gave them this line:
Great! You can pre-pay for three months of service, and your billing cycle won't start until that feature is available.
I've never been burned on a feature request since.
My prices are high enough that most customers have to spend a few hundred dollars each month to use Zestful, which discourages people from telling me about the all-important features I'd have to implement to earn their $5/month. Interestingly, the customers who ended up purchasing enterprise plans had no feature requests, and those deals closed in a matter of days.
Pursuing the right idea means rejecting the wrong ones
My first year as a founder, I was a puppy chasing any ball that happened to roll by. If one of my projects failed to achieve traction, I'd work on whatever idea was next in my mental queue. Building a “quick” prototype felt cheap and easy at a project's outset, but it always took weeks of coding and subsequent months of work courting customers.
My friend David Toth taught me the value of idea screening. He pointed out that whatever idea I pursue determines large parts of my life for several months at the minimum, so it's worth choosing carefully. Instead of bounding off after the first good idea he has, David generates ideas until he has a list of at least 10. He then evaluates that list carefully to choose which has the highest chance of success.
Reading Start Small, Stay Small (notes) and The Mom Test (notes) also influenced how I approach new businesses. Both books encourage founders to start with market research and build the product later. As a result, I was conservative about building anything and gave myself permission to bail if my investigation indicated an idea was no longer my best chance of success.
Take bigger swings
When I set last year's goal to $500/month in revenue, people encouraged me to set a higher target. New businesses have a high chance of failure, so I may as well shoot for the moon.
Looking back, I still feel that $500/month was sensible. Is It Keto was a nice “beginner business” because the mechanics were so simple. Ads and affiliate purchases generated about $0.01 per visitor, on average. More visits meant more money, so I got to experiment with different growth strategies without worrying about things like pricing, sales funnels, or customer support. It was gratifying to watch my revenues begin at a paltry $1/month and then grow by 50-150% each month to reach $400/month by the end of the year.
The flip side was seeing the limitations of low-margin businesses. When revenues are a penny per customer, most avenues for expansion are off the table. It makes no sense to pay $0.50-$1.50 per click for an ad if the visitor only generates $0.01 in revenue. I'd love to bring on an employee to help grow the site, but even a cheap $200/month freelancer would have to double my traffic to justify their cost.
Now that I'm entering my third year as a founder, I'm ready to make bigger bets. Growing Is It Keto gave me the confidence to push myself more. That means taking on projects where success would afford me a couple of part-time contractors.
I still love it
When people find out that I've run at a financial loss for the past two years, they worry that I regret leaving my cushy Google job. It's common for founders to experience burnout after a year or two, but I've been fortunate never to feel that way. I chalk this up to my healthy sense of self-doubt at the start of this adventure — I expected to fail awhile before finding success. It's also easy to avoid financial stress when you're in no danger of running out of money.
Every day, I come downstairs and enjoy a leisurely breakfast with my girlfriend. We live at the end of a dead-end street, so when she leaves for work, my house is perfectly quiet. After writing for 60-90 minutes, I map out the rest of my day. I don't work after dinner or on the weekends. If I feel sleepy at 3pm, I take a nap and never worry about what my manager thinks.
Before quitting, the part of the lifestyle I fantasized about most was the pure independence of it. It is indeed as satisfying as I dreamed. I love having full autonomy over my day and the freedom to completely change the direction of my businesses or start over when it feels right.
I'd do this forever.
Grading my goals
In last year's update, I gave myself four goals for the year:
Achieve $500/month in revenue across my businesses
I did hit this goal in that my revenue was $604/month for the year and $1,657/month for Q4, though it feels like cheating to include my huge outlier sale from December. Without it, I'd be at $441 in total revenue for December, which is closer to what the likely trend will be through early 2020. It's not quite $500, but it's satisfyingly close.
Present talks at three software conferences
Three conferences accepted my speaking proposals, and I'm proud of my presentations at all of them:
|NERD Summit||-||“Modernize any Codebase through Tooling and Technique”|
|PyTexas 2019||Notes||“Why Good Developers Write Bad Tests”|
|PyGotham 2019||Notes||“Why Good Developers Write Bad Tests”|
I enjoy conferences and pick up useful information by attending, but if I'm being honest, they don't materially improve my professional or personal life. Between travel, preparing my talks, and attending the event itself, I spent six to eight weeks of full-time work on conference presentations.
I'll continue applying to and attending conferences in 2020, but I'll be more selective than last year.
Publish 12 blog posts
Depending on how you count, I either published 9 or 13 blog posts in 2019. There were nine separate updates to my blog, but one of them was a five-part series on hiring content writers. Overall, I'm pleased with my writing for the year, though I did wish more of my posts had gained traction.
I'm not a Vue expert, but I'd describe myself as “conversational.” I can build sites quickly without getting stuck on the framework itself.
After years of banging my head against the wall with Angular, I'm delighted to have found a framework that feels appropriate for solo developers.
The project that I hope to focus on for a large portion of the coming year is WanderJest, a website I created a few weeks ago.
It's difficult to find local comedy shows, as listings are scattered amongst Facebook groups, comedy club websites, and ticket sellers like TicketMaster and Eventbrite. My hope is for WanderJest to unify these disparate sources, making it easier for audiences to find shows. Basically, the idea is Bandsintown, but for comedy.
I'm piloting it in my home area of Western Massachusetts, but I'll soon expand it to other areas.
Goals for year three
Here's what I hope to accomplish in my third year as a solo developer:
- Earn $20,000 in revenue across my businesses.
- I tripled revenues in 2019, so $20k means tripling again.
- Publish 10 blog posts.
- This gives me time for about one article per month with enough slack for longer posts and time off to prepare a conference presentation.
- Learn one new technology.
- Learning a totally new language or framework tends to improve my overall thinking about software, and I've been looking for an excuse to learn Rust.
Be the first to know when I post cool stuff
Subscribe to get my latest articles by email.