Les débats de développeurs sont intenses

Les débats de développeurs sont intenses

Les débats de développeurs sont d’une intensité folle. C’est pas des simples discussions. C’est des débats politiques avec des enjeux d’état. C’est sérieux, souvent enrichissant, mais toujours beaucoup trop militant.



Le code coverage

Y’a pas longtemps, avant tout ce bordel de virus de merde, je me suis retrouvé au milieu d’un débat. Et le sujet en question c’était l’indémodable code coverage. Un grand clasico.

Le débat est simple. Pour les tests unitaires, faut-il forcer un code coverage de 100% ou non ? Quelqu’un a posé la question innocemment un matin pendant le stand-up. Le ton est monté instantanément. Une ligne a été tracée dans le sable. Deux camps radicalement opposés se sont formés.



débats


À ma droite, le camp du non. Les arguments sont bons. Y’en a d’autres, mais par souci de longueur on va évoquer seulement les deux principaux.

  • Beaucoup de tests vont être faits « pour remplir » et arriver aux chiffres fatidiques. En ne forçant pas le 100%, on peut se concentrer sur les tests qui comptent vraiment. Travailler moins pour gagner plus.
  • Certaines parties de ton app n’ont juste pas besoin de tests unitaires. Comme par exemple le lancement d’un serveur web express en Node. Et c’est super chiant de mocker plein de merde juste pour arriver à 100%.

À ma gauche, le camp du oui. Eux aussi ont plein d’arguments solides. Les deux principaux sont les suivants.

  • À 100%, on oblige le code à être pensé pour être plus testable, plus modulaire et donc plus maintenable. Et donc tout simplement, ça augmente la qualité de tout le projet.
  • En faisant passer la machine partout, le développeur va détecter des bugs insoupçonnés avant de les voir apparaître en prod. Tu rends clairs les moindres recoins obscurs de ton application.

Après un débat digne du second tour de la présidentielle, cette histoire s’est finie que le lead tech a posé un veto et forcé le 100%. Ça tombait bien, je suis dans le camp des 100% ! Et je t’attends dans les commentaires si t’es pas d’accord avec moi.



POO contre programmation fonctionnelle

Ce débat est aussi un classique. Quel paradigme de programmation est le meilleur ? L’orienté objet ou le fonctionnel ? Les gens ADORENT parler de ça. J’ai toujours trouvé que c’était une perte de temps totale. Ça ne fait rien avancer et c’est chiant à mourir.



dodo


Mais allez, parlons rapidement de ce débat. Il y a quand même deux trois trucs intéressants à retenir dans tout ce bordel. La discussion tourne presque à chaque fois autour du fait que la programmation fonctionnelle gagne en popularité et tend à prendre de plus en plus de place.

Ceux qui détestent l’orienté objet en parlent beaucoup. L’article que je te mets là est super intéressant, mais c’est une lecture de 30 min. Le dev derrière tout ça est très intense. Il chie sur la POO pendant 30 min non-stop.

En résumé :

  • L’orienté objet serait juste trop compliqué pour pas grand-chose.
  • Énormément de temps serait perdu à réfléchir à de l’abstraction et des design pattern, au lieu de régler les vrais problèmes.
  • Les langages POO seraient moins adaptés à des besoins forts en concurrence à comparer au fonctionnel.

Mon avis là-dessus c’est que, comme toujours en informatique, ça dépend ! Ça dépend du besoin, du projet et de ton équipe. Et puis surtout ça dépend du langage dans lequel ton entreprise est la plus à l’aise.

Enfin de plus en plus de langage permettent d’utiliser plus ou moins les deux paradigmes. Bref, c’est pas le débat le plus fifou d’aujourd’hui.



Le meilleur IDE

Alors celui-là par contre est très drôle. Il fait pas avancer grand-chose non plus, mais on rigole. Quel est le meilleur éditeur de code ? Cette question déclenche des coups d’état !

Il y a bien longtemps, dans une galaxie lointaine, très lointaine, je bossais en permanence avec trois autres dev. Ces trois devs utilisaient tous SublimeText. Pas moi. Moi, je suis team Visual Studio Code. Ils ont essayé de me convertir pendant un moment, sans succès.

Et un jour, la décision fut prise qu’une machine virtuelle commune allait être faite. Un environnement de travail commun créé via Vagrant et provisionné avec Ansible. De base, SublimeText sera installé, mais pas Visual Studio Code !

Apparemment, Visual Studio Code c’était pas assez bien. J’étais vraiment choqué. Quelle honte. Quelle indignité !



débats


Bon, à force de chialer, j’ai pu moi-même intégrer VSC au playbook Ansible. Mais pas avant un énième débat. Et ce qui est drôle avec ce débat c’est que les arguments sont tous bidon. C’est de la religion pure. Les éditeurs se valent tous plus ou moins.

  • Toutes les features sont reproduisibles d’un éditeur à un autre, avec ou sans plugin.
  • L’écrasante majorité est multiplateforme et multilangages
  • Les performances entre les éditeurs se valent toutes
  • Même les shortcuts peuvent être transférés d’un IDE à un autre.

VSC à eu mauvaise réputation à un moment, niveau performance c’était problématique. Mais ça fait longtemps que c’est fini tout ça. Maintenant il est loin devant côté utilisation.

