langages startup

Quel est le meilleur langage de programmation pour votre startup ?

Mis à jours 12 avril 2022

Si jamais vous voulez être au centre de la controverse dans une salle remplie de développeurs, dites qu’un langage de programmation est meilleur qu’un autre. Des bannières seront levées et des cris seront entendus de différents développeurs pontifiant :

« Java est le plus grand langage de tous les temps et alimente Internet »,

« Ruby on Rails est le moyen le plus rapide d’accéder au MVP »,

« Python est le plus sophistiqué »,

« Je ne programme qu’avec Scala, je profite de la gloire de ma splendeur multi-paradigme »

Et ainsi de suite…

En tant que cofondateur technique d’une startup, l’une des premières questions auxquelles vous devrez répondre sera la suivante :

Quel est le meilleur langage de programmation pour ma startup ?

Pour répondre à cette question à un niveau élevé, vous pouvez vous concentrer sur trois aspects liés aux piles de programmation :

  1. les caractéristiques du langage,
  2. Votre écosystème local et
  3. Le type du problème que vous résolvez.

Caractéristiques de la langue

De nombreux clients startups utilisant Amazon Web Services (AWS) nous disent qu’ils choisissent AWS car il est plutôt axé sur les développeurs.

Puis, il propose un ensemble complet de kits de développement logiciel (SDK) pour plusieurs langages de programmation populaires.

Ce sont notamment .NET, Java et JVM, Python, Ruby, PHP et Node.js. Bien qu’il existe plusieurs langages différents disponibles dans la boîte à outils des programmeurs, limitons la discussion aux langages qui viennent d’être répertoriés.

En effet, les développeurs créant des applications basées sur le cloud les utilisent activement. Chaque langage a ses caractéristiques, ses communautés, son support et ses écosystèmes respectifs qu’il faudra prendre en compte lors de votre choix.

1. Le .NET

Microsoft .NET

La plateforme .NET de Microsoft est largement utilisée dans les applications d’entreprise exécutant le système d’exploitation Microsoft Windows.

Pour les utilisateurs Linux, il existe un port fournissant un sous-ensemble de fonctionnalités via le Mono project. Bien que C# et diverses autres parties de .NET soient des normes ouvertes, .NET est plus ou moins un écosystème fermé contrôlé par Microsoft.

Largement adopté par les entreprises, la documentation et les services d’assistance de langage sont complets.

Le .NET est un framework fonctionnant sur une plateforme virtualisée connue sous le nom de Common Language Infrastructure, ou CLI. Les gens peuvent choisir le langage à utiliser tel que C#, VB.NET, C++ voire même Python et Ruby.

C# est de loin le langage le plus populaire, suivi du VB.NET. De plus, le .NET est également la technologie utilisée pour créer des applications mobiles Windows. Il s’intègre bien avec les systèmes d’entreprise fonctionnant sous Windows ou via des services Web.

Il convient de noter que bien que certains outils et bibliothèques gratuits soient disponibles pour .NET, l’écosystème est basé sur un modèle de logiciel sous licence.

Cela signifie que lorsque des outils tiers sont requis, une autre personne quelque part devra payer pour avoir une licence et cela finira par vous tomber dessus.

De plus, si vous prévoyez d’utiliser Windows comme système d’exploitation pour .NET, cela entraînera des coûts supplémentaires (contrairement à la licence gratuite pour la plupart des versions de Linux), bien que Microsoft dispose de programmes qui peuvent compenser ou aider à les différer. En fin de compte, choisir .NET coûtera sans doute plus cher que de choisir une plateforme open source.

Enfin, de nombreux programmeurs .NET sont issus de l’entreprise background. Ils développent des systèmes internes et certains peuvent trouver difficile de s’adapter au rythme et au style de vie d’un environnement startup.

2. Java

Java

Java existe depuis 1995. C’est un outil de base pour créer d’applications d’entreprise depuis l’avènement de J2EE.

La longue vie commerciale et l’adoption généralisée de Java ont créé un écosystème robuste de documentation, de bibliothèques et de frameworks.

