Hello hackers! I'm currently putting together a guide about Technical Design Patterns for SaaS, and I'd love to know your experience.
There are many courses and blogs like "How to build a startup in a weekend", but those fail to actually explain their technical decisions.
WHY does the database look like this? WHY choose React? WHY host on Heroku? Do I really NEED to use this (another!) service? 🤷♂️
When I first started FeedBear, I had no clue and just did what I thought was best. There was no time to do proper research. I didn’t think about the future much.
That was two years ago, and since then, I noticed many painful mistakes that affect my productivity and motivation today. Some of them are unfixable without rebuilding the whole app. 🤦♂️
I’m writing a guide I wish I had in the beginning. I’m talking database design, hosting, tech stack, using external services vs. building your own solutions, security, everything.
Please share your experience so I won’t miss anything important.
In my experience, I have been working on one software product that had a medium complexity. I was able to finish the product but just then I realized, I am only halfway to publish that product. In order to have the product ready for commercial use I still needed to implement:
Plus, the list of nice-to-have features was extensive too:
...
Also, I didn't have much experience with deploying the Rails app and making sure it runs smoothly. I didn't know much about releasing new versions not destroying or influencing current live data in the database.
All these things led me to abandon my project in the end.
Thanks, Marek!
Sad to hear that you abandoned your project because of technical difficulties. I aim to help people avoid issues like this.
Sometimes, it's better to use a ready-made solution than to write the code yourself.
The most difficult thing is the full stack knowledge. I'm good with backend and like it, I can write everything frontend wise but I don't really like it. The most difficult part for me is the devops, deployment, cicd pipelines, orchestrations...etc. It can be really a mess and takes quite some time where you're not "creating".
It's easier to develop and maintain dynamic applications that need to do a lot of calls to the backend if you use something like React, Angular or Vue.
I like control so I prefer using AWS. Even though they're 20% more expensive than let's say oracle cloud. But who cares unless you have big volumes. This skill is highly transferable.
Regarding technical decisions. My technique is staying flexible and avoid perfectionism. Avoiding taking the "right" decisions because they seem to be the right thing to do. It's not because it looks good on paper that you need to implement it.
For instance typescript is amazing, static typing, self documented functions, etc. But setting up is a mess, fixing missing types, conflicts with libraries that are compatible with javascript but not with typescript....etc
For frontend state management, Redux seems like the industry standard, but redux is a lot of boilerplate. You don't really need something like redux when you just start, and odds are when you have a big app you'll need to transition from redux to something faster like Mobx.
I can say the same thing about GraphQL. It's not because it's popular that you have to use it.
Stop using NoSQL, use boring technology. The one that is stable, where you can easily find developer to build in and the one that allows you to go fast.
Also avoiding reinventing the wheel is important, if there is a saas that does what i need i'll probably pay for it instead of spending 2-3 week poorly implementing this feature.
Hey @vladwulf, thanks for the answer!
I agree with you, keeping things simple, avoiding "hype" and sticking to what you know makes you more productive.
This comment was deleted 6 years ago
Thanks, Taimoor. Yes, the sheer amount of options is quite overwhelming. Your pick of Heroku and Netlify was a good decision. Being a solo founder, complexity is a big factor.
Pricing is another story. Maybe even more complicated than any technical decision 😅. Every product is different. It's also important to know your customers and their behavior. Multiple plans didn't make sense for FeedBear but may work for you.
But when it comes to making changes to your pricing and how easy it is for you to update the app, THAT is a technical problem. It's important to set it up so you can make changes quickly because your pricing will inevitably evolve multiple times. Especially in the early stages, as you get to know your customers more.