Choisir un langage pour un projet de publication vidéo

Choisir un langage pour un projet de publication vidéo

 

Le démarrage d’un projet passe toujours par le choix d’un langage. Beaucoup d’éléments sont à prendre en compte et la prise de décision n’est pas toujours facile, selon les compétences des développeurs présents, les particularités du langage, les spécificités du projet et d’autres influences. Dans cet article, je vais expliquer l’approche que nous avons utilisée pour choisir le langage d’un projet de plateforme de publication de vidéo vers Dailymotion et Youtube pour l’Equipe.

1ère question :

Quels langages sont maîtrisés par l’équipe qui va travailler sur le projet ?

Il est évident que démarrer un projet dans un langage non maîtrisé ou inconnu ne peut se décider sans que l’acquisition des connaissances nécessaires ne fasse partie des objectifs. 

La plupart du temps, votre choix devrait donc se limiter aux langages connus de votre équipe.

Dans notre cas, nous avons une équipe de 4 personnes spécialisées dans le développement de site web.

  • 2 développeurs back utilisant PHP au quotidien et Javascript occasionnellement pour améliorer l’ergonomie des panels d’administration de leur site.
  • 2 développeurs front / intégrateurs réalisant la partie front des sites à l’aide de Sass, Javascript, et utilisant par conséquent de plus en plus des outils exploitant Node tels que Grunt ou Gulp.
  • Un développeur front a reçu une formation Angular et j’ai reçu une formation Nodejs.

On retiendra donc deux langages : PHP et Javascript, avec un intérêt de la part de l’équipe pour explorer les possibilités offertes par Javascript autant côté front que back.

Cet intérêt pour Javascript peut s’expliquer par plusieurs arguments :

  • La mise en pratique des formations reçues
  • La possibilité d’utiliser un langage plus à même de répondre à des problématiques de performances et de traitements concurrents
  • Améliorer la maîtrise des outils utilisés par les développeurs front (Grunt, Gulp)

 

2nde question :

Les spécifications du projet comportent elles des éléments influençant le langage à utiliser ?

Un projet peut nécessiter l’utilisation d’un service tiers ou une librairie permettant la manipulation d’un type de problème particulier. Le langage choisi devra permettre l'accès à de telles librairies.

Dans notre cas, d’une part notre projet devra utiliser les API Youtube et Dailymotion, d’autre part, il devra assurer la manipulation de fichiers vidéo (donc potentiellement lourds) et permettre le suivi en temps réel des traitements effectués (donc des opérations asynchrones).

Pour l’utilisation des API Youtube et Dailymotion, de nombreuses librairies peuvent être trouvées via les outils de gestion de dépendance de Composer et Npm (respectivement PHP et Javascript), même si l’utilisation d’une version PHP antérieure à 5.6 peut rapidement devenir problématique.

Pour réaliser les opérations de manière concurrente et assurer le suivi de ces opérations, NodeJs est tout désigné. Il faut savoir que NodeJs est basé sur un modèle de programmation événementielle ; sa bibliothèque standard et la majorité des bibliothèques tierces fonctionnent de cette manière. Le paramètre typique d’une fonction NodeJs est une fonction de callback qui permettra de gérer le résultat que vous attendez. Les bibliothèques à jour permettront même l’utilisation des Promises.

 

3e question :

Le langage est-il suffisamment populaire ?

La popularité d’un langage définira la quantité d’aide trouvable sur internet. L’utilisation d’un langage impopulaire et non-documenté pourra transformer chaque ligne de votre développement en cauchemar, donc oui, la popularité compte.

Un POC réalisé dans les deux langages complètera ce jugement, le test des librairies Javascript permettra l’envoi d’un fichier vidéo via l’API Youtube en une journée de développement, tandis que la même opération avec PHP s’avèrera beaucoup plus ardue.

Points positifs :

  • Un langage plus bas niveau, qui permet de meilleures performances.
  • Un langage conçu pour les opérations asynchrones, associé à l’utilisation des promesses natives.

Points négatifs :

  • Un langage plus bas niveau, qui rend les développements plus délicats.
  • Le passage de PHP/Symfony2 à NodeJS laisse beaucoup de liberté sur l’architecture, NodeJS ne dispose pas de framework standardisant l’architecture du projet comme Symfony2.
  • NodeJS n’est pas JQuery, le raccourci est facile à faire mais demeure néanmoins une grosse erreur.

En conclusion

Le choix d’un langage reste un moment délicat dans la conduite d’un projet : d’une part il faut se limiter à des langages connus, d’autre part il ne faut pas utiliser un langage inadapté et savoir élargir ses compétences lorsque le projet s’y prête.

On notera que viser un langage populaire garantit généralement une bonne documentation et l’accès à des bibliothèques variées, accélérant grandement la montée en compétence et la réalisation du projet.

Pour notre uploader vidéo, le choix de NodeJs a nécessité un certain temps d’apprentissage afin que les développeurs puissent adapter leur manière de développer à la programmation événementielle, à l’aide de callback, de Promise ainsi que l’utilisation de certaines fonctionnalités (certes présentes en PHP) utilisées d’une manière plus fréquente en NodeJS tel que les Closures. Ce choix nous a aussi permis de développer des fonctionnalités d’une manière triviale là où PHP demandait des longues heures de recherche pour entrevoir une solution. Désormais NodeJs fera partie de nos options lorsqu’un projet nécessitera des temps de réponses moindres.

De même qu’un plombier sait manier plusieurs outils, un développeur devrait maîtriser un panel de langages de haut et bas niveau permettant de répondre aux besoins de tous les projets. Si maîtriser le marteau à la perfection permet de considérer tous les problèmes comme des clous, cette approche manquera toujours de subtilité.

 

Thibaut C

Ajouter un commentaire