jeudi 4 octobre 2018

Soyez le changement que vous voulez voir dans le code !

Chez Norsys, l’un de mes rôles est d’être formateur au sein de « l’école du développeur », un cursus de formation qui est suivi par les nouveaux arrivants.

Concrètement, ils partent dans un premier temps 5 jours à Lille au siège du groupe pour apprendre les bases théoriques que nous pensons nécessaires pour qu’ils soient de « bons » développeurs au sens « Norsys » du terme.

Et dans un second temps, la plupart du temps dans la foulée de la session lilloise, je reçois sur Lyon ceux qui font du PHP pour une session de travaux pratiques de 5 jours pour leur faire toucher du doigt ce qu’implique être un « bon » développeur aujourd’hui, toujours au sens « Norsys » du terme.

Je ne vais pas vous expliquer dans le détail ce qu’est pour Norsys un « bon développeur », car pour comprendre mon message, vous avez uniquement besoin de savoir qu’à la suite de cette formation, je reçois souvent des messages qui peuvent, en caricaturant à peine, se résumer à :

Mon projet, c’est le gros bordel, la dette technique est phénoménale, il n’y a aucune communication au sein de l’équipe, d’ailleurs, il n’y a pas d’équipe ni de tests ni de spécifications, par contre, il y a de la duplication de code partout, l’architecture est aux abonnés absents, il n’y a pas de vision ou alors elle change d’un jour à l’autre, les algorithmes sont inefficaces, l’intégration continue n’existe pas, et puis… tu te rends compte qu’ils travaillent encore avec SVN ???? Je n’ai pas signé pour ça !

Et bien souvent, comme si l’auteur du message avait honte de me dire qu’il voudrait pouvoir faire correctement son travail, il minore son propos avec quelque chose du style « Est-ce que tu penses que j’en demande trop ? »

Bref, il veut me faire sentir que je lui ai vendu du rêve durant la formation, qu’il est totalement frustré par la réalité de son quotidien, et que par conséquent il n’est pas du tout heureux.

Et je reçois et je comprends très bien ce message, car cela fait 18 ans que je vis cela.

En effet, que ce soit durant les 15 années que j’ai passées chez des éditeurs de logiciel ou bien les 3 années que je viens de passer chez Norsys, je n’ai jamais rencontré un projet qui respectait l’ensemble des bonnes pratiques de développement ou qui correspondait à mes critères de qualité.

Plus fort, si les projets que j’ai fait naître ont pu à une époque être à mes yeux de « qualité », ce n’est plus forcément le cas aujourd’hui !

Toujours plus forts, les développeurs plus expérimentés que je connais ont également ce ressenti !

Je pense donc qu’il est possible d’en conclure que le projet parfait n’existe pas !

Arrivé à ce point de votre lecture, je suis prêt à parier que vous êtes en train de penser que si cela est avéré, c’est d’une tristesse affligeante et qu’il vaudrait mieux changer de métier et devenir (par exemple) charcutier…

C’est effectivement une possibilité… mais ce n’est pas la seule.

En effet, il serait dommage de jeter l’éponge, car c’est un gâchis de vouloir arrêter de faire un travail lorsqu’on sait comment le faire correctement.

C’est peut-être même la pire des décisions possibles, car vous n’apportez aucune valeur…

Mais si au contraire vous suivez le conseil de Gandhi en faisant en sorte d’apporter le changement que vous voulez voir apparaître, vous apportez une valeur énorme, parce que vous savez (ou penser savoir, n’oubliez pas cela) comment faire les choses correctement et que visiblement ce n’est pas forcément le cas des autres autour de vous.

D’un point de vue capitaliste (hum), c’est d’ailleurs ce qui fait votre valeur, car dans notre société, ce qui est rare est cher, donc si vous êtes le seul dans une équipe à savoir comment améliorer les choses, vous êtes un diamant dans un tas de charbon !

Dit autrement, si tout le monde savait développer en suivant les bonnes pratiques, le fait de les connaître et de savoir les appliquer n’aurait quasiment aucune valeur !

Alors oui, ça ne va pas être simple, il va y avoir du sang, des larmes et de la sueur qui vont couler, et il va falloir se salir les mains en utilisant une batte de base-ball ou de la vaseline, en fonction de votre caractère (et les deux ne sont pas forcément incompatibles).

Il vous faudra être pédagogue, être capable de communiquer, expliquer, montrer, faire, démontrer, répéter, évangéliser, à l’aide de méthodes diverses et variées, telles que le « pair programming », le « mob programming », les « meetups », les revues de code, un partage de veille technologique, etc.