La plupart d’entre eux sont destinés au commerce électronique, à la sécurité et à des architectures transactionnelles complexes. Il y a des développeurs experts en Java facilement disponibles au niveau régional et mondial, à la fois en tant qu’entrepreneurs et employés à temps plein.

La communauté open source a adopté Java rapidement, créant un marché libre abondant de solutions et d’outils Java.

Le principal but de Java était « d’écrire une fois et de s’exécuter partout », bien que certains font un débat pour savoir si cela n’a jamais été accompli. Depuis l’acquisition de Sun par Oracle, une autre inquiétude sur les droits de licence a fait un doute sur l’avenir du langage et a donné lieu à la phrase « Il n’y a plus de Java, mais la JVM existe encore ». Ce qui a favorisé l’adoption de langages tels que Scala qui s’exécute sur la JVM et peuvent toujours tirer parti des bibliothèques tierces.

Java peut aussi être gourmand en ressources. Il nécessite plus de mémoire par exemple, par rapport à d’autres langages. Java est utilisé pour les appareils Android et il doit considérer si cette plateforme fait partie de votre stratégie de déploiement.

3. Python

Python, langage interprété open source

Python est un langage interprété open source. Il a été adopté par de nombreux membres de la communauté scientifique pour sa facilité d’apprentissage et son large éventail de bibliothèques scientifiques.

Django est un framework Python créé pour les éditeurs de journaux en ligne. Il alimente les startups populaires telles que Pinterest, Instagram et EventBrite.

Django et Python sont essentiellement indépendants de la plateforme, bien que les développeurs doivent toujours concevoir des programmes spécifiquement pour l’indépendance afin de pouvoir s’exécuter sur les plateformes Windows et Linux.

Il y a eu une tendance dans la communauté Python. Elle consiste à améliorer la qualité du code en imposant « une bonne façon » d’écrire Python. Ceci est documenté dans l’index Python Enhancement Proposal (PEP).

Ce qui revient à dire que Python est notoirement difficile à mettre à l’échelle sur plusieurs cores sur une seule machine. Cela est dû aux limitations de Global Interpreter Lock (GIL).

Cependant, il est très adapté aux applications qui évoluent horizontalement sur des serveurs sans état. Ce qui fait de Python une bonne solution pour les applications qui tirent parti du cloud.

Les bibliothèques telles que Boto, IPython et Fabric le rendent également utile comme outil de script administratif, ce qui permet l’automatisation et l’infrastructure sous forme de code. Cela offre une productivité accrue pour les équipes ayant peu de ressources disponibles sur les claviers.

4. Ruby

Ruby, langage interprété

Ruby, et en particulier le framework web, Ruby on Rails, est également un langage interprété populaire pour les startups. Ruby propose une formation complète en ligne, à la fois pour les débutants, sans expérience de codage, et les experts dans le domaine.

Consultez « Try Ruby » pour les débutants et Rails for Zombies pour les programmeurs expérimentés.

Le taux d’adoption élevé a signifié la disponibilité de nombreuses bibliothèques et outils Web pour aider les développeurs Web à créer des applications rapidement.

Ruby possède un référentiel de bibliothèques réutilisables faciles à entretenir et à déployer sous la forme de RubyGems. Tout comme Python,

Ruby est adapté à l’automatisation avec Puppet. Ce dernier est un outil de gestion de configuration open source écrit nativement dans le langage. Ruby alimente les propriétés Web populaires, notamment Airbnb, Github et Groupon.

Pour un grand nombre de demandes à l’application, ce qui nous préoccupe vraiment, c’est que Ruby ne se développe pas bien côté serveur. InfoQ a indiqué que Twitter a fait une migration célèbre de Ruby à Scala en 2010 afin de gérer les exigences de leur croissance explosive.

De plus, étant donné que Ruby est open source et piloté par la communauté, une documentation et un support de qualité peuvent être plus difficiles à trouver. Vous devrez peut-être compter sur des experts en Ruby pour réaliser des solutions sophistiquées.

