The Business Of PHP @php[architect]
Episode 31 (04/2020) by
Parmi les nombreuses décisions stratégiques qu'une entreprise doit prendre, celle que nous les développeurs devons prendre en considération est le choix de la pile/stack technique à savoir les outils et les technologies utilisés pour le développement de logiciels. Lors du choix d'un langage backend, on remarque que PHP présente un certain nombre de forces et de faiblesses; cet article l'explique tout en l'appréhendant du point de vue d'une entreprise.
La plupart du temps, la disponibilité des talents sur le marché de l'emploi est l'un des principaux facteurs de sélection des langages front et backend - une situation particulièrement vraie pour les entreprises qui ne font pas appel à des ressources externes (ESN ou indépendants). Une campagne de recrutement doit être lancée ou une analyse de marché doit être effectuée pour que l'entreprise se fasse une idée de quels langages et frameworks sont populaires dans leur ville et ainsi embaucher en conséquence. Souvent, ce choix est dicté par le fait que certains langages sont enseignés dans les écoles d'ingénieurs et dans les universités (et dans les organismes de formation). Cette dynamique crée une boucle de rétroaction. Au plus les entreprises embauchent pour un type de langage de référence, au plus les écoles forment des diplômés avec les compétences sur ce type de langage demandé sur le marché du travail (comme Java par exemple). De fait, les étudiants veulent apprendre les langages qui leur permettront d'avoir un travail dans les grandes entreprises dès leur diplôme en poche. En conséquence, nous voyons fréquemment des concentrations de compétences dans certains langages. Il est logique pour les entreprises de recruter dans des bassins d'emplois pourvus en nombre de développeurs formés pour un langage et de profiter de la concurrence à l'emploi pour recruter à des salaires plus bas des développeurs de haut niveau. Cependant, lorsque les entreprises recrutent au-delà de leur région ou si elles font appel à des ressources externes, elles reconsidèrent les critères de leur choix de langage.
[Beaucoup de professionnels utilisent PHP comme langage backend, comme l'auteur de l'article, qui liste les qualités et les défauts du langage d'un point de vue technique et commercial].
Mérite technique
Beaucoup d'entre nous se sont mis à PHP parce que son utilisation est facile. Pour une startup sans équipe de devops, le fait que PHP et MySQL (ou MariaDB) soient disponibles sur de nombreux services VPS (gérés ou pas) et sur des hébergements mutualisés est un facteur déclencheur pour son adoption. De plus, ces services ou hébergements sont déjà sécurisés, optimisés, gérés (sauvegarde automatique). Ainsi le lancement d'un nouveau projet ou de SAAS peut être fait facilement et rapidement par une équipe réduite qui n'aura pas à se préoccuper des mises à jour ou de la sécurisation de l'environnement.
Disponibilité
PHP fonctionne sous Linux, Mac et Windows et comprend plus de vingt extensions de base de données spécifiques. Il s'intègre parfaitement dans n'importe quel stack/pile technique et il fonctionne bien aux côtés d'autres langages. Grâce à 'Ondrej Surý pour les dépôts Ubuntu/Debian et Remi Collet pour les repo CentOS et Red Hat, la majorité des équipes de développeurs n'ont pas besoin de compiler à partir des sources et peuvent installer des versions PHP récentes en peu d'étapes. Des environnements locaux de développement de qualité sont mis à disposition des développeurs par la communauté, avec des tutoriels détaillés. D'autres outils sont disponibles comme des box Vagrant, ou des images Docker. Ces avantages (multi-plateformes, configuration simple et outillage disponible et performant) permettent à des sociétés disposant de petites équipes de développement, ou d'équipes constitués de développeurs juniors qui ne maîtrisent pas les configurations serveur, d'être productifs rapidement.
Applications et framework
Les webagency ou sociétés spécialisés dans la construction de sites Web peuvent facilement trouver des solutions flexibles écrites en PHP comme des CMS, des solutions ecommerce et des frameworks applicatifs. On peut citer WordPress, Joomla ou Drupal pour leur popularité et leur ancienneté et qui permettent à des petites sociétés de faire des sites web complets en quelques heures. Beaucoup de petites sociétés utilisent ces applications open sources pour être visibles sur le web et vendre leurs produits. Les webagency ou sociétés spécialisés dans la construction de sites Web utilisent des frameworks éprouvés et riches en fonctionnalités comme Symfony et Laravel. D'ailleurs PHP est un langage mature, notamment pour fournir des API pouvant être consommées par une multitude de clients frontend.
Performance
PHP est rapide et scalable/évolutif. Il peut être facile de mettre en place du load balancing avec PHP si cela est prévu dès la phase de développement. Beaucoup de sites à fort trafic s'exécutant en PHP ou dérivés de celui-ci peuvent être cités, comme facebook.
D'ailleurs, il est intéressant de noter qu'au cours des tests de temps d'exécution, PHP n'apparaît pas comme le langage le plus rapide mais qu'il reste tout de même compétitif. Le rapport performance/coût de la mise en œuvre est plus favorable pour PHP.
A noter encore que le gain de vitesse d'exécution a été doublé voir triplé entre la branche 5 et 7, des chiffres variables en fonction des CMS ou framework. La branche 8 promet encore plus de vitesse avec JIT.
Construire une équipe
La constitution d'une équipe avec les bonnes compétences et expériences et son soutien avec les ressources et l'environnement dont elle a besoin pour construire de très bons logiciels est un sujet à part entière. Il y a quelques mesures qui viennent à l'esprit quand nous envisageons d'embaucher une équipe de développeurs PHP.
Le bassin de talents disponibles est certes difficile à mesurer, mais nous pouvons faire quelques déductions sur la base d'informations connexes. En se référant aux offres d'emploi publiées sur le site Indeed aux États-Unis au moment de la rédaction de cet article, PHP est toujours fortement demandé (17k), soit plus que Node.js (8k) ou Ruby on Rails (3k) et autant que Python pour le web, mais bien-sûr moins que JavaScript qui a le monopole des langages frontend. Les développeurs junior et senior PHP sont disponibles sur le marché là où il peut y avoir une pénurie avec les nouveaux langages et framework.
En plus, PHP est un langage flexible, permettant une grande variété de style de codage, de paradigmes (impératif, orienté-objet, fonctionnel, procédural, réflexif et interprété) et de framework. En revanche, PHP ne peut pas être utilisé pour du frontend comme JavaScript, ou pour des applications de bureau. Et il n'est pas adapté à tous les modèles économiques. Cependant PHP est particulièrement bien adapté pour construire des API ou des backend.
Popularité et réputation
La popularité d'un langage est à prendre en considération lors de la recherche de compétences des développeurs. Non seulement ceux-ci doivent être compétents en PHP, mais ils doivent également avoir envie de développer en PHP. PHP est l'un des plus anciens langages de développement web backend et il a souffert d'une stagnation du langage de la branche v5 pendant près d'une décennie. Il ne faut pas faire l'autruche, PHP a un problème de réputation. Des informations obsolètes sur le langage continuent à circuler et sont utilisées pour annoncer la mort de PHP ou en tout cas pour lui nuire au profit d'autres langages. Les développeurs arrivants sont souvent attirés par les nouvelles possibilités backend proposées comme Node.js ou par des langages imposés par les sociétés du secteur comme .Net ou Java.
Dans ce contexte, c'est un défi de retourner la tendance, mais pas impossible. En effet, PHP par son ancienneté est utilisé par des développeurs compétents qui connaissent le langage depuis longtemps. Il y a de nombreux événements organisés par la communauté, notamment dans le Nord de la France comme AFUP Day 2020 Lille. Si vous voulez recruter des développeurs matures sur le langage, un vivier d'experts est disponible. D'ailleurs ils peuvent être recrutés pour des
salaires raisonnables pour être lead dans une équipe TMA ou sur des projets ne mettant pas en œuvre les dernières technologies en vue. De plus, et heureusement, PHP a pris une nouvelle direction ces dernières années en se délestant progressivement de certains bagages historiques du langage. Un calendrier de sortie rapide des versions de la branche v7 a introduit de nouvelles fonctionnalités populaires et supprimé les failles de sécurité introduites dans les branches précédentes. Les framework modernes comme Laravel ou Symfony avec la version qui introduit Flex, et mêmeWordPress qui apporte des améliorations constantes a permis un regain d'intérêt pour PHP. Ce qui a permis aux développeurs à l'ancienne de prendre le pli avec les nouvelles normes PHP (PSR).
Les perspectives à long terme de PHP sont au vert.
Support et matériels
our qu'une équipe de développement soit productive et du coup rentable pour les sociétés, il faut que de multiples sources documentaires soient disponibles pour l'aider dans ses développements quotidiens. Si ces ressources documentaires sont disponibles en ligne, si possible gratuites et pertinentes, c'est d'autant mieux. Comme l'auteur de l'article, j'ai connu des employeurs qui avaient des règles de filtrage web telles que seul php.net était consultable, excluant donc l'utilisation de StackOverflow ou d'autres sites d'entraide permettant la résolution de problème de codage. L'apprentissage a été compliqué, je pouvais perdre une journée sur un détail que je n'avais
pas bien appréhendé, à lire et relire la documentation officielle. Mais quand j'ai changé d'employeur, celui-ci n'avait pas toutes ces restrictions et je n'ai finalement pas trouvé tous ces sites si utiles. Il était facile de récupérer des bouts de codes qui souvent étaient buggés mais qui servaient de base à des codes sources non distribués ou payants, ce qui n'est pas dans l'esprit de l'open-source alors que PHP a toujours partagé et discuté avec enthousiasme depuis sa création.
Une recherche Google pour PHP retourne plus de résultats que les autres langages backend. Beaucoup d'excellentes enquêtes comme l'indice Tiobe ou le rapport GitHub Octoverse font état d'une régression de PHP au cours des dernières années. Ce qui n'est pas étonnant étant donné que PHP est mature et qu'il ne possède plus le quasi-monopole du développement de backend. La branche v7 de PHP a relancé les fils de discussion et de nouveaux articles sur PHP sont parus. Ces nouvelles ressources documentaires sont souvent payantes, celles gratuites et nombreuses sont celles qui traitent des versions qui sont obsolètes.
Il n'est pas rare de trouver des bugs causés par des développeurs qui ont fait des copier/coller de bouts de codes extraits de vieux codes, incluant des vulnérabilités de sécurité comme l'injection SQL. Il est important de définir des normes de codage partagées par tous, que tout le monde partage les bonnes pratiques et qu'elles soient centralisées pour être facilement consultables. Les revues de code entre pairs sont les meilleures solutions d'amélioration continue de l'équipe.
Communauté et conférences
De nombreuses conférences sont référencées sur php.net partout dans le monde à différents tarifs, sur divers sujets, sur et autour du langage. Par exemple, les frameworks PHP majeurs tiennent plusieurs conférences dans l'année sur tous les continents. Les sociétés ont tout intérêt à former en continu leurs développeurs et les conférences sont d'excellents moyens pour cela et à moindre coût. Certaines sociétés envoient un petit groupe de développeurs à ces conférences, pour qu'ensuite ceux-ci partagent avec les autres développeurs de leur entreprise ce qu'ils ont appris. Les développeurs apprécient les sociétés qui leurs permettent de s'épanouir dans leur passion en améliorant leurs compétences.
Les groupes de développeurs locaux sont aussi d'excellents moyens pour les développeurs qui y participent d'apprendre des nouvelles compétences et de partager des problèmes et des solutions, de réseauter aussi et même de promouvoir les offres d'emploi de votre société. Comme l'auteur, je vous recommande de participer à des groupes locaux. Cela m'a permis de découvrir des nouveaux outils ou technologies que j'ai ensuite mis en place dans ma société.
L'écosystème des librairies
L'une des décisions les plus intelligentes que peuvent prendre les éditeurs de logiciels est d'utiliser du code écrit par d'autres pour ne pas avoir à réinventer la roue. Cela n'a pas de sens d'avoir des développeurs qui écrivent des composants n'ayant aucun rapport avec le métier de la société. En fait, s'en tenir à des librairies tiers bien notées, matures et populaires est un gain d'argent et de temps puisque investir dans l'écriture de librairies non-métier ne permettra probablement pas d'avoir de meilleures librairies. De plus, l'écosystème des librairies PHP est riche et de qualité. Packagist, le dépôt des librairies officiellement publié pour le gestionnaire de packages Composer, héberge actuellement 253000 librairies pouvant être installées dans un projet avec une seule commande. GitHub référence plus d'un million de dépôts PHP.
Les nouveaux framework permettent de rapidement mettre en œuvre de nouveaux projets avec un bootstrapping efficace. Les framework permettent une meilleure productivité par les solutions qu'ils apportent aux développeurs. Les framework respectent les normes du langage, les bonnes pratiques et permettent d'éviter certains pièges liés à la sécurité. Les framework PHP de qualité sont nombreux. A noter que la plupart des framework répondent à des besoins spécifiques et qu'il n'y a donc pas d'uniformisation des solutions. Que vous ayez besoin d'un framework adapté à du développement rapide et efficace comme Laravel, ou stable et extensible comme Symfony, ou léger et simple comme SlimPHP, les solutions sont nombreuses et matures. PHP a un long vécu, et du coup les framework, qui au fil des versions sont toujours présents et utilisés par un grand nombre, sont les meilleurs.
Les librairies tiers et les framework PHP sont généralement open source et libres d'utilisation. Les sociétés tirent partie de ce code source gratuit et en plus demandent des garanties sur la maintenance de ces librairies. Par exemple, Derick Rethans, le développeur de la très populaire extension PHP XDebug, n'a fait aucun mystère sur les pressions qu'il a subies pour continuer à faire évoluer l'extension et maintenir les versions précédentes. Pour que tous soient gagnant/gagnant, ne vaudrait-il pas mieux que les sociétés qui utilisent du code open source contribuent financièrement à sa maintenance et ses évolutions en l'incluant dans leurs lignes comptables, comme une licencecomme une licence propriétaire mais largement moins élevée par le fait du nombre élevé de contributeurs financiers et d'utilisateurs qui font des dons ? Ce support financier permettrait aux développeurs d'extension de pérenniser leurs travaux.
Coûts financiers
Combien coûte le développement et déploiement en ligne d'applications écrites en PHP ? Pour une startup qui planifie un nouveau projet, les coûts peuvent être un facteur important. Heureusement, PHP est l'un des langages de développement parmi les moins chers. En effet, aucune licence commerciale n'est demandée pour utiliser le langage en lui-même. Des éditeurs de codes gratuits sont disponibles et prennent en charge la coloration syntaxique comme IntelliSense pour PHP. La mise en ligne d'un projet PHP nécessite un nom de domaine (15€/an) et un VPS (5€/mois) et quelques compétences en administration système. Bien que PHP soit gratuit, de nombreuses sociétés veulent un support en cas de besoin. L'équipe core PHP est constitué principalement de bénévoles. Il n'y a pas de société qui se charge de développer le langage. D'un côté c'est une bonne chose, PHP n'est pas soumis aux caprices lucratifs du marché, mais cela crée aussi une certaine incertitude pour les sociétés. En effet, même si les développeurs bénévoles travaillent dur pour livrer des versions stables, on peut se demander dans quelle mesure ce travail est viable à long terme. Une chose est tout de même sûre, beaucoup de développeurs tout horizons confondus sont disponibles et prêts à reprendre la relève le cas échéant. PHP ne s'appuie pas sur une personne. Les sociétés peuvent d'ailleurs soutenir financièrement le langage pour s'assurer de sa stabilité et du support comme l'a fait Zend. Le choix du langage ne repose pas non plus totalement sur le coût, la réputation est aussi un critère. Certains clients technophiles peuvent être sceptiques lorsque vous expliquez que leur projet sera réalisé en PHP. La branche courante de PHP apporte beaucoup d'améliorations et la confiance des clients dans le langage ne fait que croître.
Perspectives à long terme
Les sociétés prévoient sur du long terme, et donc le choix des outils et du langage de développement ayant des perspectives à long terme excellentes est très important. PHP a montré des signes de pourrissement par le passé, et personne ne le nie. Mais le noyau PHP est actuellement robuste, et évolue suivant un calendrier qui permet de sortir des versions rapidement. L'équipe core assure toujours la compatibilité descendante, et une migration vers une version supérieure est souvent simple. Il n'y a jamais eu un changement total de paradigme dans l'histoire de PHP contrairement par exemple à Angular en remplaçant AngularJS. Les packages PHP populaires sont relativement stables. Jusqu'à présent, PHP a évité les problèmes que rencontre actuellement JavaScript où les librairies les plus populaires sont remplacées du jour au lendemain, créant de gros problèmes de dépendances entre librairies et des problèmes de sécurité. PHP est toujours dans la pile technique préférentielle proposée par les hébergeurs. L'avenir de PHP est déterminé par vote auprès des membres de l'équipe core et de la communauté. La version 8 de PHP qui devrait sortir à la fin de l'année devrait apporter de nouvelles fonctionnalités très attendues, notamment un gain d'exécution avec JIT. L'avenir de PHP est radieux.
Conclusion
Prendre la décision du choix du langage de développement est un stress important pour les décideurs, c'est un choix à long terme qui peut valoriser ou tuer leur business. La tentation de choisir des nouvelles technologies qui font le buzz est grande. Mais il est prudent d'étudier en profondeur les choix possibles avant de prendre une décision. PHP est une garantie de sérieux pour les sociétés focalisées sur le développement backend. Le langage est mature, stable, peu coûteux, soutenu par une communauté très nombreuse et active et l'équipe core est composée de développeurs talentueux. Si votre dernier regard sur PHP date de plus de cinq ans, vous devriez ré-évaluer la technologie, vous n'allez pas être déçu.