Un mois avec un framework PHP petite désillusion

La veille d’écrire ce post, cela faisait à peu près deux mois que je m’était mis sur Symfony 4 (j’ai eu aussi une petite période avec Symfony 2 par le passé mais moins investi)

Pourquoi ce tweet? comme souvent mes tweets répondent à l’émotion du moment, posons la question : pourquoi ce message ?

Contenu

Mon background

Ingénieur non informatique de formation, j’ai commencé ma carrière dans l’industrie puis me suis tourné vers l’informatique il y a un peu plus de dix ans, je suis entré dans le développement web. Je suis autodidacte, et ces 3 dernières années j’ai un peu boosté mon niveau en devenant salarié et travaillant dans une équipe.

Je possède des compétences en Linux, le stack LAMP, un peu vieille école, c’est-à-dire the hard way is easier (rien ne vaut une bonne requête SQL). Je n’ai pas beaucoup de théorie sur l’informatique (algo etc), j’ai fait mes armes à l’école anglo-saxonne et web, cependant je suis passé par math sup/spé.

Mon premier framework avec lequel j’ai vraiment travaillé est AngularJS, ce fut fun, puis .Net, grosse montagne, trop grosse, mais j’ai apprécié la puissance de Visual Studio, j’ai enfin compris l’intérêt du typage statique dans un IDE, puis un petit détour par Java (pouah !), puis brièvement sur Laravel 5, et là je suis sur Symfony 4.

J’avais de grandes attentes, un framework digne du nom, qu’on arrête de se moque des développeurs PHP avec les appels BDD mélangé à du HTML, c’est un level up pour moi et surtout mon CV (compétence très demandée du moins en France, donc pérennité du boulot). Symfony 4 c’est aussi et indubitablement les meilleures pratiques en code, les meilleurs patterns, pas de doute, cela fera de moi un meilleur développeur !

Ce billet n’est pas une critique de Symfony et on alter ego Laravel, et je cible tous les frameworks serverside en général.

Ce qui suit n’engage que moi, et d’autres personnes peuvent penser différemment.

Ma philosophie du code

Ce qui m’attire dans le développement c’est la résolution de problème, augmenter la productivité des gens en leur fournissant des codes qui automatisent le travail rébarbatif. Chaque fois que j’arrive à faire quelques chose en code, j’ai un shoot d’adrénaline, une satisfaction qui égaye ma journée, et en informatique c’est quelque chose de constant (ça m’arrive au moins une fois par jour). J’aime trouver des solutions, créatives, détournées, parfois même en enlevant tout le code et utiliser un software qui fait le boulot, ça me satisfait.

Le développement informatique nous procure beaucoup de libertés, moi ce qui me plait le plus c’est de créer, j’avoue que une fois que le logiciel est créé, je n’ai pas envie de faire la maintenance, ou faire une TMA trop longtemps, ce n’est pas ma tasse de thé de rester avec un logiciel des années, ce qui me plait c’est la phase travaux neuf. (j’aime aussi améliorer un logiciel pourri si le temps m’est permis, optimiser une requête SQL afin de le faire tourner dix fois plus vite me procure autant de plaisir que les travaux neufs).

Bien sûr je ne suis pas un cador, mon code n’est pas parfait, je n’y arrive pas du premier coup, je ne suis pas un ingénieur 10X (MDR). Avec l’expérience j’arrive à produire un code pas trop dégueulasse, avec toujours de meilleures pratiques. Mes applis marchent et délivrent.

Le problème avec les frameworks

J’avoue c’est Symfony le déclencheur, cela aura sans doute été moins évident avec Laravel. Donc j’ai pu regarder pas mal de vidéo de Symfony et j’ai appris beaucoup de choses, j’ai aussi fait beaucoup en code sur un projet vrai, pas sur les exercices.

Je me suis rendu compte avec les tuto sur les formulaires Symfony (qui est LE PLUS morceaux du framework à mon avis) sont un très grosse montagne, mais en même temps qu’il n’y avait pas de grosse difficultés, le framework est bien pensé. On peut tout faire, mais le problème est que l’on peut tout faire à la mode Symfony. Donc il faut savoir, pas de secret.

Un framework dirigiste

En anglais on appelle cela un opinionated framework, un framework où il faut faire à leur façon. En fait les séries de vidéos très bien faites, montrent que c’est une série de recettes qu’il faut appliquer, il ya beaucoup de choses à savoir (le côté difficile) et en même temps ce n’est pas si compliqué si on sait comment faire.

Beaucoup de paramétrages

Symfony vient avec une série de fichiers YAML, une notation très succincte, qui permet de configurer l’environnement de l’application. Donc le paramétrage est un aspect très prégnant d’une application faite avec Symfony. De même les entités sont paramétrées avec des annotations Doctrine, qui définissent les relation entre les entités (miroir des tables de la base de données), mais ça je trouve plutôt pas mal car vous gagnez beaucoup de temps, mais il faut il y a beaucoup de chose à savoir !

Une fois qu’on respecte à la lettre les recettes, on s’aperçoit que finalement on a peu de liberté pour coder, puisque tout est réglé au millimètre. En fait votre seule liberté est dans la couche business.

Travailler avec un framework de grade entreprise, les contreparties

Un framework a une raison d’exister puisqu’il y a un marché, et ce marché c’est celui de l’entreprise, des moyennes et grosses applications. Il faut produire des applications robustes, dans un minimum de temps, et que cette application soit extensible. Et pour remplir ces objectifs, on ne peut pas faire autrement, on ne peut pas réinventer la roue à chaque fois.

Je n’ai plus l’impression d’être un artisan du web, mais plutôt un ouvrier qui va travailler selon des normes ISO, des process, je ne critique pas cela, car dès qu’on vise une certaine qualité logicielle, il faut passer par ces frameworks. Mais ce faisant on va faire toujours les mêmes choses.

C’est pour ça que j’ai abandonné l’idée de développer des connaissances en Java et C#, car de facto quand vous abordez des projets dans ces langages, vous vous retrouvez face à des léviathans.

Donc en bref, vous gagnez en bonne pratique et robustesse, qualité de l’application (bonne chose), mais c’est au détriment de la liberté.

Note : Ce n’est pas parce qu’un framework vous oblige à coder de telle façon qu’il n’est pas possible de sortir une application codée de façon dégueulasse.

Je ne sais pas où vous pouvez vous caser, mais le futur que vous envisagez n’est peut-être pas aussi intéressant que vous pensiez, faire des projets qui se ressemblent va finir par vous user, ce qui nous fait au problème suivant : trouverez vous le plaisir de coder si cela devient routinier?

PS : inutile de commenter, le débat peut se poursuivre sur Twitter.

Retour en haut