Certaine industrie craint que Ruby devienne plus difficile à maintenir à mesure que le nombre de bibliothèques et de lignes de code augmente.

5. PHP

PHP, langage pour les applications et sites Internet

PHP est l’un des premiers langages populaires pour les applications Internet et les sites Web. Il possède un vaste écosystème de développeurs, de frameworks et de bibliothèques.

De grandes entreprises comme Facebook, WordPress, Twitpic, Flickr et Imgur font partie des anciens de PHP. En raison de l’âge de PHP et de sa longue histoire, la qualité du code PHP a une grande variance. PHP n’a pas de règles comme les langages compilés, ou des normes strictes comme on le voit avec Python.

Il dispose plutôt de directives disponibles auprès de la communauté des développeurs. Par conséquent, les projets les plus importants qui n’ont pas une structure stricte peuvent devenir difficiles à lire et à entretenir. Ce problème est connu sous le nom de « code spaghetti » ou « programmation spaghetti ».

6. Node.js Dev

Node.jsDev, langage développé à partir de JavaScript

La dernière entrée dans cette liste de frameworks de programmation est Node.js. C’est un langage piloté par les événements et, développé à partir de JavaScript.

Il est le seul de cette liste conçu dès le début pour servir les requêtes Web en tirant parti de JavaScript côté serveur.

Les E/S non bloquantes produisent des applications côté serveur hautes performances. Les programmeurs constateront que leurs compétences en JavaScript côté client sont transférables aux tâches de développement côté serveur.

Des leaders tels que Yahoo et LinkedIn ont implémenté des parties de leurs applications sur Node.js.

Puisque Node.js est plus récent, les personnes possédant de solides compétences peuvent être plus difficiles à trouver et plus coûteuses à employer.

La documentation et les bibliothèques sont rares, avec plus de challenges sur le fait que les projets ont tendance à mélanger Node.js avec d’autres langages et frameworks pour compléter l’ensemble de fonctionnalités.

Cependant, cette situation pourrait s’améliorer avec la transition des développeurs JavaScript vers des architectures principales.

Dynamique, statique, interprété et compilé

Quel langage de programmation choisir ?

Tous les langages ci-dessus peuvent être classés en deux catégories : compilés statiquement et fortement typés d’une part ou dynamiques et interprétés d’autre part.

En général, les langages d’entreprises traditionnelles et plus anciennes appartiennent à l’ancien groupe. Le code créé de manière traditionnelle fournit aux développeurs des erreurs de compilation plutôt que des erreurs d’exécution. Ce qui garantit un code plus sûr et bien documenté avec des interfaces propres.

Cependant, la création d’applications utilisant du code compilé statiquement prendra plus de temps. Ce compromis était logique lorsque ces langages ont été initialement introduits. À cette époque, la puissance de calcul était difficile à obtenir et coûteuse.

Aujourd’hui, la disponibilité du cloud computing avec AWS pour une capacité de calcul à l’utilisation instantanément disponible a cependant radicalement changé le secteur.

Désormais, la puissance de calcul est plus rapide et moins chère. Les environnements de développement intégrés (IDE) sont facilement disponibles pour simplifier le développement en utilisant des langages interprétés et notamment la prise en charge de fonctionnalités de débogage et de refactorisation sophistiquées.

Les avantages offerts par les langages compilés par rapport aux langages dynamiques se sont réduits au cours des dernières années. Les langages dynamiques ont prouvé leur capacité à fournir un code de haute qualité et à être naturellement adaptés à des cycles de développement rapides.

C’est pourquoi de nombreuses startups prospères se tournent vers le côté dynamique/interprété du spectre pour choisir leurs langages de développement.

Écosystème local

Compétences en interne

L’externalisation est parfaite pour une preuve de concept ou lorsque vous ne disposez pas d’une compétence spécifique en interne. Mais pour réussir, vous aurez besoin de talents qualifiés de votre écosystème local.