Et oui, tout cela représente un travail intellectuel et psychologique de longue haleine qui ne portera ses fruits qu’à long terme ou qui n’aboutira pas.

En effet, comme l’a justement remarqué Forrest Gump, un autre grand philosophe, la merde, ça arrive, ce qui veut dire que vous allez peut-être échouer à porter la bonne parole, mais n’oubliez pas que même Jésus a fini sur une croix en le faisant.

Peut-être qu'à un moment, il faudra donc savoir être lucide et jeter l'éponge avant de faire un burnout en allant travailler pour une entreprise qui correspond mieux à vos attentes.

Cependant, ce n’est pas une raison pour ne pas au moins essayer, d’autant que malheureusement, cela fait aujourd’hui partie intégrante de notre métier.

Le Code, au sens large du terme, a aujourd’hui un passif énorme, et la dette technique à l’échelle mondiale est certainement bien plus importante que la dette financière.

Il repose sur des bases anciennes, à commencer par les systèmes d’exploitation qui ont tous plus de 20 ans et dont la conception est dirigée pour la plupart d’entre eux en fonction de critères économiques, ce qui est loin d’être un gage de qualité.

N’ayez aucun doute que chacun d’eux à des zones d’ombre dans lesquelles vivent des monstres que vous n’imaginez même pas, sans parler des problématiques au niveau du matériel.

Les bases ne sont donc pas saines, et nous avons donc construit notre code sur ce château de cartes, couche après couche, parfois sans même savoir ce que nous faisions exactement, faute de formation adaptée et d’une volonté de simplification des outils qui a pour conséquence que de nos jours, plus personne ne sait exactement ce qui se passe dans un CPU.

De plus, nos pères fondateurs ont aussi une part de responsabilités, même si à leur décharge, ils étaient des précurseurs et étaient donc par nature bien mal armés pour pouvoir concevoir du code destiné à vivre sur le long terme.

La programmation orientée objet a par exemple été inventée dans les années 60 pour répondre aux problèmes posés par la maintenance et l’évolution du code, mais malheureusement, des générations entières de développeurs n’ont pas bien compris le message (la dose d’ironie présente dans cette phrase est phénoménale).

Mais connaître tout ou partie de l’origine de cette dette n’a de toute façon pas beaucoup d’importance, car il est aujourd’hui devenu très difficile d’y changer quoi que ce soit.

La refonte nécessaire pour la réduire et pouvoir ainsi produire du code sur des bases plus saines est bien trop importante pour être rentable économiquement parlant, même si elle implique le sacrifice d’une bonne partie des ressources des ordinateurs d’aujourd’hui pour être tenable.

Si vous voulez être un développeur, vous n’avez donc pas le choix, il va vous falloir vous coltiner beaucoup de merde durant votre carrière.

C’est un peu la même dynamique que pour le changement climatique : La voiture est en train de tomber dans le ravin, mais ça couterait bien trop cher de la transformer en hélicoptère ou bien à minima de lui greffer un parachute pour amortir un minimum la chute, et nous allons donc atterrir très violemment un jour.

Cependant, si je pense qu’en tant qu’individu, il n’est plus vraiment possible d’avoir un impact significatif sur l’évolution du climat, je pense qu’il est encore possible d’améliorer le code localement, car contrairement au climat, le couplage entre les différents composants d’un programme informatique est (censé être) faible (même s’il est probable que dans 50 ans, il n’y aura plus d’électricité pour faire fonctionner les ordinateurs permettant d’exécuter du code).

Alors, comme l’a dit encore un autre grand philosophe, JUST… DO… IT!

mardi 27 février 2018

À propos des mocks

J’ai découvert les mocks (ou les bouchons, en français) en 2005, lorsque j’ai commencé à m’intéresser très sérieusement aux tests.

J’avoue qu’à l’époque, je n’y ai vu qu’une couche de complexité qui n’apportait pas une réelle valeur ajoutée, et j’ai gardé cette opinion pendant longtemps, même si ponctuellement, j’y ai vu un réel intérêt.

Et puis j’ai commencé à m’intéresser à ce qu’était réellement la programmation orientée objet, et j’ai alors totalement changé d’avis à propos des bouchons.

Je ne peux aujourd’hui plus du tout m’en passer et je les mets en œuvre systématiquement pour simuler les dépendances de mon code.

Pourquoi est-ce que je vous explique tout cela ?

Lire la suite

lundi 8 janvier 2018

