mageekblogLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearEt si nous utilisions mal nos outils ?urn:md5:643c34f4db7c9c7fa75373110f52e1f82018-10-18T17:30:00+02:002018-10-18T17:30:00+02:00mageekguyRéfléxions<p>Dans <a href="https://damien.pobel.fr/post/au-cas-ou/">l’un</a> de ces récents billets, <a href="https://damien.pobel.fr/page/cv/">Damien</a> exprime sa défiance vis-à-vis de ce qu’il appelle la généralité spéculative, c’est-à-dire le fait de concevoir son code dans le but d’anticiper la résolution de problèmes éventuels, car cela implique la construction d’usine à gaz et donc la contraction d’une dette technique sans raison factuelle.</p>
<p>En tant qu’adepte de l’agilité, je suis sensible à ce discours, puisque l’un des buts des méthodes agiles est notamment de permettre la résolution d’un problème réel avec une solution apportant un maximum de valeur ajoutée, et il serait donc logique que je n’aie aucune réserve par rapport aux idées portées Damien.</p>
<p>Cependant, ce n’est pas le cas.</p> <p>En effet, dans un contexte agile, afin de pouvoir pivoter afin de résoudre un problème avec un maximum d’efficacité, il y a des prérequis humains et techniques indispensables qui doivent avoir été mis en place en amont.</p>
<p>Humainement parlant, la communication au sein de l’équipe et de l’entreprise qui l’accueille doit être efficace, l’équipe doit disposer rapidement des moyens nécessaires pour atteindre ses objectifs, les responsabilités doivent y être partagées, les rôles clairement déterminés, et elle doit exploiter correctement le feedback qui doit bien évidemment être collecté afin que l’amélioration continue devienne une réalité, et cette liste est loin d’être exhaustive.</p>
<p>Et techniquement parlant, les développeurs doivent être en mesure de faire évoluer leur code rapidement, de faire des expérimentations et de revenir en arrière à moindre coût, tout en garantissant qu’il répond toujours aux besoins du client.</p>
<p>En clair, l’équipe doit disposer des outils et des moyens nécessaires non pas pour anticiper un avenir par nature incertain, mais pour pouvoir s’y adapter.</p>
<p>Or, la production d’un code suffisamment générique est à ma connaissance le seul moyen dont dispose un développeur pour que son code puisse être adapté au changement par lui-même ou quelqu’un d’autre.</p>
<p>Écrire du code générique n’est donc pas à mon avis une mauvaise pratique, bien au contraire, d’autant que la programmation orientée objet a précisément été conçue pour cela : permettre la création à moindre coût à tout point de vue d’un code facile à maintenir, à faire évoluer et réutilisable.</p>
<p>Par conséquent, écrire du code générique ne devrait pas être un problème pour un développeur pratiquant la programmation orientée objet (je ne me prononce pas pour les autres paradigmes…), puisqu’il dispose du meilleur outil disponible à ce jour pour cela.</p>
<p>Alors pourquoi est-ce que c’est considéré comme une mauvaise pratique ? Ou, formulé autrement, comment est-il possible qu’écrire du code générique à l’aide d’un paradigme censé le permettre simplement et facilement semble être une tâche insurmontable, la chose à ne surtout pas faire ?</p>
<p>Le paradoxe semble insurmontable, mais j’ai une explication qui risque de faire mal à votre ego si vous pratiquez la programmation orientée objet : la plupart des développeurs ne savent pas utiliser ce paradigme correctement, ce qui les empêche d’en exploiter le plein potentiel !</p>
<p>En effet, nous faisons pour la plupart d’entre nous de la programmation procédurale déguisée en programmation orientée objet.</p>
<p>Au lieu de faire communiquer ensemble des objets, nous manipulons des structures de données qui se font passer pour des objets, à grand renfort de conditions qui nous permettent de prendre des décisions en fonction des données contenues dans ces structures.</p>
<p>Et le plus paradoxal n’est pas que nous ne parvenions pas à utiliser le paradigme de la programmation orientée objet pour concevoir du code générique alors qu’il a été conçu pour cela.</p>
<p>Le plus paradoxal est que nous savons que nous ne l’utilisons pas correctement, que nous cherchons des solutions pour le faire, mais que ces solutions ne sont que des pis-aller et des recettes de cuisine.</p>
<p>Ainsi, nous dressons des catalogues de patrons de conception censés nous permettre de répondre correctement à la grande majorité des problématiques que nous rencontrons et nous créons des acronymes tels que <a href="https://en.wikipedia.org/wiki/SOLID">SOLID</a> pour évangéliser des bonnes pratiques censées nous permettre de comprendre ce qu’est un « bon » code objet, nous lançons des mouvements tels que le « if less programming » ou le « east oriented programming », nous répétons à l’envi qu’il faut privilégier la composition et restreindre fortement l’utilisation de l’héritage, nous expliquons ce qu’est l’encapsulation ou le polymorphisme, nous crachons sur les « getter/setter », etc.</p>
<p>Nous disons beaucoup… et nous faisons finalement peu (un peu comme pour le climat, d’ailleurs…).</p>
<p>Mais rarement nous cherchons à comprendre pourquoi il est nécessaire de faire tout cela, rarement nous cherchons à comprendre ce qu’est la programmation orientée objet, rarement nous remettons fondamentalement en cause nos pratiques et nos connaissances.</p>
<p>À décharge, il faut bien dire qu’il n’est pas simple pour un développeur de remettre en cause l’ensemble de ses connaissances, surtout lorsque tout le monde fait de même, et je suis bien placé pour le savoir, puisque je l’ai fait il y a 5 ans.</p>
<p>Or, ce n’est pas parce que tout le monde fait la même chose de la même façon que c’est forcément ce qu’il faut faire pour obtenir le meilleur résultat.</p>
<p>De plus, les langages de programmation « orientés objet » n’aident pas, car ils sont pour la plupart basés sur des habitudes de syntaxe et des algorithmes issus du paradigme procédural.</p>
<p>Pourtant, pour celui qui a le courage d’entreprendre cette démarche et qui prend le temps de le faire, il devient possible d’écrire du code générique naturellement, ainsi que les tests associés.</p>
<p>Car vous pouvez très bien remplacer le concept de code générique par celui des tests dans le billet de Damien sans en changer le sens fondamental.</p>
<p>En effet, si je résume son article en une phrase, elle pourrait être :</p>
<blockquote>Écrire du code générique, tout le monde voudrait le faire, mais ceux qui essayent ne savent pas le faire correctement, ce qui met la merde dans les projets, donc il ne faut pas écrire de code générique.</blockquote>
<p>Maintenant, est-ce que vous voyez une grosse différence avec cela :</p>
<blockquote>Écrire des tests, tout le monde voudrait le faire, mais ceux qui essayent ne savent pas le faire correctement, ce qui met la merde dans les projets, donc il ne faut pas écrire de tests.</blockquote>
<p>J’avoue caricaturer quelque peu, mais je trouve que c’est tout de même assez proche de la réalité.</p>
<p>Et c’est la raison pour laquelle aujourd’hui, les tests sont l’exception et non la règle dans la plupart des projets informatiques et que des propositions commerciales sont faites avec à peine 1 % du budget alloué aux tests (quand il y a un budget alloué pour eux), avec tout ce que cela implique en termes d’insatisfaction, aussi bien chez les développeurs que chez les clients !</p>
<p>Et l’un dans l’autre, c’est aussi pour cela que nous avons des applications très gourmandes en mémoire par rapport aux services qu’elles rendent ce qui provoque la rédaction de ce type de <a href="https://blog.romainfallet.fr/desenchantement-logiciel/">billet d’humeur</a>.</p>
<p>Alors la question est (un peu comme pour le climat, d’ailleurs…) : qu’allez-vous faire pour que cela change ?</p>
<p>Continuer à mal utiliser vos outils, ou bien faire en sorte de les utiliser correctement pour produire du code de qualité ?</p>http://blog.mageekbox.net/?post/2018/10/18/Et-si-nous-utilisions-mal-nos-outils-#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/505Soyez le changement que vous voulez voir dans le code !urn:md5:402e62ca0b7477df00ed7d0684874f282018-10-04T10:50:00+02:002018-10-04T10:50:00+02:00mageekguyRéfléxions<p>Chez <a href="https://www.norsys.fr">Norsys</a>, 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.</p>
<p>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.</p>
<p>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.</p>
<p>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 à :</p>
<blockquote>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 !</blockquote> <p>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 ? »</p>
<p>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.</p>
<p>Et je reçois et je comprends très bien ce message, car cela fait 18 ans que je vis cela.</p>
<p>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é.</p>
<p>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 !</p>
<p>Toujours plus forts, les développeurs plus expérimentés que je connais ont également ce ressenti !</p>
<p>Je pense donc qu’il est possible d’en conclure que le projet parfait n’existe pas !</p>
<p>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…</p>
<p>C’est effectivement une possibilité… mais ce n’est pas la seule.</p>
<p>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.</p>
<p>C’est peut-être même la pire des décisions possibles, car vous n’apportez aucune valeur…</p>
<p>Mais si au contraire vous suivez le conseil de <a href="https://fr.wikipedia.org/wiki/Mohandas_Karamchand_Gandhi">Gandhi</a> 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.</p>
<p>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 !</p>
<p>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 !</p>
<p>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).</p>
<p>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.</p>
<p>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.</p>
<p>En effet, comme l’a justement remarqué <a href="https://fr.wikipedia.org/wiki/Forrest_Gump">Forrest Gump</a>, 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.</p>
<p>Peut-être qu'à un moment, il faudra donc savoir être lucide et jeter l'éponge avant de faire un <a href="https://fr.wikipedia.org/wiki/Burnout">burnout</a> en allant travailler pour une entreprise qui correspond mieux à vos attentes.</p>
<p>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.</p>
<p>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.</p>
<p>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é.</p>
<p>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 <a href="https://meltdownattack.com">des problématiques au niveau du matériel</a>.</p>
<p>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.</p>
<p>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.</p>
<p>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).</p>
<p>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.</p>
<p>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 <a href="https://blog.romainfallet.fr/desenchantement-logiciel/">le sacrifice d’une bonne partie des ressources des ordinateurs d’aujourd’hui</a> pour être tenable.</p>
<p>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.</p>
<p>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.</p>
<p>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).</p>
<p>Alors, comme l’a dit encore un autre grand philosophe, <a href="https://twitter.com/Kaepernick7/status/1036695513251434498">JUST… DO… IT!</a></p>http://blog.mageekbox.net/?post/2018/10/04/Soyez-le-changement-que-vous-voulez-voir-dans-le-code-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/504À propos des mocksurn:md5:02c93fe7e1710fed0b2f3ef6dee279c82018-02-27T09:40:00+01:002018-02-27T09:45:39+01:00mageekguymocktest unitaire<p>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.</p>
<p>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, <a href="https://www.youtube.com/watch?v=nte-ZVBjlxc">j’y ai vu un réel intérêt</a>.</p>
<p>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.</p>
<p>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.</p>
<p>Pourquoi est-ce que je vous explique tout cela ?</p> <p>Depuis quelque temps, <a href="https://matthiasnoback.nl/2018/02/mocking-at-architectural-boundaries-persistence-and-time/">l’article de Matthias Noback</a> parlant de la dangerosité des bouchons apparaît régulièrement sur mon radar.</p>
<blockquote>
<p>Creating test doubles is a very dangerous activity - Matthias Noback</p>
</blockquote>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>Alors certes, avec des dépendances externes telles que l’<code>EntityManager</code> évoqué par Matthias dans son article, cette « philosophie » peut effectivement sembler peu pertinente et peut poser beaucoup de problèmes.</p>
<p>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).</p>
<p>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.</p>
<p>Et c’est d’ailleurs la solution proposée par Matthias pour résoudre son problème avec l’<code>EntityManager</code>…</p>
<p>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.</p>http://blog.mageekbox.net/?post/2018/02/27/a-propos-des-mocks#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/503Les outils sont-ils la solution à nos problèmes ?urn:md5:ab0f4f2f9b7a81509e5229b36fb7be752018-01-08T20:06:00+01:002018-01-08T20:16:59+01:00mageekguyRéfléxions<p><a href="https://medium.com/@ptitfred/haskell-and-fp-a83b5b22f67f">Frédéric Menou</a> a écrit un très bon article à propos de la <a href="https://fr.wikipedia.org/wiki/Programmation_fonctionnelle">programmation fonctionnel</a> et <a href="https://fr.wikipedia.org/wiki/Haskell">d’Haskell</a>, dans lequel il décrit notamment les raisons qui l’ont amené à apprendre ce paradigme et ce langage.</p>
<p>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.</p>
<p>Par contre, je connais relativement bien la problématique qui l’a mené vers cette solution, car j’ai rencontré exactement la même.</p>
<p>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.</p> <p>Or, cela fait au moins maintenant presque 12 ans que je cherche à atteindre le même objectif.</p>
<p>De plus, j’ai commencé à développer de la même façon que Frédéric, en me consacrant sur les algorithmes et l’aspect technique, en renforçant ma maîtrise de PHP et des outils afférents grâce à une veille technologique quotidienne.</p>
<p>Notre parcours concernant les éditeurs de code a également été très similaire.</p>
<p>Pourtant, malgré une problématique similaire, nous sommes parvenus à des solutions très différentes.</p>
<p>Frédéric a remis en cause ses outils et en a sélectionné d’autres qui lui semblent plus adaptés pour atteindre son objectif.</p>
<p>De mon côté, au lieu de remettre en cause mes outils, j’ai choisi de me remettre en cause et de mieux comprendre les principes fondamentaux du paradigme que j’utilise, ce qui m’a amené à faire évoluer très fortement mes méthodes de développement.</p>
<p>À mon avis, celui qui peut dire lequel de nous deux a la meilleure stratégie pour atteindre son objectif n’est pas encore né, et je n’en ai donc pas la prétention, mais son billet m’a tout de même inspiré une réflexion que j’aimerai maintenant vous faire partager.</p>
<p>L’être humain a une tendance naturelle à incriminer ses outils lorsqu’il ne parvient pas à réaliser correctement quelque chose.</p>
<p>C’est un fait, et c’est bien normal, puisqu’il est bien plus simple et agréable pour nous de remettre en cause l’outillage que de se remettre en cause.</p>
<p>Donc, lorsqu’il est en situation d’échec, l’Homme adopte principalement deux stratégies.</p>
<p>La première consiste à changer d’outils, la seconde à les modifier dans l’espoir qu’une fois « améliorés », ils permettront de réussir.</p>
<p>Et parfois (et j’insiste sur ce « parfois »), je pense que cela a des effets très pervers, et je vais donner trois exemples, certes très caricaturaux, mais qui sont également à mes yeux très représentatifs.</p>
<p>Autrefois, dans des temps fort fort lointains, le développeur devait gérer lui-même la mémoire utilisée pour son programme, ce qui parfois, provoquait des erreurs de segmentations.</p>
<p>Une couche de complexité a donc été ajoutée aux langages informatiques afin de décharger les développeurs de cette tâche et ainsi éviter ces erreurs, et aujourd’hui, ils n'ont plus à se soucier de la mémoire vive, ou de quoi que ce soit d’autre relatifs au matériel sur lequel sera exécuté le code, d’ailleurs.</p>
<p>Mais qui, aujourd’hui, connait encore le fonctionnement de la mémoire vive d’un ordinateur ?</p>
<p>Pour ce que je peux en constater, il n’y a plus que les vieux barbus et les spécialistes de l’embarqué qui possèdent encore cette connaissance, alors qu’il s’agit de l’une des bases de la technologie sur laquelle repose le métier de développeur.</p>
<p>De plus, si autrefois, il pouvait y avoir des erreurs de segmentations, en contrepartie, la mémoire était généralement gérée aux petits oignons, car il s’agissait en plus d’une ressource comptée qu’il ne fallait pas gaspiller.</p>
<p>Mais aujourd’hui, il suffit qu’un onglet inactif dans un navigateur ne consomme pas plus de 80 Mo pour que nous soyons heureux…</p>
<p>Le quotidien du développeur a donc été « amélioré » grâce à une évolution de ses outils, mais en contrepartie, il a perdu de la connaissance et les programmes ont perdu en efficacité.</p>
<p>Quant à la stratégie du changement total d’outil pour palier à une défaillance, l’une des plus belles illustrations est justement la démarche décrite par Frédéric dans son billet (ce qui ne veut pas dire que je pense qu’il a fait une erreur, encore une fois, son billet n’a été qu’une source d’inspiration pour écrire celui-ci).</p>
<p>Nombre de développeurs passent en effet de la programmation orientée objet vers la programmation fonctionnelle, car ils pensent qu’elle est plus apte à répondre à leurs besoins, sans se poser de question par rapport à leur pratique et à leur compréhension de la programmation orientée objet.</p>
<p>Or, pour la plupart, ils pratiquent cette dernière sous une forme « diminuée » qui ne leur permet pas d’en tirer la quintessence.</p>
<p>Et le monde du logiciel n’est pas le seul à être concerné, celui du matériel l’est tout autant.</p>
<p>Les bases de l’architecture x86 ont été posées par Intel à la fin des années 1970, mais pour autant, elle est toujours massivement utilisée aujourd’hui.</p>
<p>Pourtant, je connais assez peu de personnes compétentes dans le domaine qui pense que cette architecture est la panacée.</p>
<p>Mais il faut dire qu’Intel a tout fait pour contrebalancer cela par une évolution à marche forcée des performances, en ajoutant de la complexité couche après couche afin de respecter la <a href="https://fr.wikipedia.org/wiki/Loi_de_Moore">loi de Moore</a>.</p>
<p>Et aujourd’hui, nous faisons face à <a href="https://meltdownattack.com">Meltdown et Spectre</a>, et l’avenir ne semble <a href="https://www.blackhat.com/docs/us-17/thursday/us-17-Domas-Breaking-The-x86-ISA.pdf">pas radieux</a>.</p>
<p>Et comme tous les fondeurs sont pris dans la course à la performance sous la pression du marché, les concurrents d’Intel ont fait de même en utilisant les mêmes concepts, ce qui fait qu’aujourd’hui, la <a href="https://twitter.com/ochsff/status/949840209553887232">quasi-totalité des CPU</a> actuellement en <a href="https://twitter.com/Blips_and_Chitz/status/949979576087797760">activité</a> est plus ou moins vulnérable à ces attaques d’un nouveau genre (même si elles ne semblent pas <a href="https://randomascii.wordpress.com/2018/01/07/finding-a-cpu-design-bug-in-the-xbox-360/">si nouvelles que cela</a>).</p>
<p>D’ailleurs, j’aime beaucoup ce commentaire de <a href="https://lkml.org/lkml/2018/1/3/797">Linus Torvald</a> à ce sujet :</p>
<blockquote>
<p>I think somebody inside of Intel needs to really take a long hard look at their CPU’s, and actually admit that they have issues instead of writing PR blurbs that say that everything works as designed.</p>
</blockquote>
<p>Plutôt que de repartir à la table à dessin et se creuser la tête, Intel a en effet préféré spéculer le plus longtemps possible sur l’architecture x86 en la faisant évoluer aux forceps pour pallier ses défaillances grâce à une augmentation vertigineuse des performances, sans jamais en remettre en cause la philosophie et les fondamentaux.</p>
<p>Pour conclure, il peut être sain de changer d’outils ou de les rendre plus complexes afin de se simplifier la vie, mais il ne faut surtout pas oublier qu’il y a toujours un prix à payer, et par conséquent, il ne faut surtout pas penser qu’un tel changement vous permettra systématiquement d’atteindre votre objectif plus vite ou plus efficacement.</p>
<p>Le chemin que vous aurez à parcourir pourra en être simplifié, mais il pourra également vous emmener vers un précipice, une voie de garage, ou bien encore vous faire faire bien des détours tortueux et dangereux.</p>
<p>Pour preuve, malgré la simplicité apparente de son exemple pour illustrer le typage algébrique, malgré les fonctionnalités d’Haskell qui sont censées lui permettre d’esquiver les bugs, Frédéric a <a href="https://twitter.com/clementd/status/950270642418601984">introduit un bug</a> dans le code présent dans son billet…</p>
<p>Alors parfois, faire preuve d’humilité, d’honnêteté, en remettant en question ses pratiques afin de repartir sur des bases plus saines peut valoir le coût, plutôt que de déléguer à des outils la charge de nous rendre meilleurs, ce qui leur est impossible par nature.</p>
<p>La solution est rarement dans les outils, mais l’Homme est toujours à l’origine des problèmes.</p>http://blog.mageekbox.net/?post/2018/01/08/Les-outils-sont-ils-la-solution-a-nos-problemes#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/502Je serais au forum PHP 2017 !urn:md5:901b43f5fc45a53ed076e0fe77d278882017-10-25T10:00:00+02:002017-10-25T10:00:00+02:00mageekguy<p>Grâce à <a href="http://www.norsys.fr">Norsys</a>, je serais une nouvelle fois au <a href="https://event.afup.org/forumphp2017/programme/">forum PHP</a> qui débutera demain, et en compagnie de 6 collègues.</p>
<p>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.</p>
<p>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.</p> <p>Sauf modification de dernière minute de l’organisation, je débuterais donc par « PHP 7.2 », présenté par <a href="https://event.afup.org/forumphp2017-interview-remi-collet/">Remi Collet</a>.</p>
<p>Outre le fait que le sujet m’intéresse par nature, j’adore écouter Remi en conférence, car il a l’habitude de donner les petits détails qui font toute la différence, et en tant que « release master » de PHP 7.2, je me dis qu’il en a plein son chapeau (rouge).</p>
<p>Je poursuivrais avec « Écrire des tests pour le long terme », car mon expérience de consultant et de formateur me permet de dire qu’il s’agit d’une problématique récurrente au sein des équipes de développement.</p>
<p>S’il y a une dette technique pour le code, il en existe également une pour les tests.</p>
<p>Je suis donc très pressée de connaître les recommandations de <a href="https://event.afup.org/forumphp2017-en-direct-des-speakers-charles-desneuf/">Charles</a> à ce sujet et de les comparer avec mon expérience personnelle.</p>
<p>La conférence « L’art subtil du nommage » m’a semblé un bon choix pour embrayer.</p>
<p>S’il y a bien une chose que mon voyage vers l’est m’a apprise, c’est que le nommage est décidément tout sauf facile dans un contexte ou l’abstraction est censée régner en maître, car comment nommer une chose dont on n’est censé ne rien connaître ? C’est presque aussi difficile que de choisir un prénom pour son enfant…</p>
<p>Je doute fortement que la conférence de <a href="https://event.afup.org/forumphp2017-interview-julien-janvier/">Julien Janvier</a> m’apporte des solutions clef en main pour mon contexte particulier, mais je suppose que ses réflexions sur le sujet pourront m’aider à voir la lumière dans mon cas.</p>
<p>Mon choix suivant, « Maison du Monde et l’architecture orientée service », n’a pas été guidé par la technique, mais par l’affect.</p>
<p>J’ai en effet rencontré il y a presque trois ans <a href="https://event.afup.org/forumphp2017-interview-marc-hugon/">Marc Hugon</a> dans le cadre d’un entretien professionnel, et j’avoue être curieux de connaître l’évolution technique qu’il a impulsée depuis.</p>
<p>La conférence « Développeur et protection de la vie privée » est quasiment en lien direct avec mon « lightning talk », et j’en ai eu de plus de très bons échos à la suite de Paris Web 2017.</p>
<p>Il aurait donc été déraisonnable de ma part de ne pas suivre la conférence d’<a href="https://event.afup.org/forumphp2017-interview-erwan-richard/">Erwan Richard</a>.</p>
<p>La gestion du code dit « legacy » est une épine dans le pied de toute équipe de développement qui a un peu de bouteille ou qui doit prendre le relai d’une autre équipe.</p>
<p>Pour être honnête, chez <a href="http://www.norsys.fr">Norsys</a>, c’est même quasiment une problématique constante, et si nous avons des solutions pour la gérer au mieux, je pense que nous ne sommes jamais suffisamment armés pour l’affronter.</p>
<p>Je suis donc très intéressé par les stratégies que va nous exposer <a href="https://event.afup.org/forumphp2017/speakers/#1749">Anna</a>, d’autant qu’elle a une grande expérience sur le sujet.</p>
<p>Mon choix de suivre « Les interfaces, l’ADN de votre application » a une nouvelle fois été guidé par mon voyage vers l’est.</p>
<p>En effet, au cours de mes pérégrinations, j’ai (enfin) compris le rôle des interfaces et leur puissance.</p>
<p>J’ai donc hâte de confronter mon point de vue à celui de <a href="https://event.afup.org/forumphp2017-interview-sebastien-lavenant/">Sébastien Lavenant</a>.</p>
<p>À contrario, j’ai choisi de suivre « GRAPHQL, l’avenir du REST ? » (notez bien le point d’interrogation…) pour des raisons purement techniques.</p>
<p>Je ne connais rien à GRAPHQL, si ce n’est qu’il est en rapport avec le format JSON.</p>
<p>Or, <a href="https://event.afup.org/forumphp2017-interview-francois-zaninotto/">François</a> a le don d’aborder ses sujets sous un angle différent et d’apporter un éclairage critique parfois surprenant, souvent inhabituel, mais toujours intéressant.</p>
<p>Et en prime, c’est un orateur exceptionnel qui assure le show, ce qui ne gâche rien (oui, François, je te mets la pression).</p>
<p>Faut-il faire du travail de qualité ? En lisant le titre de cette conférence, j’avoue m’être dit que si quelqu’un se pose cette question, il faut qu’il arrête immédiatement ce qu’il fait, car faire de la merde n’apporte rien.</p>
<p>Mais étant donné que c’est <a href="https://event.afup.org/forumphp2017-interview-jean-francois-lepine/">Jean-François</a> qui pose cette question, je me dit que la réponse peut être intéressante et j’ai donc bien l’intention d’être présent dans la salle afin d’écouter ce qu’il a à raconter sur le sujet.</p>
<p>Et enfin, je terminerai par « Le langage objet passé, présent, futur ».</p>
<p>Encore un choix induit par mon voyage vers l’est, me direz-vous, et vous aurez raison.</p>
<p>Je ne peux rester insensible à la description de cette conférence qui rappelle <a href="https://www.youtube.com/watch?v=W7KMyzexK-M">celle que j’ai donné à plusieurs reprises</a> il y a maintenant deux ans.</p>
<p>J’avoue être très curieux d’entendre <a href="https://event.afup.org/forumphp2017-interview-sophie-beaupuis/">Sophie</a>, avec son style direct et percutant !</p>
<p>Je ne vais donc pas chômer, mais comme d’habitude, vous pourrez me croiser en train de prendre un café (le café, c’est la vie, comme ne <a href="https://blog.pascal-martin.fr/post/developpeur-survecu-deux-semaines-sans-cafe.html">l’assume pas Pascal Martin</a> ;)) ou bien posé dans un coin avec mon MacBook sur les genoux.</p>
<p>Alors, si vous voulez bavarder, en savoir plus sur ce que veut dire travailler pour <a href="http://www.norsys.fr">Norsys</a>, ou bien parler de programmation orientée objet, de tests, de <a href="https://github.com/norsys/rothenberg">Rothenberg</a>, du RGPD ou de tout autre sujet, n’hésitez pas, quoi que vous ayez pu entendre à mon sujet, je ne mords pas (enfin… pas trop fort) !</p>http://blog.mageekbox.net/?post/2017/10/25/Je-serais-au-forum-PHP-2017-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/501Combien de temps pour préparer une conférence (ou peindre la Joconde) ?urn:md5:56edd0cd2a3032721638bc926d9353bb2017-03-06T15:34:00+01:002017-03-06T15:39:27+01:00mageekguyConférences<p>J’ai écrit ce billet à la suite d’une demande de <a href="https://twitter.com/pascal_martin/status/838737679042899970">Pascal</a> et de la discussion qui s'en est suivie avec <a href="https://twitter.com/edasfr/status/838745089581121537">Éric</a>.</p>
<p>Je fais des conférences depuis plus de 10 ans.</p>
<p>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.</p>
<p>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 :</p>
<ol>
<li>La création du plan ;</li>
<li>La création des diapositives correspondantes avec en commentaire le texte correspondant qui sera utilisé pour la mise en ligne de la conférence ;</li>
<li>La recherche des éléments multimédia permettant de transporter le plus rapidement possible l’idée ;</li>
<li>Les répétitions.</li>
</ol>
<p>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.</p> <p>De plus, je peux pivoter plusieurs fois au cours de la phase de formalisation en fonction de mon ressenti ou du feedback que j’ai pu recevoir lorsque j’ai parlé de la façon dont je comptais m’y prendre à des tiers.</p>
<p>Enfin, je choisi toujours de parler de mon vécu, ce qui me permet d’être plus efficace puisque je maîtrise déjà en grande partie mon sujet.</p>
<p>Je pense que si je devais parler d’un sujet que je ne connais absolument pas, mon temps de préparation deviendrait complètement déraisonnable, mais je n’ai aucun moyen d’en être certain.</p>
<p>La création d’une conférence est en effet un processus créatif, et en tant que tel, indépendamment du sujet choisi, il est à mon avis quasiment impossible d’estimer le temps nécessaire à sa réalisation, impossible de définir une masse de travail valable pour tout le monde, et même impossible de déterminer la fin de ce processus.</p>
<p>Cette activité me demande beaucoup de temps, mais cela ne veut pas dire qu’il en est de même pour quelqu’un qui aura un style différent, une plus grande facilité à parler en public, un niveau d’exigence différent ou bien encore un accès à des ressources visuelles ou sonores plus pertinentes.</p>
<p>Je connais par exemple un conférencier qui est capable de faire une prestation très correcte avec moins de 4 h de préparation la nuit précédant sa conférence, avec pour seule source d’inspiration une bibliothèque de GIF de plusieurs gigaoctets et quelques verres d’alcool…</p>
<p>Par contre, je suis certain d’une chose : la préparation d’une bonne conférence demandera toujours à son auteur un minimum de travail, quelles que soient ses capacités !</p>http://blog.mageekbox.net/?post/2017/03/06/Combien-de-temps-pour-pr%C3%A9parer-une-conf%C3%A9rence-%28ou-peindre-la-Joconde%29-#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/500Nous ne sommes pas que du codeurn:md5:ac91f4c1b6ff84e3a9b3d45779d3019f2016-12-16T16:10:00+01:002017-03-06T15:52:10+01:00mageekguy<p>Dois-je faire du libre, avoir un compte sur <i>Github</i> 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é ?</p>
<p>Celui qui pose implicitement <a href="https://www.linkedin.com/pulse/i-have-side-code-projects-show-you-ezekiel-buchheit">cette question</a> est Ezekiel Buchheit, et il est <i>Software Dev Engineer II</i>, d’après son compte <a href="https://www.linkedin.com/in/ezekiel-buchheit-2082b062">linkedin</a>.</p>
<p>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.</p>
<p>Et je ne sais pas ce que cette question provoque comme réaction chez vous, mais dans mon cas, son existence me fait peur.</p>
<p>Pourquoi ?</p> <p>Parce qu’elle renvoie à des valeurs d’un autre temps qui ont mené à des choses vraiment pas jolies que j’aimerais que mes enfants n’aient pas l’occasion de vivre.</p>
<p>Elle rend en effet tangible le fait que certains pensent que pour être reconnu en tant que développeur « de qualité », il faut faire partie d’un cercle dont on partage les valeurs, les us et les coutumes.</p>
<p>Il faut penser en code binaire.</p>
<p>Il faut être blanc.</p>
<p>Il faut avoir un compte sur <i>Github</i>.</p>
<p>Il faut adhérer à un parti.</p>
<p>Il faut suivre les valeurs du libre.</p>
<p>Il faut suivre une idéologie.</p>
<p>Il faut penser que tout ce qui ne rentre pas dans le cadre ne vaut rien.</p>
<p>Il faut penser que tout ce qui est différent n’est pas un être humain.</p>
<p>Vous voyez le point ?</p>
<p>Oui, le point n’est pas très loin de s’appeler <i>Godwin</i>, oui, je force le trait, oui, je vais m’attirer les foudres d’une <s>fange</s> frange de l’Humanité qui n’est pas la plus bienveillante et la plus agréable à côtoyer.</p>
<p>Parce que fondamentalement, c’est ce que les plus timorés appellent de la <i>discrimination</i> et que j’appelle du racisme.</p>
<p>Le fait qu’une personne ait un compte sur <i>Github</i>, fasse du logiciel libre et passe son temps libre à coder dans le dernier langage à la mode ne fait pas automatiquement d’elle un bon développeur, tout comme le fait qu’elle n’ait pas de compte et utilise autrement son temps libre ne fait pas d’elle un mauvais développeur.</p>
<p>Le fait qu’une personne ne soit pas du même sexe, d’une couleur de peau différente ou bien ait une culture ou une religion différente ne fait pas d’elle une chose différente d’un être humain, tout comme le fait d’être un homme blanc, né en France et chrétien ne rend personne meilleur qu’un autre être humain.</p>
<p>Certes, participer à des projets libres et diffuser du code permet d’apprendre et de se confronter aux autres, et cela peut être effectivement perçu par un recruteur comme un gage du fait que la personne s’investit pleinement dans le développement et a un certain état d’esprit, ce qui peut être un atout pour l’entreprise en fonction de son contexte et de ses objectifs.</p>
<p>Mais de là à penser que celui qui ne le fait pas et préfère passer du temps avec sa famille ou prendre des cours de calligraphie n’a rien à apporter de significatif, il y a un monde que je me refuse à franchir.</p>
<blockquote>Si je n’avais pas suivi ce cours de calligraphie, le Mac n’aurait jamais eu autant de polices d’écriture et des polices à espacement proportionnel.<br />
— Steve Jobs, 2005.</blockquote>
<p>Le code et l’adhésion à la culture du libre ou à la mode du moment parmi les développeurs sont des indicateurs parmi d’autres qui permettent de comprendre le développeur, il ne le résume pas et ne permettent en aucune façon de préjuger de ses compétences et de ce qu’il peut apporter, tout comme notre physique, notre culture et notre religion ne résument pas ce que nous sommes en tant qu’individu et ne permet en aucune façon de préjuger du fait que nous avons le droit de vivre… ou de mourir.</p>
<p>Pour nos enfants, ne l’oublions pas.</p>http://blog.mageekbox.net/?post/2016/12/16/0101011101100101001001110111001001100101001000000110111001101111011101000010000001100011011011110110010001100101#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/499Rencontre d’un troisième typeurn:md5:f6c3f8f89e67048c5c21b0be3df15ec52016-11-22T12:28:00+01:002016-11-22T13:26:40+01:00mageekguy<p>Lorsque j’ai dit dans <a href="http://forumphp2016.mageekbox.net">ma conférence au dernier forum PHP</a> que nos rencontres nous rendent unique, c’est parce que j’en suis persuadé, car je l’ai vécu.</p>
<p>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.</p>
<p>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.</p>
<p>J’ai pu les croiser quotidiennement des années durant… ou bien une seule et unique fois, pendant quelques minutes.</p>
<p>Elles s’appellent Christophe, Élodie, Yannick, Jean-Marc, Fabien, Julien, François… ou Philippe.</p> <p>Philippe fait parti de ceux que je n'ai rencontré qu’une seule et unique fois, pendant 3 ou 4 heures, en 1990 ou 1991 (j’étais encore au collège) et j’ai dû lui parler en tête à tête à peine15 minutes au total dans le cadre d’une exposition en son honneur organisé par la médiathèque de Sedan.</p>
<p>Depuis, nous n’avons plus été en contact.</p>
<p>Lorsque je suis arrivé à la bibliothèque, lui n’était pas encore là, et pour passer le temps en l’attendant, j’ai pris une feuille A2, un crayon, une bande dessinée sur une table, choisis une image parmi ses pages, et j’ai commencé à la reproduire à l’échelle.</p>
<figure style="margin: 0 auto; display: table;"><img alt="32.jpg" class="media" src="http://blog.mageekbox.net/public/32.jpg" />
<figcaption>Page 32 de Urm le fou.</figcaption>
</figure>
<p>Et je suis entré dans ma zone, la même que celle dans laquelle je m’immerge lorsque je code, celle dans laquelle plus rien n’existe à part la tâche présente, celle ou toute mon attention est uniquement focalisé sur ce que je suis en train de faire, ou le monde n’existe plus, ou plus rien ne peut m’atteindre…</p>
<p>Si je m’en souviens si bien, c’est parce que malgré le fait que je sois parti très loin, à un moment, une forme sombre dans mon dos m’a fait sortir violemment de ma bulle en me disant qu’elle n’avait pas du tout réalisé cette planche de la même façon que moi, mais que c’était très intéressant et qu’elle était curieuse de voir ce que cela allait donner une fois terminé.</p>
<p>Cette forme sombre, c’était Philippe, et s’il s’est permis de me dire cela, c’est parce que son nom complet est <a href="https://fr.wikipedia.org/wiki/Philippe_Druillet">Philippe Druillet</a> , qu’il est l’un des papes de la bande dessinée à la française, et que j’étais en train de plagier son œuvre.</p>
<figure style="margin: 0 auto; display: table;"><img alt="Philippe_Druillet.jpg" class="media" src="http://blog.mageekbox.net/public/Philippe_Druillet.jpg" />
<figcaption>Philippe Druillet</figcaption>
</figure>
<p>Sous le choc, je n’ai rien dit, et je n’ai même rien dit durant tous l’après-midi, même si je l’ai beaucoup écouté tandis qu’il discutait avec d’autres personnes.</p>
<p>J’ai continué à tracer mes traits, concentré sur la reproduction de la myriade de détails qu’il avait inclus dans son dessin (son obsession du détail ne vaut pas celle de Franquin, mais elle est tout de même relativement impressionnante).</p>
<p>L’heure de la fermeture arrivée, il est revenu vers moi, a regardé mon dessin et a dit à la cantonade :</p>
<blockquote>Tu es doué, je suis incapable de faire ce que tu viens de faire de la façon dont tu viens de le faire, mais si tu veux gagner ta vie, ne deviens pas dessinateur.</blockquote>
<p>Nous avons ensuite discuté pendant quelques minutes, car j’ai voulu comprendre la raison pour laquelle il m’avait dit cela, d’autant qu’à l’époque, je n’avais pas totalement renoncé à l’idée de devenir ce qu’il me déconseillait.</p>
<p>Et j’ai compris.</p>
<p>Et j’ai renoncé à faire du dessin mon métier, parce que j’avais une alternative qui me plaisait tout autant, à savoir l’informatique.</p>
<p>Est-ce que j’ai bien fait d’écouter Philippe ? Je ne le saurais jamais, et de toute façon la réponse à cette question ne m’intéresse pas, parce que grâce à lui, j’ai un métier qui me passionne et qui me permet de gagner correctement ma vie, et c’est malheureusement aujourd’hui un luxe.</p>
<p>Si je ne l’avais pas rencontré, je serais très probablement aujourd’hui quelqu’un de très différent, car il a donné l’impulsion définitive qui a fait de moi un développeur avec une vocation artistique, ce qui m’a bien servi à de nombreuses reprises.</p>
<p>Et si je vous parle aujourd’hui de lui, c’est parce que je viens de lire son interview dans <a href="http://www.lesinrocks.com/2016/11/22/livres/bd/philippe-druillet-dommage-hommes-politiques-ne-lisent-de-science-fiction-11881638/">les Inrocks</a> et que par ricochet, je me suis dit que cette histoire était parfaite pour illustrer l’une des idées de <a href="http://forumphp2016.mageekbox.net">ma conférence</a>, à savoir que nous sommes uniques en partie grâce aux gens que nous rencontrons, pour le pire et pour le meilleur !</p>http://blog.mageekbox.net/?post/2016/11/22/Rencontre-d%E2%80%99un-troisi%C3%A8me-type#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/498À propos du forum PHP 2016urn:md5:775ce0f873e69a871d57a96de1ceeaee2016-11-18T10:06:00+01:002016-11-18T10:13:19+01:00mageekguyPHPconférencesforum PHPPHP <p>J’ai participé une fois encore au <a href="http://event.afup.org/forum-php-2016/programme/">forum PHP</a> cette année.</p>
<p>Cependant, cette édition a eu pour moi une saveur particulière, pour plusieurs raisons.</p>
<p>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.</p>
<p>Je suis en effet arrivé le jeudi soir très tardivement, et je suis reparti le vendredi comme un voleur à peine une heure après avoir donné <a href="http://forumphp2016.mageekbox.net">ma conférence</a>.</p>
<p>Je n’ai donc pu assister qu’à la prestation de <a href="http://event.afup.org/forum-php-2016/programme/#1908">Patrik Karisch</a> , et de plus, malgré l’intérêt de son sujet, j’ai passé l’essentiel de mon temps à peaufiner et à répéter ma propre conférence.</p>
<p>Je n’ai donc pas participé au repas des conférenciers et mes échanges avec les participants ont été très réduits, alors que j’affectionne particulièrement ces moments pour leur richesse humaine et technique.</p>
<p>Cependant, ce forum a également été l’occasion d’apprendre une naissance et de retrouver <a href="https://fr.wikipedia.org/wiki/IRL">IRL</a> pendant quelques minutes d’anciens collègues et amis que je n’avais pas vus depuis longtemps, ce qui m’a fait très plaisir.</p>
<p>J’ai également beaucoup apprécié la discussion que j’ai eue avec <a href="http://alexandrebalmes.fr">Alexandre BALMES</a>, <a href="https://github.com/jubianchi">Julien</a>, <a href="https://github.com/Hywan">Ivan</a> et <a href="http://mnapoli.fr">Matthieu</a> dans le salon de l’hôtel des conférenciers à propos d’Apple et de <a href="http://blog.mageekbox.net/?post/2016/11/16/À-propos-de-l’USB-C-des-nouveaux-MacBook-Pro">ses nouveaux MacBook Pro</a>, malgré la fatigue du voyage.</p>
<p>Enfin, j’ai eu <a href="https://twitter.com/fredbouchery">d’excellent retour</a> à propos de ma conférence, alors que son sujet n’était absolument pas technique et que j’ai pris un plaisir phénoménal à la préparer et à la donner.</p>
<p>Le forum a également été l’occasion d’apprendre que l’antenne lyonnaise de l’AFUP avait mise en place <a href="http://lyon.afup.org/cfp/">un programme d’accompagnement pour les conférenciers néophytes</a>, ce qui allait parfaitement avec ma thématique.</p>
<p>J’ai donc atteint mon objectif, et comme la tradition a été respectée puisque l’organisation de <a href="http://afup.org/pages/site/">l’AFUP</a> était impeccable et que j’ai fait un selfie avec <a href="https://twitter.com/fredbouchery">Fred</a>, finalement, tout était presque parfait !</p>
<p>Prochaine étape de ma vie de conférencier, répondre au <a href="http://afup.org/event/phptournantes2017">CFP du PHP Tour 2017</a>, et j’espère que vous allez en faire de même !</p>http://blog.mageekbox.net/?post/2016/11/18/%C3%80-propos-du-forum-PHP-2016#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/497À propos de l’USB-C des nouveaux MacBook Prourn:md5:948e36eabee30445e9ebe34b8092d7bf2016-11-16T12:39:00+01:002016-11-18T10:13:05+01:00mageekguyRéfléxionsApple<p>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.</p>
<p>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.</p>
<p>Lorsqu’est sorti l’iMac sans lecteur de disquette, je me suis dit qu’Apple était devenue folle.</p>
<p>Lorsqu’est sorti le premier iPod, je me suis dit qu’Apple était devenue folle.</p>
<p>Lorsqu’est sorti le MacBook sans lecteur optique, je me suis dit qu’Apple était devenue folle.</p>
<p>Lorsqu’est sorti le premier iPhone, je me suis dit qu’Apple était devenue folle.</p>
<p>Lorsqu’est sortie la première version du MacBook Air sans port Ethernet, je me suis dit qu’Apple était devenue folle.</p>
<p>Lorsqu’est sorti l’iPhone 7 sans port « jack », je me suis dit qu’Apple était devenue folle.</p>
<p>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.</p> <p>Lorsque j’ai acheté la seconde version du MacBook Air, j’ai acheté en même temps une polyméagachié d’adaptateurs qui m’ont couté un rein, et dans les faits, je ne me suis servi que de l’adapteur VGA lors de mes conférences, et je l’utilise encore avec mon MacBook Pro actuel (donc autant dire qu’en six ans, il est largement rentabilisé).</p>
<p>Les autres adapteurs sont restés au fond de mon sac, à part l’adaptateur Ethernet que j’ai utilisé très occasionnellement lorsque j’étais en présence d’un réseau Wi-Fi de qualité déplorable et lorsque l’alternative filaire était disponible, donc dans un contexte qui est largement plus l’exception que la règle.</p>
<p>En investissant dans ces adaptateurs, j’ai donc anticipé des besoins totalement imaginaires, car j’ai oublié que notre société évolue en fonction de nos besoins.</p>
<p>Nos pratiques et nos infrastructures s’adaptent en effet en permanence à nos façons de vivre et de travailler, parfois sans que l’on s’en rende compte, parfois dans la douleur.</p>
<p>Il y a 5 ans, les Wi-Fi ouverts étaient loin d’être aussi répandus qu’aujourd’hui.</p>
<p>Il y a 10 ans, avoir Internet dans sa poche et pouvoir s’y connecter sans aucun câble dans le train n’était même pas un rêve dans la tête des geeks.</p>
<p>Il y a 15 ans, les clefs USB étaient l’exception plutôt que la règle et le Bluetooth n’existait pas.</p>
<p>Il y a 20 ans, avoir 128 Mo de RAM ou disposer d’un ordinateur (trans) portable avec une autonomie de plus de deux heures était inconcevable.</p>
<p>Il y a 30 ans, 80 Mo de stockage de masse représentait le nirvana, et personne ne pensait pouvoir avoir son ordinateur partout et en permanence avec lui.</p>
<p>Il y a 40 ans, l’idée d’Internet même n’existait pas, et je ne parle même pas des disques externes, du HDMI, du Thunderbolt ou des cartes SD.</p>
<p>Alors, je sais que je ne suis pas représentatif de l’ensemble des utilisateurs de MacBook Pro, ce que la plupart des mécontents ont d’ailleurs souvent tendance à oublier, mais par contre, je sais que nous allons évoluer, et que nous allons le faire dans le sens ou nous pousse Apple, car c’est naturel.</p>
<p>Les choses naissent, vivent, évoluent, puis meurent, et sont remplacées par d’autres, plus efficaces, plus pratiques, plus efficientes, plus écologiques, plus simples, plus esthétiques, plus… bref, vous avez compris.</p>
<p>Mais pour Apple, nous évoluons trop lentement.</p>
<blockquote>La toute première motivation de Steve a toujours été une volonté réelle de faire de grandes choses pour l’humanité, et cette philosophie reste à la fois notre idéal et notre objectif dans notre façon d’appréhender l’avenir pour Apple — Johnny Ive</blockquote>
<p>Pour pouvoir aller dans la direction où elle le souhaite, pour pouvoir « rendre le monde meilleur », elle a besoin que le port Jack disparaisse et que le port de demain, à savoir l’USB-C, soit le port d’aujourd’hui le plus rapidement possible.</p>
<p>Alors elle pousse, fort, très fort, avec toute la puissance de sa marque, pour entrainer dans son sillage l’ensemble de l’industrie, pour que sa vision devienne de fait celle de tous les acteurs technologiques, pour le pire et pour le meilleur.</p>
<p>En conséquence, si Apple vend très cher ses adaptateurs, peut-être n’est-ce pas (uniquement) pour augmenter ses bénéfices, mais pour nous dissuader de les acheter et ainsi obliger l’industrie et ses clients à s’adapter plus vite.</p>
<p>Et si Apple vend sa rallonge pour câble d’alimentation 25 €, peut-être n’est-ce pas (uniquement) pour augmenter ses bénéfices et parce qu’elle dispose aujourd’hui de la technologie permettant à ses ordinateurs de passer la journée loin d’une prise électrique, mais pour réduire de quelques centaines de grammes le poids de chaque boite et réduire d’autant l’impact écologique du transport (à la vue du volume des ventes, cela représente quelques milliers de tonnes par an qui ne sont pas à transporter).</p>
<p>Aujourd’hui, plus aucun ordinateur n’est vendu avec un lecteur de disquette, tous les téléphones tactiles sont un pastiche des concepts de l’iPhone, les clefs USB font 1 To, et les constructeurs de PC font leur possible pour que leurs produits ressemblent le plus possible aux produits Apple, à tel point qu’il devient parfois difficile de faire la différence entre <a href="https://youtu.be/BzMLA8YIgG0">leurs produits et leur marketing</a> et ce que fait Apple.</p>
<p>Et la marque à la pomme sait très bien qu’elle a cet impact sur l’industrie informatique en général, tout comme elle sait très bien qu’elle représente des millions d’utilisateurs de par le monde.</p>
<p>Et je pense qu’elle se sert de ce levier colossal pour accélérer l’évolution du marché, pour pouvoir atteindre son objectif plus rapidement.</p>
<p>Cette stratégie qui consiste à faire les choix qu’elle pense indispensables pour atteindre ses objectifs le plus rapidement possible n’est pas nouvelle.</p>
<p>Elle faisait partie intégrante de son ADN lorsque Steve était aux commandes, lorsqu’il ne l’a plus été, lorsqu’il y est revenu, et cela y est encore aujourd’hui malgré sa disparition.</p>
<p>Pour autant, est-ce que la communication d’Apple est bonne ? Le fait qu’elle a jugé nécessaire de faire une ristourne (à mon sens une chose inédite dans les annales) sur ses adaptateurs jusqu’en janvier, ainsi que les <a href="http://www.independent.co.uk/life-style/gadgets-and-tech/features/apple-macbook-pro-new-philip-schiller-interview-phil-iphone-ios-criticism-a7393156.html">différentes interviews</a> données dernièrement par <a href="https://www.cnet.com/special-reports/jony-ive-talks-about-putting-the-apple-touch-on-the-macbook-pro/">ses cadres</a> pour éteindre l’incendie, me font penser que la réponse est négative et qu’elle en a bien conscience.</p>
<p>Est-ce le bon moment ? Si la technologie est suffisamment mature et qu’elle est en mesure de répondre correctement à 80 % des besoins, alors il fallait le faire dès maintenant, quitte à frustrer les 20 % de la clientèle qui n’y trouveront pas leur compte dans l’immédiat, d’autant qu’Apple a les moyens financiers nécessaires pour encaisser sans souffrir ce désamour.</p>
<p>Attendre, c’est prendre le risque de se faire doubler par la concurrence, et puis, combien de temps aurait-il fallu attendre ? Bien malin qui peut répondre à cette question…</p>
<p>Apple a-t-elle raison de faire cela ? L’avenir répondra à cette question, et si d’aventure le marché n’évolue pas dans la direction voulue par Apple, il ne faudra surtout pas oublier que la seconde version du MacBook Air a prouvé qu’elle est capable de pivoter très rapidement pour améliorer ses produits.</p>
<p>Apple fait-elle payer cette évolution à marche forcée trop cher ? Il est difficile de répondre à cette question, d’autant que la nouvelle gamme embarque la Touch Bar, au coût (et à l’intérêt) difficile à estimer.</p>
<p>Le problème financier est à mon avis en grande partie induit par le fait que le produit oblige à la fois l’acheteur à débourser une somme rondelette et à faire l’effort de modifier ses habitudes.</p>
<p>Le prix est donc la goutte d’eau qui fait déborder le vase, surtout en ajoutant dans l’équation le prix des adaptateurs permettant de conserver les bonnes vieilles habitudes.</p>
<p>Alors, Apple est-elle arrogante en faisant cela ? Cela pourrait très (trop) facilement être perçu de cette façon, et la politique tarifaire conjuguée au bruit des mécontents rend le raccourci d’autant plus facile, mais je pense que ce n’est pas pour rien que la notion de <a href="http://www.theverge.com/2016/9/7/12838024/apple-iphone-7-plus-headphone-jack-removal-courage">courage</a> a été évoquée durant une interview.</p>
<p>Apple pourrait très bien rester dans sa zone de confort, et se contenter d’itérer sur la gamme précédente en ajoutant des ports USB-C, un capteur TouchID, proposer jusqu’à 1 To de RAM, des processeurs plus puissants ainsi qu’une résolution d’écran supérieure tout en remaniant son design à volume constant, en déplaçant les haut-parleurs, en changeant le clavier et en augmentant la taille du trackpad.</p>
<p>Après tout, la quasi-totalité des fabricants d’ordinateurs présents sur le marché fait cela, même si certains prennent parfois le risque de lancer sur le marché une démonstration technologique camouflée parmi une gamme de produits fondamentalement classiques pour démontrer qu’ils savent faire aussi bien qu’Apple, voir même mieux.</p>
<p>Sauf qu’Apple a eu le courage d’être disruptive en proposant de manière très visible pour l’ensemble de sa gamme d’ordinateurs portables quelque chose d’inédit sur le marché, en prenant le risque de décevoir ou de mécontenter une frange potentiellement significative de sa clientèle habituelle.</p>
<p>En clair, Apple a eu le courage d’innover.</p>http://blog.mageekbox.net/?post/2016/11/16/%C3%80-propos-de-l%E2%80%99USB-C-des-nouveaux-MacBook-Pro#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/496Mettre l'Installateur de macOS Sierra sur une clef USBurn:md5:00d37401f8ec4cde490f8012e68049d22016-09-23T11:23:00+02:002016-09-23T11:23:00+02:00mageekguyMac OS X <ol>
<li>Trouver une clef USB d'une capacité ≥ à 8 Go ;</li>
<li>L'insérer dans un port USB disponible ;</li>
<li>Télécharger macOS Sierra <a href="https://itunes.apple.com/fr/app/macos-sierra/id1127487414?mt=12">à partir de l'App Store</a> ;</li>
<li>Ne pas lancer l'installation de macOS Sierra ;</li>
<li>Ouvrir un terminal ;</li>
<li>Exécuter <code>`sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/<nom de la clef USB> --applicationpath /Applications/Install\ macOS\ Sierra.app</code> ;</li>
<li>Faire ce qui est indiqué à l'écran ;</li>
<li>Profit!</li>
</ol>
<p>Attention, le contenu de la clef USB sera évidemment perdu durant le processus.</p>http://blog.mageekbox.net/?post/2016/09/23/Installer-macOS-Sierra-sur-une-clef-USB#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/495Alan Kay about objecturn:md5:4a4965a344c7545f38dfe0aecb22156c2016-06-21T16:34:00+02:002016-06-21T16:34:00+02:00mageekguyRéfléxions <blockquote cite="https://news.ycombinator.com/item?id=11940028"><p>I've been constantly surprised about how what I called <q>object-oriented</q> and <q>system-oriented</q> 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 amounts of effort have been expended to retain the old paradigms…</p>
</blockquote>http://blog.mageekbox.net/?post/2016/06/21/Alan-Kay-about-object#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/494C'est l'histoire d'un mecurn:md5:53b0b0bd790fd483a52e55b1115817932016-02-17T09:00:00+01:002016-02-17T10:07:10+01:00mageekguyC'est de la merde <p>C'est l'histoire d'un mec qui exécute dans son terminal la commande <code>phpmetrics --report-html=~/metrics src</code>, qui se retrouve en conséquence avec un répertoire <code>~/</code> dans son répertoire courant et qui fait donc un <code>rm -rf ~/</code> pour le supprimer, pour aller ensuite faire une offrande à Steve Jobs pour avoir permis le développement et la commercialisation de <a href="https://fr.wikipedia.org/wiki/Time_Machine_(logiciel)">Time Machine</a>.</p>
<p>Évidemment, toute ressemblance avec des faits réels ne serait que pure et fortuite coïncidence, et ne faites surtout pas cela chez vous (ou alors, ayez une sauvegarde récente de votre répertoire d'accueil sous la main).</p>http://blog.mageekbox.net/?post/2016/02/17/C-est-l-histoire-d-un-mec#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/493PHP et ./configureurn:md5:1fe220dd1588b1c67ee35f1d15f81e132015-12-01T12:43:00+01:002015-12-02T17:17:51+01:00mageekguyPHPcompilationPHP<p>Aujourd’hui, j’ai fait un <code>brew install</code> (je sais, je suis un dingue) qui a mis à jour la bibliothèque <code>icu</code>, utilisée par l’extension <code>int</code> de PHP.</p>
<p>Du coup, PHP est devenu inutilisable sur mon poste de travail puisque j’obtenais systématiquement la sympathique erreur suivante :</p>
<pre># 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
</pre>
<p>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 <code>libicui18n.55.dylib</code> à l’emplacement indiqué lors de sa compilation, ce qui est logique vu que <code>brew</code> a supprimé le fichier concerné au profit de <code>libicui18n.56.dylib</code> (et oui, les bibliothèques qui contiennent leur numéro de version dans leur nom sont une plaie).</p> <p>Et la solution est très simple, puisqu’il suffit de compiler une nouvelle fois PHP depuis ses sources en indiquant le nouveau chemin d’accès à la bibliothèque concernée lors de l’appel à <code>./configure</code>.</p>
<p>En effet, pour ceux qui ne le sauraient pas, une compilation classique de PHP sous UNIX se fait en trois étapes :</p>
<ol>
<li>Un appel à <code>./configure</code> avec diverses options permettant de définir les chemins d’accès aux fichiers ou répertoires nécessaires à la compilation, l’installation et l’exécution de PHP ainsi que les extensions qui doivent être intégrées dans les binaires créés (au passage, <code>./configure --help</code> est l’ami de ceux qui se lancent dans l'exercice pour la première fois) et qui génère le fichier <code>Makefile</code> correspondant ;</li>
<li>Un appel à <code>make</code> qui utilise le fichier <code>Makefile</code> précédemment généré qui génère les différends binaires ;</li>
<li>Un appel à <code>make install</code> qui provoque l’installation des binaires créés à l’étape précédente ainsi que celle de la documentation et des différents utilitaires associés à PHP (comme <code>phpize</code> qui permet de configurer les extensions PHP pour la version de PHP qui vient d’être installée).</li>
</ol>
<p>Sauf que je fais une configuration très spécifique de PHP lorsque je le compile et mon appel à `./configure` est donc relativement complexe.</p>
<p>Lorsque je dois compiler PHP, j’utilise donc systématiquement la commande <code>php -i | grep configure</code> pour récupérer la commande <code>configure</code> qui a été utilisée pour compiler la version de PHP actuellement installée sur mon poste.</p>
<p>Mais aujourd’hui, cette version était inutilisable et que PHP n’était donc plus en mesure de me fournir la commande <code>configure</code> que j’avais utilisé pour le compiler.</p>
<p>Mais heureusement pour moi, <code>configure</code> génère dans le répertoire contenant les sources à compiler un journal nommé <code>./config.log</code> qui contient entre autres le détail du dernier appel à <code>configure</code>.</p>
<p>J’ai donc pu compiler PHP sans devoir reconstruire de zéro la commande suivante :</p>
<pre>./configure --disable-all --sysconfdir=/private/etc --enable-xml --enable-cli --with-config-file-path=/etc --enable-type --with-libxml-dir=/usr --with-pare-regex --enable-pear --enable-hash --enable-json --enable-libxml --enable-session --enable-dom --enable-sockets --enable-tokenizer --enable-simpleml --enable-soap --enable-posix --enable-pcntl --with-libedit --enable-filter --with-sqlite3 --enable-mbstring --with-mysqli=mysqlnd --with-curl --with-openssl --with-ldap --enable-xmlwriter --enable-pod --with-pod-mysql --enable-into --with-apxs2 --with-icu-dir=/usr/local/Cellar/icu4c/56.1 --with-glib --with-crypt --enablte-opcache --enable-phpdbg
</pre>http://blog.mageekbox.net/?post/2015/12/01/PHP-et-configure#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/492J'ai oublié de vous dire… #2urn:md5:2ab3b1bba99308796c479626751dda752015-11-06T14:00:00+01:002015-11-06T15:13:33+01:00mageekguyConférencesatoumconférences<p>J’ai oublié de vous dire que je vais me livrer à un exercice inédit pour moi lors du <a href="http://event.afup.org">prochain forum PHP</a> les 23 et 24 novembre 2015.</p>
<p>En effet, <a href="http://afup.org/pages/site/">l’AFUP</a>, traditionnelle organisatrice de l’événement, me renouvelle à cette occasion sa confiance puisqu’elle a retenu ma proposition de conférence concernant <a href="https://github.com/atoum/atoum">atoum</a>.</p>
<p>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.</p>
<p>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.</p> <p>Ce sera aussi l’occasion pour moi d’expliquer ma vision du projet, les objectifs que je m’étais fixés, l’impact qu’il a eu sur ma vie personnelle et professionnelle et également le bon moment pour préciser très officiellement mon positionnement actuel en son sein.</p>
<p>L’objectif de cette conférence estdonc ambitieux et même si sa forme est encore loin d’être figée, je sais déjà que j’ai besoin de l’aide de tous ceux qui s’intéressent de près ou de loin à atoum. </p>
<p>Une bonne rétrospective nécessite en effet la présence des développeurs du produit (je peux déjà vous dire que certains seront dans la salle) mais aussi celle du client, et le client d’atoum, c’est vous.</p>
<p>Si vous n’avez pas déjà réservé votre place pour ce forum PHP qui se déroulera <a href="http://event.afup.org/forum-php-2015/acces/">à Paris au Beffroi de Montrouge</a>, je vous invite donc à le faire au plus vite pour que nous puissions discuter ensemble, en tête à tête et en toute franchise, de ce que représente atoum aujourd’hui et de ce qu’il sera potentiellement demain, sachant qu'en plus, il y a plein d'autres conférences semblant très intéressantes <a href="http://event.afup.org/forum-php-2015/programme/">au programme</a>, avec notamment un cycle intégralement dédié à PHP 7.</p>
<p>Et si pour une raison ou une autre, vous ne pouvez vous y rendre, ce n’est pas grave, car une rétrospective agile est basée sur le feedback.</p>
<p>Or, le feedback peut prendre bien des formes, et en conséquence, si vous souhaitez participer à cette conférence, je vous propose d’aider le projet de deux façons différentes et non exclusives.</p>
<p>Si votre entreprise utilise atoum, vous pouvez m’envoyer son nom via <a href="https://twitter.com/mageekguy">mon compte twitter</a> et <a href="https://twitter.com/search?q=%23atoum">#atoum</a> (en sachant que soit elle sera citée durant la conférence, soit son nom figurera sur mes supports).</p>
<p>Vous pouvez également m’envoyer, toujours par le même canal de communication, un ou plusieurs mots qui représente l’outil de votre point de vue, qu’il soit positif ou négatif, par exemple « inutile », « PHPUnit rocks » ou « facile à utiliser » (un troll est caché parmi ces exemples, saurez-vous le débusquer ?).</p>
<p>Et si vous avez un feedback à me donner qui ne peut prendre l’une de ces deux formes, mon adresse de courrier électronique n’est pas très difficile à trouver.</p>
<p>On se voit <a href="http://event.afup.org/forum-php-2015/programme/#1608">le 23 novembre à 15 h 30</a> à Paris pour reparler de tout cela ?</p>http://blog.mageekbox.net/?post/2015/11/06/J-ai-oubli%C3%A9-de-vous-dire%E2%80%A6-2#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/491Chronique sur mon voyage vers l'est, quatrième !urn:md5:c7614b8c6b3e309e70d5695ec84c1fab2015-10-29T15:23:00+01:002015-10-29T15:23:27+01:00mageekguy<p>Comme je l’ai annoncé dans <a href="http://blog.mageekbox.net/?post/2015/10/28/J-ai-oubli%C3%A9-de-vous-dire%E2%80%A6-1">mon précédent billet</a>, 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 <a href="http://www.blendwebmix.com">Blend Web Mix</a>.</p>
<p>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 <a href="http://blog.est.voyage/phpTour2015/">l’histoire correspondante</a> que j’avais publiée après le PHP Tour luxembourgeois.</p> <p>J'avoue être assez satisfait de ma prestation, car malgré un format imposé plus court que celui pour lequel la conférence a été conçue, je suis parvenu à ne pas dépasser le temps imparti et même à avoir suffisamment de temps pour répondre à quelques questions.</p>
<p>Évidemment, pour y parvenir, j'ai du instiller plus d'énergie et aller plus rapidement à l'essentiel que lors de mes précédentes prestations, mais j'ai l'impression que cela a eu un impact positif.</p>
<p>J'ai été relativement surpris par l'importance de l'auditoire puisque j'estime au doigt mouillé qu'une soixantaine de personne sont venues écouter ce que j'avais à raconter, alors que mon auditoire habituel était d'une vingtaine de personnes.</p>
<p>Renseignement pris, il semble que le fait de passer après une conférence technique sans réelle alternative au niveau de la programmation a aidé, ainsi que le titre de ma conférence qui semble avoir à minima intrigué, même si quelqu'un m'a avoué qu'il s'attendait à un retour d'expérience sur un voyage en asie et non à une réflexion sur la pratique de la programmation orientée objet.</p>
<p>Il est vrai que le titre est particulier et à double tranchant, car il peut rebuter autant qu'attirer, mais j'aime son originalité et je n'ai pas envie de tomber dans le classicisme souvent de mise pour ce type de conférence.</p>
<p>J'ai aussi une nouvelle fois constaté qu'il y a un vrai point de rupture dans ma conférence au moment ou je passe de l'introduction à la présentation du concept, et j'en ai eu la confirmation par l'un des auditeurs qui était déjà présent lors de la première itération et qui avait également ressentie le décalage qui se produit à ce moment à l'époque.</p>
<p>En soi, ce n'est pas un problème car la conférence a été construite en fonction de ce point de rupture et j'ai vraiment eu l'impression que tout le monde parvenait à raccrocher ses wagons par la suite grâce à cela, mais peut-être faudrait-il que je trouve un moyen d'en atténuer l'effet pour la prochaine itération… peut-être à Lyon, dans le cadre d'un apéro PHP ou d'un cycle de conférence !</p>http://blog.mageekbox.net/?post/2015/10/29/Chronique-sur-mon-voyage-vers-l-est%2C-quatri%C3%A8me-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/490J'ai oublié de vous dire… #1urn:md5:d9dd51da0a336cf2d0a96ee5b4beafdb2015-10-28T08:08:00+01:002015-10-28T13:13:44+01:00mageekguyConférencesblendconférenceseastPOO <p>J’ai oublié de vous dire que je donnerais demain une conférence à la <a href="http://www.blendwebmix.com">Blend Web Mix</a> à propos de la programmation orientée « vers l’est », également connue sous le nom de programmation orientée objet.</p>
<p>Cette conférence est la synthèse du (long et difficile) chemin que j’ai parcouru en 18 mois lorsque j’ai remis en question radicalement ma façon de programmer et elle représente donc à mes yeux un retour d’expérience très intéressant pour tous les développeurs.</p>
<p>Si vous pensez que la programmation orientée objet ne tient pas ses promesses ou qu’elle est parfois (ou souvent) un frein ou un obstacle plutôt qu’un outil qui facilite votre quotidien de développeur, je vous invite donc à venir m’écouter et à en discuter demain 29 octobre à partir de 12 h en salle « Gratte Ciel ».</p>
<p>Il y aura une moustache, un mémé, une paire de menotte, Sangoku, des verres d'une marque suédoise ainsi qu’un soupçon de biologie et nous aurons faim, il n'y aura pas de chat et aucune blague à propos de <q>Retour vers le futur</q>, mais j’ai vraiment une histoire intéressante à vous raconter !</p>http://blog.mageekbox.net/?post/2015/10/28/J-ai-oubli%C3%A9-de-vous-dire%E2%80%A6-1#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/489J'ai un emploi !urn:md5:0ca347e46297f616355bbc8cd8e9287e2015-10-27T14:00:00+01:002015-10-28T08:15:21+01:00mageekguy<p>Le dernier billet de ce blog a été pendant bien trop longtemps <q>je suis à la recherche d’un emploi</q>.</p>
<p>Je dis bien trop longtemps, car depuis maintenant pratiquement six mois, je travaille pour la société Norsys.</p>
<p>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.</p>
<p>En effet, Norsys est ce que le Syntec Numérique a décidé de pudiquement renommer il y a deux ans <q>Entreprise de Services du Numérique</q>, ou <abbr title="Entreprise de Services du Numérique">ESN</abbr>, l’abréviation <abbr title="Société de Service en Ingénierie et Informatique">SSII</abbr> pour <q>Société de Service en Ingénierie et Informatique</q> étant certainement devenu trop négativement connotée à son goût.</p>
<p>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).</p>
<p>Mais alors, pourquoi ai-je décidé de rejoindre cette société, me direz-vous ?</p> <p>Il y a deux réponses à cette question.</p>
<p>Tout d’abord, j’ai constaté « in situ » que Norsys est très loin de l’idée que je me fais des <abbr title="Société de Service en Ingénierie et Informatique">SSII</abbr> « classiques », car elle ne considère pas ses salariés comme des ressources consommables et n’est pas prête à tout sacrifier pour le compte de la sacro-sainte rentabilité.</p>
<p>Au contraire, l’entreprise cherche à faire au mieux pour tout le monde, et lorsque je dis « tout le monde », cela englobe aussi bien le collaborateur que l’entreprise, le client, la société civile, ainsi que l’environnement et la planète.</p>
<p>Ensuite, j’avoue que j’ai eu de très gros doutes lorsque j’ai entendu ce discours, mais mon arrivée chez Norsys est également le résultat d’une rencontre avec une personne qui a une vision claire de son objectif, de ceux de son entreprise et des moyens nécessaires pour les atteindre. De plus, il m’a donné suffisamment d’informations pour comprendre comment je pouvais aider à atteindre ces objectifs et m’a raconté suffisamment d’anecdotes pour susciter en moi l’envie de savoir si tout cela n’était pas juste un discours marketing bien rodé.</p>
<p>L’un dans l’autre, j’ai donc décidé d’être payé pour voir, et j’avoue que depuis, je n’ai pas été déçu puisque j’ai pu constater que tout cela n’était pas que du vent et que les <a href="https://fr.wikipedia.org/wiki/Anneaux_borroméens">nœuds borroméens</a> qui servent de logo à Norsys n'ont pas été choisis uniquement pour leur esthétisme puisqu’ils incarnent effectivement les valeurs de la société et surtout la façon dont elle souhaite les concilier aujourd’hui et demain.</p>
<p>Tout n’est évidemment pas parfait, mais Norsys a une réelle volonté de faire progresser l’intérêt commun en s’améliorant à l’aide de l’expérimentation et du feed-back de ses employés et de ses clients.</p>
<p>Et ça fait du bien !</p>
<p>Après 15 ans d’expérience professionnelle durant lesquelles je me suis toujours refusé à travailler pour une SSII, car elles étaient pour moi le Mal incarné, je me sens à nouveau à ma place au sein de l’une d’elles, et avec en prime des perspectives d’évolution correspondant à mes convictions et mes envies.</p>
<p>S’il y a une leçon à retenir de tout cela, c’est qu’il faut vraiment ne jamais préjuger de rien (et qu’accessoirement, qu’il n’y a que les cons qui ne changent pas d’avis).</p>http://blog.mageekbox.net/?post/2015/10/27/J-ai-un-emploi-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/488Je cherche un emploi !urn:md5:d1dbd4ff627fdf00de2c51a31b0722ae2015-04-08T11:46:00+02:002015-04-08T11:46:00+02:00mageekguy <p>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.</p>
<p>Donc, si d’aventure vous cherchez un développeur PHP agile avec 15 ans d’expérience, qui pratique le TDD, qui dispose de solides bases en architecture logiciel et en qualité logiciel, qui a envie de faire partager ses connaissances et qui aime relever des défis techniques, je suis votre <a href="http://medias.mageekbox.net/cv.frederic.hardy.pdf">homme</a> !</p>http://blog.mageekbox.net/?post/2015/04/08/Je-cherche-un-emploi-%21#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/487Spécifiez agile !urn:md5:0525b62d9c3069dbc8caf2451c9e67d62014-09-09T13:25:00+02:002014-09-09T13:25:00+02:00mageekguy<p>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.</p>
<p>Or, l’agilité mise avant tout sur la bonne collaboration de toutes les parties prenantes d’un projet pour parvenir à sa concrétisation.</p>
<p>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.</p>
<p>Le livre de <a href="http://www.thierrycros.net">Thierry Cros</a> intitulé <q><a href="https://leanpub.com/agile-expression-de-besoins">Spécifiez agile</a></q> 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.</p>
<p>Voici donc ma critique de ce livre qui, je l’espère, permettra à Thierry d’améliorer son ouvrage.</p> <p>Il commence d’ailleurs son livre en nous expliquant la façon dont il a été conçu, c’est-à-dire de manière agile, et donc en nous encourageant à lui fournir un retour afin qu’il puisse l’améliorer.</p>
<p>L’existence de ce billet implique que cette explication atteint parfaitement son objectif, en plus d’humaniser l’ouvrage puisque Thierry nous explique en prime ce qui l’a poussé à se lancer dans l’écriture de ce livre et le chemin qu’il a suivi pour parvenir à sa publication.</p>
<p>Cette humanisation se poursuit d’ailleurs dans les deux chapitres suivants, Thierry nous y expliquant dans le premier le rôle du « product owner » tandis qu’il pose les bases d’une mise en application de l’agilité en terme fonctionnel dans le cadre d’un cas pratique théorique.</p>
<p>Mais malheureusement, son discours devient beaucoup plus académique dans les chapitres suivants, et je le regrette.</p>
<p>En effet, je pense que la transmission de son message aurait été beaucoup plus efficace s’il s’était servi de cette base de départ pour illustrer au moins une partie des concepts présentés par la suite de son livre, sinon la totalité.</p>
<p>Ainsi, la digestion de cette masse d’information serait certainement plus facile et accessoirement favoriserait potentiellement sa mémorisation en offrant des repères mnémoniques. </p>
<p>Cela ne veut cependant pas dire que les chapitres suivants sont pour autant inintéressants, bien au contraire.</p>
<p>Le vocabulaire agile relatif à l’aspect fonctionnel du développement d’un logiciel est parfaitement expliqué, associé à une dose pertinente de concept psychologique relatif à la communication dans le cadre d’un groupe.</p>
<p>Malheureusement, les références illustrant ces concepts sont bien souvent succinctes, mais je pense avoir été handicapé à ce sujet par le fait que je n’utilisais pas la version numérique du livre qui doit, contrairement à la version papier, contenir des liens vers les articles correspondants.</p>
<p>Les chapitres relatifs à la « valeur métier » ainsi qu’à la « vision » du produit sont ceux qui m’ont le plus interpellé, et pas uniquement parce que dans mon contexte de l’époque, ces deux concepts étaient complètement ignorés.</p>
<p>En effet, d’après ce que j’ai pu constater au cours de ma carrière ou des discussions que j’ai pu avoir à ce sujet, les développeurs savent bien souvent plus ou moins approximativement ce qu’ils doivent faire, mais ne savent en général pas pourquoi ils doivent le faire. En clair, ils n’ont que trop rarement connaissance de l’objectif que leur travail est censé permettre d’atteindre à un niveau plus global (bien souvent parce que le client n’en a lui même qu’une vague idée, mais c’est un autre débat).</p>
<p>Or, je suis persuadé qu’un développeur doit savoir à la fois ce qu’il doit faire et pourquoi il doit le faire afin de pouvoir trouver dans la combinaison de ces deux informations la motivation pour sortir de sa zone de confort, se surpasser, évoluer et ainsi ne plus être juste un « pisseur de code » bête et méchant.</p>
<p>Ainsi, le client y trouve son compte, car son produit répond mieux à ses besoins et le développeur gagne en compétence et en estime de soi, car il sait à la fois à quoi et comment il a contribué.</p>
<p>Et enfin, la vision peut permettre aux développeurs de résoudre leur problème en plus d’être pour eux un redoutable outil d’aide à la décision.</p>
<p>Ainsi, si la vision du produit met en avant la performance, ils choisiront les technologies qu’ils mettront en œuvre en conséquence, et lorsqu’un consensus ne peut être atteint au sein des développeurs sur un point ou un autre, se référer à la vision peut permettre de dénouer la situation en remettant les choses en perspective par rapport à l’objectif à atteindre.</p>
<p>Il est donc important que les fonctionnels et les développeurs disposent d’une vision commune du produit correspondant à celle du client, et Thierry insiste donc à juste titre sur ces deux notions bien souvent trop occultées durant la vie d’un projet.</p>
<p>Et pour le coup, j’aurais trouvé très pertinent d’illustrer à minima ce chapitre relatif à la vision à l’aide du cas pratique mis en place dans le second chapitre.</p>
<p>J’ai également aimé que Thierry évoque dans son ouvrage la problématique de la prise de décision et présente une méthode permettant d’y parvenir en y impliquant tous ceux devant y prendre part, tout en n’occultant pas le fait que cela n’est pas simple pour autant, tant s’en faut.</p>
<p>Au passage, pour ceux que la problématique de la prise de décision intéresse, <a href="https://www.youtube.com/watch?v=FZJwRRsmeyY">la conférence d’Olivier Sibony</a> à ce sujet est remarquable.</p>
<p>L’un dans l’autre, j’ai donc trouvé mon compte en lisant le livre de Thierry, et je ne peux donc qu’en recommander la lecture aux développeurs ou aux fonctionnels qui veulent améliorer leur façon de travailler avec « celui d’en face », qu’il soit développeur ou fonctionnel, ne serait-ce que parce qu’il permet à un développeur de mieux comprendre les contraintes et la façon de travailler d’un fonctionnel dans un tel contexte, et réciproquement.</p>
<p>En effet, si la forme du livre serait à mon avis beaucoup plus agréable si l’ambiance des deux premiers chapitres était propagée aux autres, reste que son fond est plus qu’intéressant puisqu’il propose des solutions et des pistes à suivre pour résoudre des problèmes que l’on rencontre communément lorsque l’on développe un logiciel.</p>
<p>Alors, <a href="http://www.amazon.fr/Spécifiez-agile-Thierry-Cros/dp/1291390359/ref=sr_1_1?s=books&ie=UTF8&qid=1410261868&sr=1-1&keywords=thierry+cros">à 23 €</a> ou à partir de <a href="https://leanpub.com/agile-expression-de-besoins">7 €</a> au format numérique, faites-vous une faveur, offrez ou offrez-vous <q><a href="https://leanpub.com/agile-expression-de-besoins">Spécifiez agile</a></q> (et non, ce billet n'est pas sponsorisé) !</p>http://blog.mageekbox.net/?post/2014/09/09/Specifiez-agile#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/486