Deciding on a tech stack is probably the most challenging thing to do for a startup. We, at Intentwise, had to go through the exercise of deciding our stack when we were starting. The key to deciding on a framework involves learning from your own mistakes and also learning from the experts that have done this before.
Some of our core Tech principles involve
- Speed over perfection
- Simplicity over complexity
- Not falling in love with your code
With these principles in mind, we were sure that CI and CD would always be at the core of our development. Any framework that made this easy with enough open-source support would get our vote. We evaluated the following:
- Java MVC (Spring-boot in particular): This a great MVC framework to get started with. Since we had many years of Java experience, we quickly realized that the framework was good, and could enable us to build out a platform well. However, we were a bit hesitant to use this considering all the heavy lifting involved.
- LAMP/PHP: I am not even going to talk about this much 🙂
- Python/Django: Another framework we were initially tempted to use, given we were building out a lot of Python micro-services to do some heavy data aggregation and number crunching. In the end, we were NOT convinced that this would scale well from a developer’s point of view.
- Rails: Eventually, the framework we picked. Rails have been around for numerous years and has substantial community support. It also offers the right framework for the things we want to build — NSQL, DB and other transaction-based events that are supported well. The principle of “Convention Over Configuration” feels just right.
There is a lot of thinking that went into the front-end JS/HTML/CSS Framework selection. We will talk about that more in our Part 2 of Web Framework.
Intentwise is a Chicago-based advertising technology company that helps brands, sellers and agencies amplify their Amazon advertising effectiveness. Intentwise’s industry-leading SAAS platform harnesses the power of machine learning and AI to provide impactful recommendations, diagnostics, and automation.