Les outils sont-ils la solution à nos problèmes ?

Frédéric Menou a écrit un très bon article à propos de la programmation fonctionnel et d’Haskell, dans lequel il décrit notamment les raisons qui l’ont amené à apprendre ce paradigme et ce langage.

Je n’ai pas d’avis sur son choix d’Haskell pour son activité, car je ne connais pas ce langage et encore moins son métier.

Par contre, je connais relativement bien la problématique qui l’a mené vers cette solution, car j’ai rencontré exactement la même.

En effet, si je résume (certainement très grossièrement) sa démarche, Frédéric s’est tourné vers Haskell essentiellement parce qu’il cherche à écrire le moins de bogues possible lorsqu’il code, et il pense que le formalisme offert par le langage lui permet d’y parvenir, tout en améliorant la communication avec l’ensemble des parties prenantes dans un développement informatique.

Lire la suite

mercredi 25 octobre 2017

Je serais au forum PHP 2017 !

Grâce à Norsys, je serais une nouvelle fois au forum PHP qui débutera demain, et en compagnie de 6 collègues.

J’y serais en « presque » simple visiteur, puisque je me contenterais d’y présenter un « lightning talk » de 5 minutes à propos du RGPD, ce qui va me laisser du temps pour profiter pleinement de l’événement.

Je me suis donc mitonné un programme aux petits oignons, car je trouve la sélection de conférences effectuée par l’AFUP est très attrayante.

Lire la suite

lundi 6 mars 2017

Combien de temps pour préparer une conférence (ou peindre la Joconde) ?

J’ai écrit ce billet à la suite d’une demande de Pascal et de la discussion qui s'en est suivie avec Éric.

Je fais des conférences depuis plus de 10 ans.

J’ai toujours passé énormément de temps à les préparer, et si je regarde dans le rétroviseur, je dirais que j’y passe de plus en plus de temps, car je suis de plus en plus exigeant avec moi-même.

Aujourd’hui, je pense que je mets en moyenne une dizaine de jours pour formaliser un sujet sur lequel j’ai déjà à minima au moins une vague idée de la façon dont je veux faire passer mon message, ce qui comprend :

  1. La création du plan ;
  2. La création des diapositives correspondantes avec en commentaire le texte correspondant qui sera utilisé pour la mise en ligne de la conférence ;
  3. La recherche des éléments multimédia permettant de transporter le plus rapidement possible l’idée ;
  4. Les répétitions.

Cependant, ce temps ne tient absolument pas compte du temps de maturation du sujet, à partir du moment où j’en ai eu l’idée jusqu’aux prémisses de sa formalisation.

Lire la suite

vendredi 16 décembre 2016

Nous ne sommes pas que du code

Dois-je faire du libre, avoir un compte sur Github et passer mes soirées et mes week-ends à coder dans le dernier langage à la mode pour pouvoir être reconnu comme un passionné de la programmation, comme faisant partie des meilleurs développeurs au monde, et donc pour être digne d’être embauché ?

Celui qui pose implicitement cette question est Ezekiel Buchheit, et il est Software Dev Engineer II, d’après son compte linkedin.

Il travaille aux USA, chez Amazon, et d’après son parcours, il est l’équivalent de ce que l’on appelle un développeur senior en France.

Et je ne sais pas ce que cette question provoque comme réaction chez vous, mais dans mon cas, son existence me fait peur.

Pourquoi ?

Lire la suite

mardi 22 novembre 2016

Rencontre d’un troisième type

32.jpg

Lorsque j’ai dit dans ma conférence au dernier forum PHP que nos rencontres nous rendent unique, c’est parce que j’en suis persuadé, car je l’ai vécu.

J’ai aujourd’hui un peu plus de 40 ans, et je ne serais pas celui que je suis et je ne ferais pas ce que je fais de la façon dont je le fais si je n’avais pas croisé au cours de ces années un certain nombre de personnes qui m’ont apporté une part d’eux-mêmes ou des valeurs qui sont venues se mettre en symbiose avec les miennes.

Ces personnes se connaissent parfois (après tout, qui se ressemble s’assemble, et c’est peu de le dire pour certaine), mais parfois elles n’ont absolument aucune relation.

J’ai pu les croiser quotidiennement des années durant… ou bien une seule et unique fois, pendant quelques minutes.

Elles s’appellent Christophe, Élodie, Yannick, Jean-Marc, Fabien, Julien, François… ou Philippe.

Lire la suite

vendredi 18 novembre 2016

À propos du forum PHP 2016

