What is an MVP and why Elixir is a perfect language for building a minimum viable app?
Ok, so you are planning to change the world! You have an amazing idea for a new web or mobile app, but... Did you test it? If not, you should do that! To check if your idea is really valuable for your stakeholders - create an MVP (minimum viable product). What exactly is this?
Minimum viable product
How do you maximize the return of your investment from an idea? By creating a minimum viable product. MVP is a version of a product with just enough features to be usable by the first customers.
In the beginning, you need something that is going to provide quick feedback about your idea, some sort of a prototype that will have only a few abilities. Why? Because it is the fastest way to validate if your app is going to bring any value to the target users' group and whether it’s worth investing more money into your product! The MVP is analogous to making an experiment in the scientific method, to prove that your hypothesis about market needs is real.
Building an application can be really time and money-consuming as well as potentially risky. The last thing you want to do is spend your energy and time to create something, that may turn out not to be fruitful for your business.
Relying on your project stakeholders and identifying which features are absolutely necessary for your customers, will help you determine what is "need to have” for them to implement in order to reach your project’s goals. By defining a clear MVP scope as early as possible, you can cut down your overall expenses and risks.
It’s that simple – start small with an MVP and get validation instead of investing everything in something that your customers might not even want in the first place. Let your users tell you exactly what they need.
Read more about MVP in our MVP Builders guide ebook.
What is an MVP in web/mobile development?
Let's tell the story about a giant in this area - Facebook. How do you think this application started? We all know this story, right? College social app, only to find friends from the nearest area. Now? The largest social network in the World.
That is exactly how you should think about your future app development, especially if you want to create something really powerful! Start with small steps. Think about your MVP application as a prototype to the final product or service. Something you could show other investors as a product good enough to solve stakeholders' core problems, but with the necessary features.
It’s not only a Minimum Viable Product, but also a Minimum Usable Product, just to show how it can work and be scaled in the future. And when the user base interest increases - BOOM! You are in a good position to know exactly how your app should develop.
Read more: 7 Steps to a Successful MVP app
What technology should you use to create an application?
Of course, as a software house that is just IN LOVE with Elixir programming language & Phoenix, we should say – ELIXIR! But... We know that it is not that simple. Everything depends on your idea and the life-cycle of your application.
If you believe that your application will grow fast and as a result process more and more data - for sure Elixir will fit that. If it is going to be an application with many users - yes, definitely too. If you want to scale your application and have the ability to add other tools and inventions inside of your platform - you should think about Elixir for sure!
Your first concept, an MVP which you will create, will show you the value of your idea and give you an insight into what other features your application is going to need. Good analysis based on your MVP defines your future product and gives you knowledge about the resources you need to create it. Getting to the core of this topic - is it worth it to use one technology for an MVP and then... change it when your application will grow? Of course not!
Many organizations don't take growth into account when they choose technology for an MVP app. Their main goal is to deliver a prototype of their system quickly and cheaply. It is totally understandable in the beginning, but if you really want to be time- and cost-efficient you might not want to rewrite your application again when it will develop. Usually, there is no time to rewrite the product later on (and lack of money to do this as well). Think about your early-stage project as a continuum. Focus on processes you will need in the future. It will give you the possibility to deliver business value in the long run.
At an MVP stage, time pressure is usually pretty big, as others are probably already working on a similar software as you do. The cost of the MVP is also important. Quality is less often the focus of MVP. However, if you do not want to lose quality, bearing in mind that the application must be created quickly and relatively cheap - choose Elixir.
I think this is the main advantage of Elixir - as it is quick and fairly easy to do an MVP or a full app. Let's elaborate on this thought in a little bit more detail and more specifically.
So far, the most popular language for creating an MVP application, which is compared to Elixir, was Ruby. It is not a surprise, because Ruby is one of the most popular languages when it comes to productivity. If you create the same program in different languages/technologies, the one that requires the least lines of code is the most productive in terms of time. And Ruby is like that.
We even have a saying in the Ruby community "There is a gem (lib) for that!". Usually, a library already exists if we want to do something and we can quickly implement it in our code. The easy syntax of this language and a big number of libraries makes Ruby a very productive language which in business language means that you can build an MVP app with Ruby relatively cheap.
It sounds like Ruby is a perfect choice for MVP apps – so why would we compare it to Elixir? Well, it’s all about scaling. At some point, your app may become successful, and as a result, you’ll no longer need an MVP, but rather a fully operational scalable app. This is where Ruby fails, and this is where Elixir thrives.
Elixir is a general-purpose programming language. It is excellent for many types of applications. Performance, productivity, and scalability of Elixir are the top advantages, especially for web applications and IoT development projects. At the same time, it is also as productive as Ruby, which is why it’s a great fit for the MVP stage, as well as scaling.
Although Elixir as a programming language is only 9 years old, the community is very active to push the technology forward and this is why we can say, its position in relation to Ruby is getting similar. Ruby still has a lot more libraries, but Elixir is already well on its way to reach a similar level.
In addition, the creator of Elixir, José Valim, is a very active contributor in Elixir, Ecto, Phoenix, and the development of many other Elixir-related libraries. You can find him mostly everywhere in discussions about Elixir.
Elixir in MVP projects - why?
The sooner an application is created, the better. Productivity translates into lower costs. This is a critical point for an MVP.
In Elixir, we talk about productivity, because the syntax of this language, is largely borrowed from the simplicity of writing Ruby code - we need relatively little code to write something complex and we can write it fast.
Although Elixir as a language is relatively young, it’s already supported with a lot of ready-to-use libraries that make the development much faster. It would not be possible without the fact that the Elixir community is a very active one and growing each year.
The last aspect that has a big impact on productivity is the functional paradigm in Elixir. Functional languages are often considered to be difficult. That’s not true at all. The basics are very simple here – we have input data in a function which we transform somehow to produce the result. Most of the programming you will do in Elixir comes down to writing simple functions, which in the end makes the codebase easy to understand and maintain.
Why choose Elixir for an MVP - ability to scale! In Elixir, the transition to the application with higher traffic is smooth (an example here is instant messaging like WhatsApp). We don't have to think about changing the technology stack when the application starts driving more traffic, which would be the case with Ruby.
Take a look at the Bleacher report case – they had to transition from a different technology due to huge traffic hits which made the app slower and slower. They really wanted to speed things up, and that’s where Elixir came up. Dropping Ruby allowed them to reduce the number of servers from 150 to 5, while handling 8 times more traffic!
Elixir is our go-to technology in Curiosum because it is based on Erlang, and it is perfect for applications with a lot of simultaneous connections at the same time, e.g. for telephone lines or WhatsApp calls. Over 50% of the world's phone traffic is based on Erlang. It was created with a goal to handle a lot of calls at the same time and resume calls as soon as something disconnects incredibly quickly.
We know how many telephone lines are there in the World. We switched from a local to a global telephone network. And a lot of things are based on that. Actually – the whole internet is based on multiple connections and that’s why Elixir with the power of Erlang is just a great solution for scalable web and mobile applications.
Basically, a typical web application can – to a certain extent, and not exactly accurately, but well enough for now – be described as a machine that takes users’ requests and actions from something akin to a conveyor belt, interprets and processes them, and prepares an outcome to be sent back to the user. You might have them processed by a single machine from a single belt, and this will be efficient until a certain load is reached, but then why not multiply the setup and make it faster?
Imagine, though, that Ruby, Python and other „traditional” languages are like countries that have severely blown-up legal regulations that involve bureaucracy and heavy taxation of multiplying processors like this, while Elixir is a friendly, easy-going, and cost-efficient – may be “minimal” in a way – ecosystem, that allows you to scale at ease.
Knowing that we’re limited when it comes to improvements in hardware development (Moore’s law)) we have to keep in mind, that parallel processing is getting more and more important in modern applications. This is where we can improve the speed and it’s a good idea to pick a language that has this aspect well-implemented.
Elixir language - is it popular enough?
Elixir is a young language, but to remember once and for all, Elixir is actually an overlay for Erlang, and Erlang as an experienced 30-year-old language has stood the test of time and is still in use. Therefore, when investing in Elixir, you invest in the power of Erlang dressed in a more accessible way.
A narrow group of programmers using Elixir can be treated as a disadvantage, but programmers writing in Elixir have a high level of satisfaction, so this may cause them to stay longer in the company because they will want to write in this language, especially as it evolves.
José Valim wanted to harness the power of Erlang, but embed it in an accessible programming design that would simply be fun to use. It is a nice springboard from such very complicated languages and it is just a productive technology. If a programmer has to spend too much time on something, he/she will get frustrated.
Programmers will be able to learn this technology quickly. If you want to recruit someone, you can start recruiting among Ruby developers. You can also try among other programmers because they probably won't have a problem with it either. Furthermore - we know the stories of programmers who were really losing their enthusiasm, but grabbed Elixir and regained the joy of programming! If you’d rather outsource the Elixir team building and development to another company, drop us a line! We’re here to help.
What type of projects can I implement in Elixir?
Various IT domains can be handled by this single language, which reduces the mixing of technologies as the application develops. Elixir is developing very well when it comes to the entire application system. We have Phoenix Liveview here, a solution that allows you to write less in JS, which, in some cases, can be a replacement for React.
We also have Nerves - an open-source platform and infrastructure that helps you to build, deploy, and securely manage your fleet of IoT (Internet of Things) devices at speed and scale.
Let's take for another example the NX project where Elixir programmers start to play with machine learning and AI.
The idea is to use as few technologies as possible to expand the application with new domains, so as not to learn more languages - we have a library in Elixir and you can simply use it.
Summary - Elixir gives you so many business possibilities!
Elixir is already the pick of some big players like WhatsApp, Discord, Pinterest, Slack, and many more. The system's ability to handle a growing number of operations makes Elixir an excellent choice for systems with high traffic. Elixir makes perfect use of system resources and allows you to scale the infrastructure.
Due to the functional nature of Elixir, the developer can focus on delivering business value in each iteration, without struggling with the code structure or taking care of managing the lifetime of objects.
Fewer production errors and greater transparency of the business logic result in much less fragility in the business plan, and therefore maintenance costs are much lower.
Productivity gains and time and cost savings in the short and long term make Elixir and Phoenix the perfect solution for most of the applications and MVPs you plan to build.