Building a technology startup might be fun on one hand, but on the other hand it is actually not easy at all. There are a lot of obstacles, unknowns, competition etc. mixed in together, which makes it sound even more scary. Even though there are real problems for every startup, this blog post will focus on the right technology for a startup.
Let's imagine you have an idea about a digital product you want to build, you asked around a bit about the product you want to make, you got positive feedback and decide to dive into coding. The next step would be to pick the best programming language out there to validate your MVP.
What is the goal of building a minimum viable product? It is to check if people would like to use your software, see if it solves a real problem for someone and, particularly, if anyone is willing to pay for it. You might have done extensive research ahead, but real acknowledgment of your idea comes only if somebody pays you for it. Not if someone tells you he/she will pay or is willing to pay, but only if someone pays you, transfers their money to your bank account. That's the validation you are looking for.
This is why you want to find out as soon as possible if you have a viable product so that you can either focus further on your project or tweak the idea or even change it completely. In order to find out, you need to get a product to the market as soon as possible. The technology that will get you to the market faster is the technology you are already familiar with. If you know nodejs, go with it; if you know ruby on rails, go with it; same with php, python, go, java, elixir, clojure etc. If you already know some technology and are familiar with it, use it, resist the temptation of learning new technology stack for your new project.
It’s true that some languages are better suited for some projects and certain needs, some of them scale better and have better performance than others. However, at the beginning you don't know if anyone will use your project or if there will be enough traction, so don’t worry about these things and go with what you know. At the beginning, you will not be dealing with performance issues and you won’t need to scale your app. Maybe the time will come where a change will be necessary, but not at the start and thus do not waste time on this.
Every language has its own benefits and drawbacks; some things that you can do easily in language A are more difficult a language B and vice versa. Keeping that in mind, if you start building an MVP with a language you are not familiar with, you might struggle with some things that would be trivial in the language you know. Even trivial things in a technology you don't know are not so easy to solve. Because of the lack of knowledge in a specific technology, you might inadvertently use anti-patterns or introduce security issues which could ultimately cause big problems. With a language new to you, you will spend a lot of time tackling uncertainties, learning all corner cases and the process of building the necessary software will definitely take much longer.
Since your goal is to get to the market sooner rather than later, you should go with what you already know. Don't fall into the trap of learning the latest programming language and tech just because it's cool. There are plenty of examples of how people failed because they wanted to pick the shiniest new technology for their products. You are building a business, that's what matters.