Choisir Scala en entreprise, est-ce bien raisonnable ?

Le cas « Scala chez Normation »…

Chez Normation, nous utilisons Scala depuis plus de 3 ans pour notre plus grand plaisir – et quelques irritations.

Quelques irritations donc, le plus souvent liées à l’immaturité de l’ecosystème, avec en premier lieu un outillage au mieux fonctionnel… Oh qu’il aura fallu attendre longtemps pour avoir un plugin Eclipse ou IntelliJ correct ! Et je ne parle pas de quelque chose d’aussi poussé que ce que permettent les IDE Java, simplement un éditeur qui ne plante pas, souligne les erreurs (celles qui en sont réellement), et qui permet de faire la complétion correctement… L’autre point important de frustration est la lenteur du compilateur scalac. Venant de Java ou de langages typés dynamiquement, on comprend mieux ce que signifie ce xkcd

Mais ces irritations ont été très largement contrebalancées par tout un tas d’avantages. Si je ne devais en retenir seulement trois, mes préférences personnelles iraient à:

  • En premier lieu (et c’est tout de même primordial lorsque l’on passe 10h par jour à coder), Scala m’a permis de retrouver la joie de coder. Alors qu’avant, nous ragions sans cesse sur Java, ce langage qui n’arrête pas de se mettre entre notre pensée et le code produit, nous avons découvert un langage qui nous permettait de simplement écrire les algorithmes tels qu’on les imagine. L’API collection ultra-complète est déterminante sur ce point, et elle est tout simplement fantastique.
  • Scala nous a permis de pouvoir nous lancer dans des refactorings massifs sans appréhension, en sachant qu’une fois qu’il sera terminé, tout marchera (presque ;). C’est un peu comme passer de SVN à Git, et de découvrir la joie de faire des branches sans craindre le merge à venir. Ici, le facteur clé est le système de type de Scala, qui permet de définir simplement des propriétés fortes sur les données (« non, l’ID d’une personne n’est pas une chaîne de caractères, c’est un ID ») que le compilateur va vérifier pour nous, de manière beaucoup plus exhaustive et systématique que ne le feraient des tests.
  • Enfin, faire du Scala, c’est avoir la chance de travailler dans un écosystème naissant, bouillonnant de bonnes idées et de personnes brillantes, capable de trouver des solutions nouvelles et souvent intéressantes à nos problèmes. Cet esprit attire clairement des profils d’un excellent niveau et a aujourd’hui un impact direct au niveau RH : on peut facilement rencontrer des candidats motivés et très bons, avec finalement peu de cas où le candidat ne mérite pas le poste…

… est-il applicable dans toutes les entreprises ?

Évidemment, lorsque nous avons choisi cette technologie, nous étions une exception: une start-up sans bagage technique, sans dizaines de niveaux hiérarchiques à convaincre, sans équipes à former…

Aussi, à la veille des ScalaDays 2012, avec un buzz de plus en plus pressant autour de ce langage, on peut se demander si choisir Scala aujourd’hui en entreprise, c’est vraiment raisonnable ? Ou est-ce toujours une lubie de start-up ?

J’ai eu l’occasion d’intervenir en novembre dernier dans le cadre d’une réflexion pour le choix d’une pile technologique pour le nouveau produit d’une entreprise. Voici les slides présentés à cette occasion[1]:

Choisir scala en entreprise, est ce bien raisonnable ?

View more presentations from Normation

Et pour ceux qui se posent la question… Non, Scala n’a pas été retenu dans l’entreprise en question, car il ne convenait pas à la volonté stratégique d’externaliser une partie importante du développement sans avoir de leader Scala en interne.

[1] légèrement revus (graphique indeed.com mis à jour, nouvelles références) et anonymisés

Partager ce post

Retour en haut

Détails du module Security management

Ce module a pour objectif de garantir une sécurité et une conformité optimales pour la gestion de votre infrastructure, avec des fonctionnalités pour les entreprises telles que :

Pour en savoir plus sur ce module, consultez la page gestion de la sécurité.

Détails du module configuration & patch management

Ce module vise une performance et une fiabilité optimales pour la gestion de votre infrastructure et de vos patchs, avec des fonctionnalités pour les entreprises telles que :

Pour en savoir plus sur ce module, consultez la page gestion des configurations et des patchs.