J’ai participé une fois encore au forum PHP cette année. Cependant, cette édition a eu pour moi une saveur particulière, pour plusieurs raisons. Tout d’abord, pour la première fois en presque 10 ans, je n’ai pas participé à l’intégralité de l’événement à cause de contraintes professionnelles. Je  […]

Lire la suite

mercredi 16 novembre 2016

À propos de l’USB-C des nouveaux MacBook Pro

Beaucoup de choses sont dites à propos des ordinateurs portables présentés dernièrement par la firme à la pomme, et notamment qu’ils sont trop chers et trop limités pour un usage professionnel.

Je ne vais pas entrer dans cette polémique, car j’ai mieux à faire de mon temps, et je vais donc me contenter de vous présenter ma réflexion personnelle sur le sujet.

Lorsqu’est sorti l’iMac sans lecteur de disquette, je me suis dit qu’Apple était devenue folle.

Lorsqu’est sorti le premier iPod, je me suis dit qu’Apple était devenue folle.

Lorsqu’est sorti le MacBook sans lecteur optique, je me suis dit qu’Apple était devenue folle.

Lorsqu’est sorti le premier iPhone, je me suis dit qu’Apple était devenue folle.

Lorsqu’est sortie la première version du MacBook Air sans port Ethernet, je me suis dit qu’Apple était devenue folle.

Lorsqu’est sorti l’iPhone 7 sans port « jack », je me suis dit qu’Apple était devenue folle.

Lorsque j'ai regardé les spécifications des nouveaux MacBook Pro, je me suis dit qu’Apple était devenue folle… et puis, j’ai regardé dans le rétroviseur.

Lire la suite

vendredi 23 septembre 2016

Mettre l'Installateur de macOS Sierra sur une clef USB

