I've recently quit the US company that I've co-founded.
That makes it three — my third failed startup attempt. I've been working on it for 18 months, so this is my longest-lasting startup attempt so far.
Here are the lessons I've learned.
My co-founder and I decided to incorporate pretty early. It made sense at the time because it formalized our relationship. It made it clear how we share the ownership of the company.
But, incorporating added a lot of other issues that we had to deal with. Bureaucracy. Opening up a bank account. Hiring lawyers and accountants to figure things out for us.
83(b) election is one especially sweet surprise that I had to deal with. We had to figure out how to do that, and even the lawyers and accountants we hired didn't know how. I had to send two complicated forms and a copy of my passport notarized by the US embassy via snail mail overseas. After a couple of weeks, I got the rejection letter saying that I should file another form. They also requested another copy of my passport. They no longer accepted them notarized by embassies. How funny.
This was a big surprise. I didn't expect to deal with so many issues with bureaucracy in the states. I'm used to that here in Croatia, but I didn't expect the same treatment.
Stripe Atlas and Gust Launch, which we used, make incorporation super easy. But that doesn't mean that you won't have to deal with legal stuff. We jumped the gun. Thinking they would do everything company-related for us, but that turned out not to be the case.
Instead of building a product, we spent time and energy on tax and legal stuff because of this. This was the biggest mistake we made. It affected the time and energy we could've invested in building the product.
Incorporating early to protect yourself also doesn't make sense. If you think your co-founder will screw you over, why are you starting a company with them in the first place?
The right way to do it is to wait with the incorporation until we launch the product. We could've given a 30-day free trial, so we have some time before billing people. Having a product without a company is way better than having a company without a product.
Risking by not having billing done on time is much better than risking a lot of time on company stuff. All that time that went into company stuff ended up costing us the product.
We never launched anything. 18 months of part-time work, down the drain. As always, my consolation is, "at least I've learned something." Yeah, I wouldn't be able to write this piece if that wasn't the case.
It took us this long since we didn't feel it was ready for the launch. We ended up coming up with constant redesigns and user experience improvements. Running in circles felt very productive.
Launching is a reality check, and we didn't do it. We kept believing we are building something useful because it was valuable to us. We were eating our own dog food. But we are biased. We are creating it, so of course, we are going to use it. We'll come up with creative ways for existing products to annoy us.
Is it different enough than other products in the same space, and are people willing to pay for it? That's the question. And we didn't bother to get the answer to that by launching.
We kept running.
I started building it with Node.js for the back-end, React on the front-end, and Electron for the desktop app. I had a laughable level of experience in each of these. I chose something I don't usually work with. Big mistake. This added another potential point of failure that could've been avoided.
It's tempting to look at a startup as a place where you can have fun. Where you can play around with the most popular technology of today. An escape from that pesky legacy application you have to maintain in your day job. But this comes at a price.
Play with technology that excites you as much as you want, but do it on the side. Don't call that a startup. That's more of a fun experiment than a startup. Make exciting things in the product, not in the tech stack. Make it interesting to the people you serve. Not for yourself, at least not in the tech stack.
Getting pageviews on an article about the exotic tech stack you use should not be your startup's goal. Building a startup is not a popularity contest. No one cares about your startup and its tech stack. The only thing everyone wants from you is to improve their lives somehow. Solve their problems. Figure out a way to do that, and your startup will survive.
Startups should have as little potential points of failure as possible. Don't add one by choosing exciting technology. If you can avoid unnecessary risks, you should.
The odds are against you from the start. Choosing boring will increase your chance of success. The exciting shiny new thing will try to seduce you. Be aware of it and don't let it. Fight the novelty bias so prevalent in the software development community.
Surviving for as long as possible should be the goal of every startup. Avoiding failure, not playing with exciting technology. Startups are hard already, so why make it super hard for yourself?
Use the tech stack you're most proficient with. If you have a lot of years of experience with the stack, you should stick with it. You know the quirks of the tech stack you are proficient with. There are no surprises with its limitations. It won't surprise you with something you're going to spend days debugging.
If you want your startup to succeed, think hard before using anything that's not boring. Boring will get you far.
These are the lessons, and I'm writing this for myself too. To remember them when I start my next attempt. And the next one is coming, for sure.