mageekblog - À propos de la simplicité - CommentairesLe 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:26874ca5b8cd4cac8d08b0e68e64f63aDotclearÀ propos de la simplicité - bdelespierreurn:md5:70f5b78ac5e63c20fcb839be5ec9b3832013-12-17T11:09:04+01:002013-12-17T12:07:04+01:00bdelespierre<p>@<a href="http://blog.mageekbox.net/?post/2013/12/16/A-propos-de-la-simplicite#c6380" rel="nofollow">mageekguy</a> : Ce que tu dis est vrai, le développement est très loin d'être une science exacte. On se retrouve souvent avec des spécifications bancales voire inexistantes et il faut savoir faire avec. Mais on n'avance pas sans plan et quoi qu'on en dise, il s'agit bien de construire quelque chose. D'accord, ce n'est peut être pas aussi normalisé que dans le bâtiment (encore que dans leur domaine je doute que ce soit carré à 100%) mais on ne se lance pas non plus dans la réalisation d'un soft au petit bonheur la chance sans savoir ce qu'on fait.</p>
<p>De même qu'il vaut mieux avoir un plan (donc faire un minimum de conception), il faut aussi savoir s'appuyer sur ce que d'autres ont fait, notamment en termes d'architecture. Je n'invente pas de nouveaux patrons à chaque fois que je fabrique une nouvelle application et je ne ponds pas de nouveaux designs applicatifs toutes les semaines non plus.</p>
<p>Tout ça pour dire que je ne trouve pas cette métaphore si éloignée de la réalité de notre métier.</p>
<p>Produire une solution simple pour l'utilisateur final, c'est l'essence de notre métier: savoir répondre à un besoin ou problème. De toute façon un code sans valeur ajoutée est un code inutile (à l'exception près de quelques expérimentations avec lesquelles on s'amuse sur GitHub). Je suis conscient du fait que plus la solution est simple pour l'utilisateur final, plus elle devient complexe pour le développeur et cette complexité peut rapidement nuir à la qualité du code ce qui tôt ou tard se traduit par une dégradation de l'expérience utilisateur.</p>
<p>C'est pourquoi j'attache une importance particulière à la simplification dans le processus de développement. On est jamais seul à travailler sur un projet informatique, si j'essaie de rester le plus simple possible dans mes développements, c'est surtout pour que d'autres puisse continuer à faire grandir le projet sans moi sans pour autant devoir endommager l'expérience utilisateur à grands coups de patchs.</p>
<p>J'ai vu tellement de bonnes idées fonctionnelles foutues à la poubelle à cause d'un design applicatif bancal qui ne pouvait pas les accueillir, c'est pour ça que je prône la simplicité des deux cotés du mirroir.</p>À propos de la simplicité - mageekguyurn:md5:61141310f504522aa6016847e427497b2013-12-16T14:51:42+01:002013-12-16T15:04:12+01:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2013/12/16/A-propos-de-la-simplicite#c6379" rel="nofollow">bdelespierre</a> : Tout d'abord, il faut arrêter avec les métaphores relatives à la construction ou tout autre chose ne requérant pas un processus empirique pour être finalisé et répondre au besoin.</p>
<p>Faire du code, ce n'est pas empiler des briques avec des couches de ciment, etc.</p>
<p>Ça n'a strictement rien à voir, car ceux qui construisent une maison ont des plans, ils l'ont déjà fait ou peuvent s'appuyer sur le fait que d'autres l'ont fait avant eux.</p>
<p>Le développeur est lui tout seul dans son short face à son éditeur, avec bien souvent une idée très vague de l'objectif à atteindre et uniquement quelques pistes (dans le meilleur des cas) sur la façon de l'atteindre (je force le trait à dessein pour faire passer mon message, mais dans les faits, ce n'est finalement pas si exagéré).</p>
<p>Utiliser ce type de métaphore ne fait que renforcer la croyance populaire qui veut que pondre du code est un processus à 100% industrialisable car maitrisé de bout en bout et répétable à l'infini sans ajustement, alors qu'il n'y a rien de plus faux.</p>
<p>Quand au fait d'utiliser des outils simples de préférence à des outils complexes, j'y mettrais un gros bémol.</p>
<p>Je pense qu'il faut surtout utiliser des outils que l'on maîtrise plutôt que des outils que l'on ne maîtrise pas, et peu importe que l'outil maitrisé soit complexe, car si ses utilisateurs le maîtrise, il n'est plus complexe à leur yeux (et une nouvelle fois, je rejoins donc sdouche sur l'aspect relatif de la simplicité).</p>
<p>Le but est que l'outil final soit simple à mettre en œuvre pour son utilisateur final, pas qu'il soit simple à construire, produire ou développer (je doute très fortement que le processus de création d'un produit estampillé d'une pomme, pourtant réputé pour être les plus simples à utiliser au monde, voir trop simple, ne soit pas un tantinet complexe à tout point de vue).</p>
<p>Même si effectivement, pouvoir faire simple dans la phase de production peut être une bonne chose, mais… c'est la cerise sur le gâteau.</p>À propos de la simplicité - bdelespierreurn:md5:9ea88f89c7a3ae54da3a8a5d9cf9395c2013-12-16T14:36:59+01:002013-12-16T15:04:20+01:00bdelespierre<p>@<a href="http://blog.mageekbox.net/?post/2013/12/16/A-propos-de-la-simplicite#c6377" rel="nofollow">mageekguy</a> : je parlais uniquement de mon avis et de mon expérience de technicien. Même si je suis sensible aux problématiques d'ergonomie et au concept d'user-friendlyness, ce n'est pas mon coeur de métier. Je suis d'accord quand tu dis qu'il faut avant tout penser à l'utilisateur final, que l'humain est plus important que la technique. Mais dans une boite à outils, il vaut mieux que chaque outil soit le plus simple possible: un marteau-tournevis-fer-a-souder-planche-a-repasser n'est pas très intéressant pour un artisan. Pour un développeur c'est la même chose: je préfère assembler des outils simple (sous la forme de composants indépendants idéalement) pour adresser un problème complexe qu'utiliser une solution couteau-suisse structurante qui va me gêner plus qu'autre chose pour construire ma maison.</p>
<p>En somme, quand je code, j'essaie de ne pas oublier que les techniciens sont aussi des humains et j'essaie donc de faire simple pour eux aussi <img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /></p>À propos de la simplicité - mageekguyurn:md5:98a0a970046210645133382a68abd2fb2013-12-16T14:05:31+01:002013-12-16T14:09:52+01:00mageekguy<p>@<a href="http://blog.mageekbox.net/?post/2013/12/16/A-propos-de-la-simplicite#c6376" rel="nofollow">bdelespierre</a> : Mouais, je suis plus que moyennement convaincu.</p>
<p>À mon sens, parvenir à la simplicité veut avant tout dire penser à l'utilisateur final, ce qui veut dire le comprendre aussi bien avec ses qualités et ses défauts, bref, faire preuve d'empathie.</p>
<p>Et ça n'a STRICTEMENT rien à voir avec la technique et à mes yeux, vouloir atteindre la simplicité par la technique est même la meilleure solution pour créer une usine à gaz car la technique masque alors les objectifs.</p>
<p>Donc tu pourras utiliser tous les outils que tu veux, qu'il soit simple ou non, si tu n'as pas compris l'utilisateur final, tu feras tous sauf un outil simple à ses yeux (car je rejoins sdouche, la simplicité n'est pas la même pour tout le monde).</p>
<p>Pour faire un outil simple, il faut donc avant tout (paradoxalement) faire prendre le pas à l'humain sur la technique.</p>À propos de la simplicité - bdelespierreurn:md5:2bbca18348784cae6cd1e57594e361392013-12-16T13:57:12+01:002013-12-16T14:05:07+01:00bdelespierre<p>Il m'a fallu 2 ans et un projet majeur mis à la poubelle pour me rendre compte combien la simplicité était importante dans le processus de dévelloppement. Avec de la complexité, même une petite erreur prend des proportions inimaginables et devient un cauchemard à corriger à postériori alors qu'avec une solution simple (ou un assemblage de solutions simples) non seulement les problèmes sont rapidement identifiés mais sont en plus vite résolus.</p>
<p>C'est pourquoi j'évangélise en faveur des 3 acronymes qui sont aujourd'hui mon dogme: KISS, DRY et YAGNI (Keep It Simple you Stupid, Don't Repeat Yourself, You Ain't Gonna Need It).</p>
<p>En termes de développement, spécialement en PHP, c'est l'approche orientée composant et composer qui permettent au mieux de favoriser l'émergence du concept de simplicité, c'est pourquoi j'en fais la promotion partout où je vais.</p>À propos de la simplicité - sdoucheurn:md5:40618752bf0cef1f67d7ee2bd30a1afb2013-12-16T12:53:55+01:002013-12-16T14:05:07+01:00sdouche<p>Plus je vieillis, plus je considère la simplicité comme fondamentale. Ceci dit, c'est une notion que j'ai toujours en tête car j'ai "l'avantage" de ne pas comprendre grand chose, donc je vois tout de suite les choses compliquées :).</p>
<p>Mais le soucis avec la simplicité, c'est que cela prend un sens différent pour chacun d'entre nous. Ce qui sera vu comme simple par quelqu'un ne le sera pas pour d'autres. une personne qui aime les maths trouvera les langages fonctionnels simples, pas moi. Ou comme un développeur PHP trouvera son langage simple alors qu'il est bourré d’incohérences qui me rebute. Ou un dev Java qui aura oublié qu'il a du se taper plein de livres pour y arriver. Ou un dev Python / Ruby...</p>
<p>Bref c'est une recherche qui demande beaucoup de temps, de reflexion et d'introspection . C'est une voie difficile. Et pour reprendre un autre slogan : "on sait que l'on a terminé quand il n'ya plus rien à enlever".</p>