# Tech Tradeoffs #1: Django or Rails? MySQL or MongoDB?

### Context:

I started working at [Seezo](https://seezo.io/), where we are building a product for security design reviews. At this point, we are on the 0 to 1 journey and all the technical decisions we make might have a large impact on the future of our company.
 
Personally, I have always been curious about why did someone pick X framework over Y or should you build a feature in this way or that...

Now that I am in a place where I get to be close to this decision-making process, I'll try to document it here. Some of the tradeoffs might actually come through a mix of research, previous experience, and discussions while some are just made in the moment(relying on our gut feeling).

## Which framework?

Okay, this is the most discussed question and maybe the most vital one too!

How do you decide between so many frameworks out there? Even worse, 1 or 2 new ones coming out every other month?

To understand our decision, I'll give you a little context. The 3 things you need to know about us are:

1. Building an MVP
    
2. It's a B2B SaaS product
    
3. The core product logic is NLP    

This should give you enough idea about the key pointers we had in our heads when deciding on a framework. Let's start with the MVP point.

Since we are at a small stage and barely have any developers, it's going to be hard building and maintaining both Front-end and back-end services(we just have 1 FTE, me). It's just simple to have server-side rendering for now. The 2 biggest frameworks that pop into mind are Django and RoR, which are known for this.

Also, since it's an MVP and B2B, we can get away with a non-state-of-the-art front end, to begin with. I doubt this would be the case in a B2C product...

Okay, so my expertise is Rails. I wanted to strongly vote for it, but the main issue is Python is a clear winner in terms of NLP libraries and whatnot. So basically, we have 3 ways to look at this:

![3](https://i.imgur.com/7RblMZN.png)

#2 is a clear NO, as we can't spend time recreating the wheel and we might spend more time doing that, than what we saved from using Rails.

#1 and #3 are the actual candidates. Since using Rails for the business logic will be faster and let's face it, I love working with Rails, #3 seems like a solid choice!

But the question is, over the course of say a year, will I gain more productivity from doing the web part in Rails than what I will lose by having to manage 2 HTTP services instead of 1? 

Ding Ding Ding, we have a winner #1. Managing 2 services as a small team is going to be very troublesome. From Infra to debugging, managing 2 services is more painful than learning Django which is in theory similar to Rails(MVC)!

Hiring decent Rails Devs in India can also be a challenge but that is a story for another day.

Okay, so we understand why Django. This required some thinking and a bit of learning from past experience. How did we decide which database?

### MySQL vs Postgres vs MongoDB
![SQL vs nosql](https://i.imgur.com/9jwr1IS.png)
Not all decisions will have some amazing science behind them! 

We went with MySQL simply because our co-founder was comfortable with it :D

At this point, MySQL vs other RDBMS doesn't have enough arguments to spend choosing one. Why SQL over No-SQL can also be debated, but the only thing in favor of No-SQL at this point is that our schema will evolve pretty quickly, and having that flexibility can be handy.

But it's still not that big of a deal, as we are building a product whose main functionality is going to be with a Vector DB and everything else is kinda sort of supporting it. Here familiarity wins.

As we move forward in the journey of building something from scratch, I will keep writing about the tradeoffs we make and if they came to bite us or we ended up being happy about it!