Trouver de bonnes équipes, accélérer les projets et étendre vos efforts à l’étranger prennent du temps. Mais si vous investissez dans l’expertise dont vous aurez besoin en interne, cela vous permettra de raccourcir les cycles de développement et d’augmenter l’agilité de votre startup.

La disponibilité d’une main-d’œuvre qualifiée variera selon la géographie. Certaines zones, par exemple, ont de nombreux développeurs PHP avec peu ou aucun développeur Node.js.

Pour mieux comprendre la popularité des langages dans lesquels vous vous trouvez et donc la totalité des coûts pour acquérir les compétences dont vous aurez besoin, consultez langpop.com.

Vous aurez des statistiques sur l’utilisation des langages dans le monde. Puis, recherchez meetup.com pour voir quelles réunions sont actives et ont un nombre de participants élevé. Cela vous donnera une meilleure compréhension des compétences de votre main-d’œuvre locale.

De plus, recherchez le niveau de soutien qui sera disponible pour vos employés en participant à des meetups, des groupes d’utilisateurs et des espaces de co-travail pour interagir avec les talents locaux. En fin de compte, vos coûts pour les développeurs augmenteront si les compétences dont vous avez besoin ne sont pas facilement disponibles ou sont fortement demandées.

Domaine et type du problème

Quel langage pour quel problème ?

Certains langages sont clairement plus adaptés pour résoudre différents problèmes, ce qui peut rendre le processus de décision plus simple.

Par exemple, si vous intégrez fortement avec MS Office et d’autres applications Windows, vous devriez considérer .NET dans votre liste de choix possibles.

Si vous effectuez des fonctions, telles que la prévision des conditions météorologiques, Python pourrait être une meilleure option en raison de ses bibliothèques mathématiques précises et de sa capacité à bien évoluer avec Hadoop.

Si la sécurité au niveau de l’entreprise pour une application d’entreprise à entreprise est critique ; vous devrez sans doute utiliser Java. Dans tous les cas, votre évaluation devra prendre en compte les problèmes que vous devez résoudre ainsi que votre analyse de rentabilisation et le type de clients.

Alors, quel est le meilleur ?

Bonne question ! Cet article a couvert les trois principaux points de décision qui peuvent vous aider dans votre processus décisionnel.

  • Caractéristiques du langage : si vous développez pour le cloud, restez avec des langages interprétés, dynamiques et open source pour un développement rapide et plus rentable. Pour les applications d’entreprise qui ont des exigences de sécurité critiques ou qui doivent s’intégrer à des environnements hérités, les langages compilés peuvent être les meilleures options.
  • Domaine de problème : jetez un œil aux langages utilisés pour résoudre les mêmes problèmes commerciaux que les vôtres. Voyez également quel langage est pris en charge par l’étendue des bibliothèques. Une autre personne a peut-être déjà résolu votre problème à 80 % et pourrait avoir une licence générale que vous pouvez utiliser pour construire.
  • Écosystème local : effectuez des recherches dans votre communauté locale pour savoir si vous avez une réserve de travailleurs qualifiés prêts à être recrutés pour des talents abordables.

Les développeurs AWS nous disent souvent qu’ils utilisent les trois points ci-dessus pour créer une courte liste. Puis, ils font leur sélection finale en identifiant le langage qui leur permettra d’itérer le plus rapidement.

Ils estiment que c’est l’aspect le plus important car la nature des startups est d’échouer rapidement puis d’avancer. Des itérations rapides vous permettent de tester des idées et de déterminer votre espace de problème.

Elles peuvent également vous fournir des solutions tout en vous propulsant vers MVP. Ne vous inquiétez pas trop de l’intensification aujourd’hui. Si votre startup a la chance d’avoir des problèmes similaires à Twitter, déterminant comment faire évoluer Ruby pour répondre à la demande croissante des utilisateurs, vous êtes bien sur la bonne voie pour réussir.

Aina Strauss

À lire aussi

equilibreur charge gcp

Équilibreur de charge sur Google Cloud Platform

Mis à jours 14 septembre 2022 Pour équilibrer le charge, vous avez deux options : …