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 ?

Depuis quelque temps, l’article de Matthias Noback parlant de la dangerosité des bouchons apparaît régulièrement sur mon radar.

Creating test doubles is a very dangerous activity - Matthias Noback

Matthias recommande fortement dans son article de se passer des bouchons, à part pour simuler les dépendances périphériques de l’application, car il considère que dans la plupart des autres cas, ils n’apportent que des problèmes.

Or, vous aurez compris que si par le passé, j’ai pu être d’accord avec Matthias, aujourd’hui, je pense que c’est une erreur de faire cela.

En effet, un objet devrait être considéré comme une application autonome, capable de dialoguer avec d’autres applications à l’aide d’un protocole défini par son interface publique.

Et cette vision de l’objet n’est pas l’un de mes fantasmes, c’est une réalité : l’environnement d’exécution de Smalltalk est par exemple à la fois une application et un objet.

Et dans ce cas, l’ensemble des dépendances d’un objet sont donc des dépendances périphériques et elles devraient donc être systématiquement simulées par un bouchon dans les tests unitaires correspondants.

Alors certes, avec des dépendances externes telles que l’EntityManager évoqué par Matthias dans son article, cette « philosophie » peut effectivement sembler peu pertinente et peut poser beaucoup de problèmes.

Cependant, ce n’est pas le concept de bouchon qu’il faut mettre en cause dans ce cas, et encore moins son périmètre d’utilisation : il faut remettre en cause la conception de la dépendance externe (#protip à partir du moment où le développeur à besoin de savoir dans quel ordre les méthodes d’une classe doivent être appelées sur un objet pour que ce dernier fonctionne correctement, il y a un vice de conception).

La solution n’est donc pas de réserver la mise en œuvre des bouchons à quelques cas d’usages très spécifiques, mais de faire en sorte d’abstraire le service requis grâce à une interface.

Et c’est d’ailleurs la solution proposée par Matthias pour résoudre son problème avec l’EntityManager

Contrairement à Matthias, je vous recommande donc d’utiliser des bouchons systématiquement, et d’effectivement le faire pour simuler des interfaces et non des classes concrètes.

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

lundi 11 août 2014

Réussir dans la vie…

Il faut que tu travailles bien à l’école pour réussir dans la vie. Il faut que tu travailles bien et beaucoup pour réussir ta carrière. Il faut que tu aies une Rolex à ton poignet avant 50 ans pour réussir ta vie. Il faut… pour réussir… Je pense que nous avons tous entendu cette ritournelle à minima  […]

Lire la suite

- page 1 de 95