What tech stack should you use for your product?

There is a lot written on that topic, but I feel that there isn’t enough clarity, so I’d like to put out my expertise. And for the sake of not creating another philosophical article on the existing platforms, I’ll try to be as specific and practical as I can be.

In this guide, I’ll be talking mostly about the back-end part. And since I haven’t used all the languages or frameworks — I’ll only talk about the ones I know well. That would be Ruby/Ruby on Rails, Laravel (PHP), GoLang and NodeJS.

Rails logo

Ruby on Rails. The rockstar on retirement.

Ruby on Rails has been super-hot in a startup world and my personal favorite for a fair share of time. Now — it seems like the platform had seen better days, but I wouldn’t say, you should put it off the shelf yet. The best qualities of Rails are the ease of understanding, the speed of development, and a huge community (meaning, a huge number of libraries and extensions to fit your product needs). In my opinion, the best use case for Ruby on Rails is when you have a startup idea and need to validate it quickly. It’s basically a go-to option for MVPs. But if you work “by the book” you may have heard that an MVP should never be transferred to an actual product. Hence, once you know, your product has potential — you need to build the full-featured version from scratch rather than just building on top of what you have. This is where things can get complicated. In my experience, when business-logic kicks in and you have to make custom non-conventional stuff — Rails no longer plays well, which results in a lot of piled up quick fixes and bigger effort to maintain stability. Also, the speed isn’t as good as it might be on Node.js or GoLang. Another issue, that I see is that Rails still falling back, trying to move away from a monolith architecture. In these times of single-page applications, with React, Vue, and Agular — it gets very hard to compete by having only API mode. I guess it’s the lack of competition that caused Rails to fall out of the “top picks”. But I wouldn’t wanna trash talk the platform, it can still be used successfully in certain cases. Also, you can achieve a very good result by using native Ruby, with Sinatra or Grape API frameworks and Sequel library for database querying. This toolset will give you the ability to use the single-page application, better speed, and long-term maintainability, plus — pretty much all the perks, that Ruby itself has to offer.

Laravel is the new Rails.

Unlike Ruby, there is a lot of competition in the PHP world. So the fact, that Laravel became the most popular PHP-framework really means something. The funny thing is that the platform was inspired by Ruby on Rails, but after I spent my share of time working with it — I can tell that the student had overcome the master in some aspects. Laravel has a huge community, that can compete with Rails. Also, speed is a bit better. When it comes to single-page applications Laravel has the API-module and Vue.JS support out of the box. And, most importantly, it’s highly customizable when the business-logic kicks in. Overall, it can be used in the same cases as Rails.

The development speed is a bit slower(at least for me), but you probably won’t need to change platforms and rebuilding everything from scratch every time you get a proof of concept. So, if you are looking for a perfect balance between the speed of development and application stability — Laravel could be one of your first choices.

Node.js: callback hell, but performance heaven.

To be honest, I haven’t had way too much experience with Node, but I’m confident I have enough to make certain conclusions.

Node.js is very easy to get up and running, and the speed is very impressive (at least compared to Rails or Laravel). Plus, it should be easy to find a developer for your product, since Node.js is the most popular platform at the moment with support from a huge community. It seems like everyone is either using it or would want to use it. This may be because of the fact that the platform is written in JavaScript (same as all of the major front-end frameworks). So if you use it — it’ll be easy to find a full-stack developer, who will handle things on both the front-end and the back-end. Although, that can be the main Node advantage or disadvantage. The thing about JavaScript is that it is a very good language to use but it’s super-easy to mess things up. Not sure if you ever heard of the term “Callback hell”, but it can be an issue if you have JavaScript. I’m not going to get very technical with it, so in simple terms, if you are not accurate enough with your code and architecture — you may end up having a very complex codebase. This is bad for business because it becomes very hard and time-consuming to support and update your product. This leads to a series of bad solutions and quick fixes, that will eventually kill your speed and stability. In other words — using Node.js will be a good option, but you have to make sure that your developers know what they’re doing. The development may not be as fast as the frameworks above, but Node is a bit more modular. So it’ll compensate with the application speed, good maintainability (as long as you have qualified devs) and the ability to scale to an almost infinite level. So if you know, that your product will go big (Or at least, you believe it) you might want to consider Node.js as your platform.

GoLang: A reliable tool for someone, who knows how to use it.

GoLang is like a rocket, it’s fast, extremely reliable and can take you up to the freackin’ space. But there’s one thing about this “rocket”: You’d have to assemble it first. And if you don’t assemble the rocket right — we’ll, it’ll probably blow up. So, Go is a powerful platform with a fair support level from the community. It’s very fast, it can be used on different platforms (Linux, Mac, Windows). And it can be used to build pretty much anything from the web-apps to the controllers on smart-home devices. But it’s a lower-level language with pretty much direct access to the memory. Meaning, you have to use it right, or you not only lose the performance and maintainability but can also have memory leaks and vulnerabilities, in your product. But that’s the price, you have to pay for high speed, great resilience, and an incredible level of scalability. Even though GoLang had taken a niche of small server tools and utilities, it has great potential for a lot of other stuff. Yes, the development time on GoLang is quite longer than it is on all of the above, but it’ll be compensated later. GoLang runs faster and can handle a higher load than any of the high-level platforms (again, assuming the code and architecture are fine).

So, if you have a budget for a good developer(s), a fair share of time, and an ambition to build something great and significant — I would definitely recommend you to consider Go as a part of the tech-stack for your product.

Photo by Tim Gouw on Unsplash

Summary: account for your need AND your strategy.

If there’s anything to take out of this article — it’s this:

The question “What tech slack fits me most” not only depends on what you’re building. Can you sacrifice more time on development for the best performance? Or is your product’s ability to handle high loads in a year from now, more important to the product than being the first on the market? Or does it worth spending a lot of money on making your product perfect, before knowing that the majority of people are interested in it? Those are the questions, you’d need to ask yourself before you decide what fits best for your needs.
Hoping that the article was helpful. If you’re struggling with the same choice for your future product and still have any questions — let me know.

This article was originally published on parrity.com

The Tech Expert, helping startups & innovators to change the world with top-tier web apps.