Trouver une clef USB d'une capacité ≥ à 8 Go ; L'insérer dans un port USB disponible ; Télécharger macOS Sierra à partir de l'App Store ; Ne pas lancer l'installation de macOS Sierra ; Ouvrir un terminal ; Exécuter `sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia  […]

Lire la suite

mardi 21 juin 2016

Alan Kay about object

I've been constantly surprised about how what I called object-oriented and system-oriented got neutered into Abstract Data Types, etc. I think because people wanted to retain the old ways of programming with procedures, assignment statements, and data structures. These don't scale well, but enormous  […]

Lire la suite

mercredi 17 février 2016

C'est l'histoire d'un mec

C'est l'histoire d'un mec qui exécute dans son terminal la commande phpmetrics --report-html=~/metrics src, qui se retrouve en conséquence avec un répertoire ~/ dans son répertoire courant et qui fait donc un rm -rf ~/ pour le supprimer, pour aller ensuite faire une offrande à Steve Jobs pour avoir  […]

Lire la suite

mardi 1 décembre 2015

PHP et ./configure

Aujourd’hui, j’ai fait un brew install (je sais, je suis un dingue) qui a mis à jour la bibliothèque icu, utilisée par l’extension int de PHP.

Du coup, PHP est devenu inutilisable sur mon poste de travail puisque j’obtenais systématiquement la sympathique erreur suivante :

# php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.55.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
Trace/BPT trap : 5

L’erreur peut semble quelque peu incompréhensible au premier abord, mais l’expérience m’a appris qu’elle veut tout simplement dire que l’exécutable PHP n’est pas capable de localiser la bibliothèque libicui18n.55.dylib à l’emplacement indiqué lors de sa compilation, ce qui est logique vu que brew a supprimé le fichier concerné au profit de libicui18n.56.dylib (et oui, les bibliothèques qui contiennent leur numéro de version dans leur nom sont une plaie).

Lire la suite

vendredi 6 novembre 2015

J'ai oublié de vous dire… #2

J’ai oublié de vous dire que je vais me livrer à un exercice inédit pour moi lors du prochain forum PHP les 23 et 24 novembre 2015.

En effet, l’AFUP, traditionnelle organisatrice de l’événement, me renouvelle à cette occasion sa confiance puisqu’elle a retenu ma proposition de conférence concernant atoum.

Cependant, cette conférence sera très différente de celle que j’ai déjà eu l’occasion de donner à son sujet, puisque contrairement aux précédentes, elle ne se focalisera pas sur l’outil en tant que tel, mais sur ce qu’il s’est passé au cours de son développement depuis sa naissance à aujourd’hui.

Je souhaite en effet parvenir à réaliser au cours de ma conférence ce que l’on pourrait appeler une rétrospective agile du projet de sa naissance à aujourd’hui, en temps réel et avec la participation active du public, dans l’optique de parvenir à définir collectivement les actions à mener pour l’améliorer à tout point de vue.

Lire la suite

jeudi 29 octobre 2015

Chronique sur mon voyage vers l'est, quatrième !

Comme je l’ai annoncé dans mon précédent billet, je viens de donner pour la quatrième fois ma conférence à propos de la programmation orientée objet « vers l’est » dans le cadre de Blend Web Mix.

La forme a légèrement évolué au cours de ces quatre itérations, mais le fond est resté exactement le même et ceux qui n’ont pu y assister pourront donc consulter l’histoire correspondante que j’avais publiée après le PHP Tour luxembourgeois.

Lire la suite

mercredi 28 octobre 2015

J'ai oublié de vous dire… #1

J’ai oublié de vous dire que je donnerais demain une conférence à la Blend Web Mix à propos de la programmation orientée « vers l’est », également connue sous le nom de programmation orientée objet. Cette conférence est la synthèse du (long et difficile) chemin que j’ai parcouru en 18 mois lorsque  […]

Lire la suite

mardi 27 octobre 2015

J'ai un emploi !

Le dernier billet de ce blog a été pendant bien trop longtemps je suis à la recherche d’un emploi.

Je dis bien trop longtemps, car depuis maintenant pratiquement six mois, je travaille pour la société Norsys.

Ceux qui me connaissent, qui prendraient la peine de faire une recherche sur cette entreprise et qui s’arrêteraient aux premiers résultats retournés par leur moteur de recherche favori seront potentiellement surpris de mon choix.

En effet, Norsys est ce que le Syntec Numérique a décidé de pudiquement renommer il y a deux ans Entreprise de Services du Numérique, ou ESN, l’abréviation SSII pour Société de Service en Ingénierie et Informatique étant certainement devenu trop négativement connotée à son goût.

Et ce n’est un secret pour personne, je ne porte vraiment pas ce type de société dans mon cœur, pour tout un tas de raisons dont je suis prêt à débattre autour de plusieurs bières (si c’est vous qui les offrez, parce qu’il me faudra une motivation assez forte pour que j’accepte de me lancer dans ce type de discussion).

Mais alors, pourquoi ai-je décidé de rejoindre cette société, me direz-vous ?

Lire la suite

mercredi 8 avril 2015

Je cherche un emploi !

Je sais bien que cela peut sembler un peu mesquin de sortir ce blog de son sommeil pour faire savoir qu’à la suite d’un licenciement économique, je suis à la recherche d’un travail sur Lyon et ses alentours, mais comme le dit l’adage populaire : aux grands maux, les grands remèdes. Donc, si  […]

Lire la suite

mardi 9 septembre 2014

Spécifiez agile !

Si les livres relatifs à l’agilité du point de vue du développeur sont légion, ceux l’abordant du point de vue fonctionnel sont assez rares.

Or, l’agilité mise avant tout sur la bonne collaboration de toutes les parties prenantes d’un projet pour parvenir à sa concrétisation.

Il est donc primordial que chaque intervenant dispose d’une vision claire des concepts agiles et sache les exploiter au mieux dans son domaine de compétence.

Le livre de Thierry Cros intitulé Spécifiez agile a donc éveillé très fortement ma curiosité lorsque j’ai découvert son existence, à tel point que je me le suis offert en me disant que cela me permettrait peut être de mieux faire passer l’agilité auprès des experts fonctionnels avec lesquels je tentais de travailler à l’époque.

Voici donc ma critique de ce livre qui, je l’espère, permettra à Thierry d’améliorer son ouvrage.

Lire la suite

vendredi 29 août 2014

À propos de phpng et de PHP 7

Il y a quelques jours, Johannes Shlüter a donné une conférence à propos du fonctionnement de phpng.

Pour ceux qui l’ignorerait, Johannes a été le « release master » de la version 5.3 du langage, et phpng sera le remplaçant du Zend Engine 2 dans ce qui sera PHP 7, qui correspond à la prochaine version majeure du système et qui prendra donc la suite de PHP 5.

Vous avez bien tout suivi ? Si ce n’est pas le cas, relisez le paragraphe précédent en faisant abstraction de vos connaissances en arithmétique élémentaire…

Le mariage de PHP 7 et de phpng devrait être consommé dans approximativement un an, d’après Zeev Suraski.

Grâce à phpng, PHP 7 devrait donc apporter un gain de performance très significatif, comme d’habitude avec chaque nouvelle version du langage…

Lire la suite

- page 1 de 96