Takeaways From My Failed Bootstrapped SaaS Business
By: Jamal Moir
Tags: Building In Public, Founder Stories, SaaS, Engineering, Bootstrapping

Takeaways From My Failed Bootstrapped SaaS Business

6 things that went horribly wrong, and what I should have done instead. Jamal Moir Jan 21·7 min read

Takeaways From My Failed Bootstrapped SaaS Business

They (not Einstein) say that the definition of insanity is doing the same thing over and over again and expecting different results.

So, after failing to take my last bootstrapped SaaS business past the alpha stage in 2019, there are some things about my process that I have to change.

I spent some time reflecting on my last try and a few things stood out to me as fatal mistakes that doomed my business to be just another domain in my NameCheap account.

I’m going to break each one down in the hope that you will read this, and avoid the mistakes I made.

I Chose Technology I Wasn’t Familiar With

As an engineer, I’m always looking to learn new technologies and further my knowledge in my field. It’s vital to stay relevant and to stay valuable.

At the time, I was interested in Firebase and so decided that I would write my entire backend in the stack they provide. Even though it has decent documentation and isn’t too complicated, it added extra friction.

This friction manifested itself in the form of burnout and without a doubt, contributed to the downfall of my first SaaS business.

Learning new technologies is great, however, bootstrapping a business isn’t the time to do this.

As a solo coding founder, you will have a tonne of work on your hands, and not just coding either. Product design, UI/UX design, creating business systems, and more will all have to become a part of your day to day tasks.

Learning new technology doesn’t have to be, and in most cases shouldn’t be added to that list. Don’t make things harder for yourself than they already are.

And if you are worried about your skills stagnating, don’t. Where in a team you have other people to handle some of the issues that come up, as a solo coding founder you are going to have to learn how to handle ALL of them yourself.

Choose technologies that you are comfortable with, are productive in, and enjoy using. You’ll thank yourself down the line.

I Didn’t Have a Well-Scoped MVP

Yak-shaving, scope creep, and over-engineering, oh my!

Any professional developer will be painfully aware of the dangers of this deadly trio. That doesn’t however, mean that we don’t still fall into their traps.

Engineers love to engineer. We like to find clever solutions to hard problems, we like to optimise, and we like to experiment. This all leads us down a series of never-ending rabbit-holes, wasting time under the guise of “improving the product”.

In a larger company, you may have the resources to get away with this. As I found out though, solo coding founders don’t.

When I was coding up the MVP for my failed SaaS business, I had a loose idea, an approximate roadmap of what I wanted to build.

I didn’t however, strictly define what should go in my MVP and what could come later. I didn’t define the scope of the features that I did plan out either.

Because of this, I would often hear myself saying “There has to be a better way to…”, “What if I…”, or “I bet I could…”. I would then open up a can of worms that was happy to stay shut, add in another “cool feature”, or create a solution that is way too over-engineered (but it’s future proof, right?).

This lead to a bloated MVP, with features in that I didn’t know if people wanted or not, that got released way past its deadline.

When you are a solo coding founder, leave cans of worms tightly shut if they don’t have to be opened. If you find yourself writing code and building features because “in the future, you might need to…” then stop.

If you don’t need something right now, don’t make it. You don’t have time to build everything you need for the future of your product. Your product won’t even have a future if you don’t release it due to never-ending scope-creep.

Just in time development is vital when trying to bring your bootstrapped business to life as a solo coding founder.

Design your MVP, scope it, and stick to it.

I Spent Too Much Time on Stuff That Doesn’t Matter

When bootstrapping a business, it’s easy to get excited about the wrong things. This is exactly what I did.

My MVP was in unfinished, bloated, buggy hell, my roadmap was unorganised and vague, and my UI/UX design was non-existent.

And what did I decide to put time, money, and energy into? Getting a logo designed.

Why? Because every business needs one of course!

Well, that’s not true and I’m fairly sure it was more of an ego thing. I spent time getting one made because it made me feel more official. It made me feel good.

Did this help my business though? Clearly not.