La seule exception je dirais c’est VIM. Je suis obligé d’avouer que les utilisateurs expérimentés de VIM sont plus rapides à manipuler du code. L’utilisateur de shortcut poussé et l’oubli de la souris sont redoutables. Ça boost la productivité. Le problème c’est le prix d’entrée dans VIM. Il faut apprendre, retenir les shortcuts et savoir utiliser vraiment VIM sans devenir fou. Faudrait que je m’y mette un jour, surtout que VIM existe dans VSC.



La guerre des langages

De loin le débat le plus virulent. Celui qui a fait le plus de victimes. Quel est le meilleur langage informatique ? Tout le monde s’accroche, on atteint des niveaux de pression critiques.

Tu te doutes bien que je vais pas te soûler avec tous les arguments de tous les langages. Ce débat est réservé aux gens qui n’ont toujours pas compris que les langages sont des outils. Et quand on leur dit que leurs langages ne conviennent pas au besoin, ça les rend fous.



fou


Je vais pas te refaire toute l’explication sur la religion chez les développeurs. Si le sujet t’intéresse, j’en ai dédié un article. Je t’invite aussi à aller voir les commentaires sur mon article sur PHP pour te rendre compte de l’intensité des devs sur ce débat. Mais en gros tu peux mettre fin au débat en avançant les points suivants.

  • Besoin de développement web ? Javascript et/ou PHP sont tes amis.
  • Besoin de serveur à fortes concurrences ? Go c’est vraiment pas mal.
  • Besoin de faire un jeux vidéo ? C++ est bien adapté.
  • Besoin de faire du machine learning ? Python est excellent.

Etc etc, tu vois où je veux en venir. Chaque langage est différent des autres dans ses principes fondamentaux et ses objectifs. Les comparer entre eux, c’est une perte de temps. Il suffit de savoir en quoi ils sont adaptés.

Bref, comme à chaque fois depuis le début de cet article. Mon avis sur les débats ne change pas. CA DÉPEND !



débats


HTML c’est de la programmation

Alors celui-là, c’est de loin le plus bizarre de tous. HTML c’est de la programmation ou pas ? T’en penses quoi toi pour de vrai ? Pour la plupart des développeurs, entendre quelqu’un dire qu’HTML est un langage de programmation, c’est un SCANDALE !



scandale


Cette question est devenue un débat et ce débat fait rage depuis des années. Des discours d’une violence rare ont été publiés partout. Que ça soit du côté du oui ou du côté du non, les militants ne font plus de diplomatie. Quels sont ces arguments ?

Du côté du oui

  • HTML est un langage de programmation déclaratif et non impératif. Mais ça reste un langage de programmation.
  • La programmation déclarative est une forme de programmation et donc HTML est un langage de programmation.
  • Dire que l’HTML n’est pas un langage de programmation viendrait d’une sorte d’élitisme de certains développeurs.

Du côté du non

  • Aucune condition, boucle, comparaison ou logique de façon général n’est applicable au HTML.
  • HTML est un langage de balisage (Markup), pas de programmation.
  • HTML n’est pas complet au sens de Turing. Ce ne donc pas un vrai langage de programmation

Mon avis là-dessus est vraiment partagé. Évidemment, j’ai envie d’être du côté du non. Pour moi, un langage c’est surtout manipulé de la logique. Mais en fait, ça dépend (oui encore) de ta définition de « langage de programmation ».

Si cette définition inclut les langages dits déclaratifs, alors HTML en fait partie. Je comprends que ce débat fait rage. Tout vient de la nuance sur la définition de langage. Il faudrait déjà se mettre d’accord sur ce point du coup.



Tabulation contre espace

On finit par le débat des débats. Le père de tout débat chez les développeurs. Un sujet qui fait hurler depuis presque 20 ans maintenant. Pour l’indentation de ton code, il vaut mieux utiliser les tabulations ou les espaces ?





Du côté espace :

  • Les espaces rendraient l’indentation plus consistante dans différentes configurations (OS, système de suivi, IDE)

Du côté tabulation

  • Les tabulations auraient été créées dans le but de l’indentation
  • Les espaces seraient imprécis dans le cas de l’indentation
  • Pour le même résultat, une tabulation utilise 1 bit quand 4 espaces utilisent 4 bit

Je vais être complètement honnête, je me suis jamais posé la question. J’ai toujours utilisé les tabulations de façon naturelle. Je pense que c’est une question de préférences personnelles.

Apparemment, tu ferais plus d’argent en utilisant les espaces. Personnellement, j’ai pas envie de me faire chier avec les espaces. J’ai pas non plus vu une vraie différence en utilisant l’un ou l’autre.

Par contre, quand je vois un dev taper sur sa barre espace quarante fois comme un malade pour indenter son code, ¸¸ça me donne envie d’hurler au secours.



jeanne


Épilogue

Bref, stoppez-vous. Tu te stop ! Vous êtes tous beaucoup trop intenses avec vos débats. Surtout quand on voit que la plupart sont totalement inutiles. Ce qui est important c’est d’en parler une bonne fois pour toutes dans ton équipe et que vous tombiez d’accord sur des guidelines. Sortie de ces guidelines, c’est juste de la politique.