Pourquoi utiliser Elixir quand on est une startup ?

by Johanne-Franck
ELXIRLANG SCALABILITY
Elixir Logo Phoenix Logo

Vous êtes une jeune startup et vous souhaitez développer votre idée, qu’il s’agisse d’un PoC, un prototype ou encore un MVP.

Lorsque l’on est une startup, on se pose des milliers de questions. La difficulté essentielle est de bien distinguer les enjeux réels, qui vont mener à la survie d’abord, au succès ensuite.

Cet article ne va rien révéler d’inhabituel sur ce sujet, mais simplement rappeler quelques points essentiels :

  1. Votre startup doit avoir un go-to-market rapide (plus c’est long, plus les inconnues s’accumulent, plus les investisseurs s’inquiètent).

  2. Votre produit va changer. Plusieurs fois. Il faut pouvoir suivre, ré-écrire, pivoter. Rapidement.

  3. Votre besoin métier est prioritaire. Mais il ne doit pas engendrer une stack trop complexe, un écosystème applicatif qui nécessiterait 5 à 6 développeurs.

Abordons la réflexion du choix du langage et de l’écosystème applicatif sous l’angle de ces trois points.

Répondre au premier point semble trivial, il “suffit de coder vite”. Ou pas.

On code vite en Python par exemple, mais la permissivité du langage amène rapidement de la dette technique. Beaucoup. De la gestion de dépendances délicate dès que les librairies s’accumulent (monkey patch hell …).

Idem pour Go ou Rust, au-delà de l’aspect très bas niveau de ces langages (ce qui signifie plus de boiler plate code, et beaucoup de quantité de code avant d’arriver à un premier produit), la gestion des erreurs est un vrai sujet.

Les langages fonctionnels (comme Haskell ou Elixir) à contrario se positionnent de l’autre côté : tout est orienté data, la propagation des erreurs et le debug sont amplement simplifiés.

Mais un go-to-market rapide, c’est aussi aller rapidement en Production. Avoir votre fameux démonstrateur, pour séduire les investisseurs.

Les langages web sont souvent bien packagés pour cela. Ruby on Rails a par exemple été la stack de choix pour plusieurs startups à succès (AirBnb, Stripe, Coinbase…).

Elixir s’est fortement inspiré de Ruby, et en a tiré le meilleur (simplicité de syntaxe), tout en évitant les pièges qui rendent les challenges techniques difficiles à résoudre (explicit over implicit, meilleure maintenabilité, N+1 queries …).

Quelques réussites signées Elixir : Discord, Facebook Messenger, Whatsapp, Pinterest …

Le deuxième point est plus délicat : comment ré-écrire du code facilement ?

Elixir vient avec un premier coup de baguette magique (que d’autres langages et frameworks proposent aussi parfois) : le scaffolding, ou génération automatique de code. Idéal lorsque vous produisez votre premier modèle de données, et que vous devez visualiser rapidement.

Si votre rigueur de gestion de code (Git pour ne pas le citer) est bonne, ré-écrire devient un jeu d’enfant, une seule commande et vous re-générez tout !

Deuxième coup de baguette magique -mais il fera sans doute l’objet d’un futur article- le code assisté par IA (Claude aujourd’hui) : la simplicité de syntaxe d’Elixir le rend parfait pour un LLM ! Un choix d’avenir me direz-vous, et nous sommes bien d’accord.

Enfin, pouvoir ré-écrire simplement, se base parfois sur un principe simple : un code maintenable est facilement évolutif. Et les pincipes d’Elixir sont construits autour de ces postulats (cf génération de tests unitaires automatiquement avec le scaffolding, outils intégrés d’analyse statique de code, génération automatique de documentation, etc.).

Le troisième point, concernant la couverture du besoin métier, est sans doute l’un des plus difficiles à anticiper tant il s’agit de quelque chose qui va évoluer au cours de votre projet de startup.

Disposer d’une stack technologique qui permette d’y répondre sans ajouts ultérieurs est un gain de temps, mais aussi un gage de maintien de compétences assuré.

Balayer ici l’ensemble des points faibles des autres langages et frameworks associés relèverait d’une comparaison de cour d’école sans intérêt, lister à contrario les points forts d’Elixir et des couvertures de ses librairies vous éclairera sans doute :

  • Votre projet nécessite des interactions utilisateurs, du multi-tâches, de l’asynchrone ? Elixir est conçu à l’origine pour cela (cf les premières startups qui se sont construites dessus), tous les processus sont concurrents par design, et la communication entre eux est un jeu d’enfant.

  • Votre projet s’appuie sur du traitement de données, des workflows, de la gestion d’états et des transactions longues ? Elixir dispose pour chaque cas d’usage de librairies précises et extrêmement puissantes (Broadway, Oban, Exporer …).

  • Vous avez besoin d‘une SPA (Single Page App), une application temps-réel, avec système de notifications ? Le framework web d’Elixir embarque nativement ce qui pour d’autres langages est une dépendance externe (cf LiveView).

  • Vous avez des besoins technoogiques plus spécifiques : vous construisez un projet autour du Machine Learning ? Un projet IoT ? Là encore Elixir dispose de boîtes à outils intégrées pour égaler les best-in-class, si ce n’est les dépasser (Livebook, Scholar, Axon, Nerves….).

Un autre avantage “paradoxal” que les développeurs senior apprécieront : le choix de librairies est limité. Il n’existe pas, comme en Java (et maintenant aussi en Go ou Rust), 50 librairies pour répondre au même besoin. Les librairies incontournables, intégrées au cœur du langage, sont maintenues par une core team de quelques développeurs d’élite, testées et documentées, et adoubées par la communauté. Cela simplifie grandement les choix d’implémentation, et garantit souvent des architectures plus solides et maintenables.

Un dernier point non encore cité dans la réflexion, la disponibilité de talents.

Il est indéniable que Python, JS, Ruby … disposent d’un pool de développeurs bien plus grand qu’Elixir. Et cela restera probablement encore le cas pendant plusieurs années, la popularité d’Elixir est grande parmi les connaisseurs, parmi certains développeurs seniors, mais limitée auprès des débutants.

Cela signifie aussi que le niveau de seniorité est grand dans cette communauté, souvent corrélé au niveau d’expertise.

Et comme grâce au point 3, l’écosystème Elixir couvre souvent l’ensemble des besoins métiers, il faut peu de développeurs pour réaliser rapidement le prototype de vos rêves.

Reste à les trouver …

Mais finalement, vous faut-il des développeurs en interne ? Est-ce réellement votre besoin, pour construire le plus vite possible votre MVP, et aller chercher vos investisseurs ?

Si la réponse à cette question est non, alors arrêtez-vous, nous sommes une agence parisienne, spécialisée en Elixir, et nous nous ferons un plaisir de construire avec vous ce beau projet.

Au plaisir d’en discuter !

Références:

  1. Pourquoi je parie encore sur Elixir, par un développeur senior dans le milieu depuis 2016

  2. Pourquoi Remote utilise Elixir : easy-to-code versus easy-to-scale

  3. Cas d’étude architecture et couverture fonctionnelle complète : Veeps