Instead, it directed the three most vital and scarce resources that a solo coding founder has, time, money, and energy, away from the real needle-moving activities.

There are other things that I’ve seen people do that fall into this category too. Things like getting business cards, stationery and swag made are common ones.

Put your energy into the core functionality and systems of your business. Namely your product, your business systems, and your marketing.

I Didn’t Include Payment Collection From the Start

You might have read the subheading of this section and thought I was crazy.

Businesses provide value to their customers in return for money. That’s what makes a business a business right? Sure. But I’m willing to bet that a lot of people go down the same route I did.

If that’s you then think twice.

This act of self-sabotage attacked the success of my business from multiple directions.

My business had no income, but it did have expenses. I was leaking money and as a solo bootstrapping founder all of that money was coming straight out of my pocket.

I had a time limit on how long I could run a business like that; from the get-go I had pre-dated and signed my business’ death certificate.

It also took a toll on me mentally. Even though I was seeing all this money exit my bank account, I had nothing to show for it, nor did I see any progress towards having something either. This was demoralising.

If I did have money coming in from my business, even if it was just a small amount and I was operating at a loss, I’m sure I would have had a much stronger drive to carry on.

Collecting payments from your users from the beginning helps pay for your business expenses, it boosts morale, and it proves that people are willing to pay for your product before you get too deep.

I missed out on all of this, and because of that, my business died. Don’t make the same mistake I did.

I Was a Perfectionist (and Let It Affect My Business)

Yes, yes I know… Everyone is saying “don’t be a perfectionist”, but they are saying it for a reason.

I am by nature a perfectionist, and when you are a perfectionist nothing is done. You are never happy or satisfied with your product.

But you know what, that’s fine.

Be a perfectionist, own it, live it. Just don’t let it paralyse you and your business.

When I was bootstrapping my first SaaS business I would constantly move things a pixel or two, change implementations, and swap out libraries. This was all in good faith; I was trying to improve my product and provide my users with a better experience.

But do you know what? Users prefer to have a slightly janky experience in a useful product, that no product at all.

I let my perfectionism get in the way of release cycles. Features were ready to ship, but instead, I held them back and tweaked them for days. This lead to slow progress and even great features never being released.

Own your perfectionism, but get comfortable with releasing something in a non-perfect state. Good enough is… Well, good enough.

That’s of course not an excuse to start putting out shoddy, dangerous code though.

As one of my favourite bootstrapping founders, Arvid Kahl of The Bootstrapped Founder pushes; “Release early, release often, release safely”.

I Focused Too Much on the Competition

During the development of my failed SaaS product, I came to realise there was a duo making a very similar product to mine.

To make things worse, they were Twitter “influencers” in the niche I was in, with massive followings and one of them was a great designer so their product looked better.

I let this all get to me and negative thoughts started creeping in. “How can I compete with these people?”, “they have way more followers than me, they are going to be so much more successful”, “why would anyone use my product when this much nicer looking one exists”.

Looking back it was probably the straw that broke the donkey’s back. Along with burnout, slow progress, and a dwindling bank account, this made me completely lose the will to carry on.

What I needed to realise though, is that my product still had massive value. There were definitely people that would prefer my product due to the different feature set and design decisions.

Not only that, but the internet is big, there are enough customers to go around.

My niche had a good supply of customers but wasn’t so big that it was monopolised by a giant. I would have been able to find people who needed the solution my product was providing, and who would have preferred mine over my competitor’s.

The same would have gone the other way too. We could have quite comfortably shared the space.

Preparing yourself mentally for this aspect of running a business is going to be paramount to your success. Don’t lose perspective, and believe in your product.

What’s Next?

After failing once, reflecting, and gaining a huge amount of actionable insights, I’m at it again.

I’m going to be bootstrapping my new SaaS business, Stone Garden, as a solo coding founder, in public.

With the lessons I learnt from my last failed SaaS, I am confident that I will be able to avoid some of the pitfalls that many solo founders run into.

That being said, I am expecting many more lessons, both painful and exciting, to come my way!

Go and find me on Twitter to follow my journey building my second SaaS business, Stone Garden!