Ico Chamois d"or
Ico Polémiquons
Ico Le saviez-vous ?
Ico Dossier
Ico Club de lecture
Ico Le Petit Geste du Jour
Ico Réseau
Ico Messagerie
Ico Navigateur
Ico Système
Ico Multimedia
Ico Divers

La Programmation Responsable (3) : de déléguer la programmation tu éviteras

Date 18/11/2017
Ico Dossier
Ico Chamois d"or
Comms 0 commentaire
Où les souris se retroussent stoïquement les manches même l'hiver

La programmation façon souris verte


"Elles sont amaigries
Les mains qu’il joint
Lui pour qui je joins les miennes"

Yamaguchi Seishi (1901-1994)


Suite de notre palpitant dossier, nous prenons un peu de hauteur aujourd'hui jusqu'à nous élever dans la stratosphère de la pensée militante, pour dénoncer un fait social proprement scandaleux, inique et révoltant, rien de moins. A n'en pas douter, aucun domaine de l'activité humaine ne saurait être épargné par le phénomène moderne de la sous-traitance, qui sous ses dehors débonnaires d'efficacité industrielle et de ravissement béat du consommateur devant l'écrasement sans fin des prix, cache dans son arrière-boutique les violations de droits humains et de l'environnement qui permettent qu'un produit que personne ne saurait fabriquer de ses seules mains en moins de quelques décennies soit offert contre une poignée d'euros.


Fort heureusement éloignés de ces sombres vicissitudes, nos chers lecteurs-programmeurs n'en sont pas encore rendus à faire travailler des enfants ou à pulvériser des tonnes de produits toxiques pour gagner leur pain à la sueur de la main sur le clavier. Ouf. On notera cependant que la situation sociale dans les métiers de l'informatique n'est pas exempte des meilleures pratiques de précarisation ordinaire, avec de gentilles sociétés informatiques qui se dotent de conventions sociales dignes d'un roman de Dickens, et entretiennent une pratique décomplexée de l'exploitation du jeune diplômé à faire pâlir de jalousie les agences d'intérim. Le recours croissant à de la sous-traitance dans des pays à bas coût, qu'il faut bien aider les pauvres, pour de la production de code ou pour de l'assistance informatique à distance, achève de nous peindre un monde de l'informatique où il fait bon faire carrière.


Mais foin de tout cela, car je me fais rappeler à l'ordre par les souris qui se désolent de mes disgressions sur ces réalités sordides, alors que le sujet de notre article est d'un tout autre ordre, et qu'il serait temps de retrouver l'humeur pimpante et légère qui sied à un article écrit par de mignonnes petites souris vertes. De quoi parlons-nous réellement aujourd'hui, d'ailleurs ? Ah oui, c'est vrai, nous devions lancer un appel solennel et unanime à faire-le-soi-même son propre code avec ses petits doigts potelés, au lieu que de sans arrêt le déléguer à autrui qui l'avions écrit pour nous. Bon, cette introduction étant décidément sans espoir, et devant l'air navré des souris qui voient leur beau propos partir en sucette verbale, changeons vite de paragraphe pour nous racheter une conduite et un style, et rentrer dans le vif du sujet. En avant, marche !



Surtout ne fais rien, je m'en occupe pour toi


Cette belle proposition est le mantra de l'informatique moderne. Tout est donc organisé pour qu'aujourd'hui le développeur écrive de moins en moins de code, et passe donc ses journées à se gratter la tête pour comprendre comment réutiliser du code écrit par d'autres, ou à comprendre comment appeler le gentil service web qui est censé lui répondre en une nano seconde ce qu'il aurait mis trois jours à calculer par lui-même. Ce qui lui prendra parfois 5 jours d'analyse, allez comprendre.


Les promesses implicites qui justifient la multiplication de ces pratiques sont les suivantes :

- ceci permet de gagner du temps et de ne pas "réinventer la roue" à chaque petit problème qu'on rencontre

- ceci permet de bénéficier de code efficace, robuste et ultra-validé

- ceci permet de faire du code plus simple à maintenir sur la durée : le Gentil Développeur dont je reprends le code maintient sa petite fonctionnalité de son côté, je n'ai qu'à maintenir les 3 lignes de code qui l'appellent du mien, et en plus je bénéficie de toutes les avancées de son travail gratuitement et sans supplément. Le rêve !


Alors effectivement, si tout ceci était vrai partout et en toutes circonstances, l'équipe des Souris Vertes serait depuis longtemps en train de s'égayer dans les bois plutôt que d'écrire cet article inutile. Malheureusement, comme souvent ces promesses n'engagent que ceux qui y croient, et la réalité quotidienne de la tâche ingrate que l'on appelle "intégration" en informatique, par opposition au développement pur, et qui est un mot délicat pour signifier faire-rentrer-au-chausse-pied-ce -code-pas-de-moi-et-qui-ne-fait-pas-vraiment-ce-que-je-veux, est toute autre.


Permettons nous donc de reprendre un par un les points que nous avons cités, pour en dévoiler la face lunaire sombre et inquiétante.


Promesse 1 : plus de moins de temps


Disons le tout net, le gain de temps effectif est le plus souvent une vaste blague, car généralement plus le code à intégrer est complexe ou dense, plus la phase d'apprentissage pour se l'approprier et lui faire faire ce que l'on souhaite est longue. On peut ainsi passer des jours, des semaines ou même des mois à éplucher une documentation indigente ou à essayer de deviner le comportement de certaines fonctions par essai-erreur, voire en lisant directement le code source. Bref, le gain de temps sera très variable en fonction de la manière dont le code a été conçu et documenté, et de son adéquation à notre besoin initial. Ce qui est certain, en revanche, c'est qu'au lieu de passer vos journées à programmer, vous allez passer vos journées à décortiquer des documentations ou du code structuré de manière peut-être très différente de vos propres habitudes, ou bien à exécuter des bouts de programme dans le brouillard jusqu'à y voir plus clair. Il y en a peut-être qui adorent passer leurs journées de travail à ce genre de sport, personnellement ceci me rend instantanément mort d'ennui et le regard rivé à la fenêtre en regrettant de ne pas être ailleurs avec mes copines souris.


Promesse 2 : on ne va pas réinventer la roue, allons donc


En ce qui concerne ce fameux adage que j'ai moi-même entendu tant de fois s'agissant de produire du code informatique, eh bien personnellement aux souris vertes on ne voit pas trop le problème. Quand bien même on écarterait le fait que bien souvent, c'est une roue carrée ou carrément crevée qu'on essaie de vous refourguer discrètement, il est toujours plus épanouissant pour une personne de savoir inventer une roue par elle-même (vous sauriez le faire, vous ?) que de regarder quelqu'un d'autre le faire à sa place. A vrai dire, quand on regarde la société dans son ensemble, on voit vite que la plupart des gens passent précisément le plus clair de leur temps de travail à faire des choses redondantes ou superflues, la seule manière possible de garantir  qu'autant de gens doivent s'astreindre à pointer 40 heures par semaine alors que des millions de machines font le plus gros du travail à notre place. Le chef de projet qui vous enjoint d'arrêter de programmer vous-même votre petite fonction ne passe-t-il pas son temps à faire exactement la même chose que des milliers d'autres personnes dans le monde sur des projets similaires ? Est-ce qu'on ne pourrait pas factoriser un peu sa fonction inutile, au lieu d'essayer de toujours factoriser le travail du développeur ?


Promesse 3 : testé et approuvé, puis retesté et réapprouvé


Ah, alors là oui, en effet, voici un argument de poids (boum). Quand on sait que tester du code est souvent bien plus long que de l'écrire, et même souvent inversement proportionnellement plus pénible, puisque 30 secondes de négligence d'un développeur peuvent coûter des journées entières de recherche de petite bête dans les rouages, on ne peut qu'être sensible à cette alléchante proposition. Et bien souvent elle sera honorée, si si, à condition tout au moins que l'on se tourne vers du code issu de projets sérieux et qui tiennent la route, car aujourd'hui le premier venu pouvant mettre à disposition de l'univers le moindre fichier qu'il vient d'écrire en 4 secondes sur un coin de table, la circonspection devra être de mise si l'on ne souhaite pas se faire refourguer de la vulgaire camelote encore plus buguée qu'un système d'exploitation grand public dont nous tairons pudiquement le nom.


Promesse 4 : plus rapide que l'éclair, et sans les brûlures


Ah c'est ici que le bât blesse, qu'il érafle, égratigne voire meurtit profondément notre petit programmeur confiant. Il est évident qu'avec tout le temps investi par d'autres sur ce code que j'essaie de reprendre, il va être d'une efficacité redoutable, bien plus rapide que ce que j'aurais pu écrire avec mes dix doigts tout seul dans ma cave.


Malheureusement, lorsqu'il (ou ils, parfois un petit code cache une armée de programmeurs tapis derrière les tapis...de souris) a écrit son code magique, notre ami anonyme n'avait aucune idée du contexte dans lequel vous alliez vouloir vous en servir. Autrement dit, à moins que vous ne repreniez un morceau de code qui fasse exactement, mot pour mot et à la virgule près ce que vous souhaitiez, eh bien il sera sous-optimal pour votre besoin. Très souvent, le problème vient justement du fait que le programme veut traiter tous les cas qu'il imagine que les gens vont rencontrer, donc il devient générique, complexe et bourré de traitements inutiles pour l'utilisation très limitée que vous vouliez en faire.


Supposons par exemple que vous aimeriez trouver une petite librairie qui permette d'appliquer une rotation sur une image au format JPEG (je ne vous demanderai pas pourquoi vous cherchez quelque chose d'aussi tordu, à chacun ses loisirs). Il est probable que vous allez trouver tout un tas de librairies de traitement d'image qui permettent de faire plein de belles choses, dont justement la rotation. Et probablement elles traiteront tous les formats d'images disponibles dans l'univers. C'est très bien, seulement la rotation que vous souhaitiez appliquer consiste peut-être en 5 lignes de code, quand vous allez reprendre des dizaines de milliers de lignes de code qui ne vous serviront à rien, et appliquer une méthode dont vous ne maîtrisez pas les performances et la consommation de ressources. Faut-il alors utiliser la Super Librairie ? Nous laissons cette discussion pour le dernier paragraphe passionnant de cet article. 


Gardons tout de même bien en tête que le seul code vraiment optimal ne peut être écrit que par quelqu'un qui connaît toutes les contraintes et le contexte d'exécution, autrement dit vous, cher programmeur-lecteur. Et il y a dans la jungle informatique des bêtes féroces qu'il faudra absolument éviter de croiser, car elles vont plomber votre empreinte écologique programmatique à jamais, j'ai nommé les Gros Frameworks Qui Font le Café (alors qu'en plus en général on voulait seulement un petit chocolat). Ces bases de code tentaculaires sont généralement des monstres écrits pour garantir que le programmeur qui chausse du 47 ne programme pas trop Avec Ses Pieds, et donc lui imposer plein de contraintes et d'outils tout faits, résultat c'est le framework lui-même qui se charge de mettre les performances par terre au lieu du développeur qu'on pressentait peu scrupuleux.


De deux choses l'une : soit vous vous dites que vous savez programmer, et vous n'avez pas besoin d'un framework De La Mort. Même si vous programmez en équipe, deux ou trois conventions décidées ensemble suffiront à garder la cohérence de votre projet, sachant une fois encore que le framework n'a aucune idée de ce que vous allez programmer et donc ne vous aidera pas franchement à structurer le code intelligemment. Soit vous pensez que vous programmez comme un manche, et ce n'est pas le plus beau framework de la terre qui va vous sauver ; dans ce cas restez loin du clavier et allez plutôt faire un peu de jardinage, vous ferez moins de mal à la planète.



Promesse 5 : il n'y a plus qu'à le regarder grandir


Voilà, vous avez repris le petit, ou gros, ou Super Gros, bout de code qui vous manquait, et maintenant vous êtes sûr qu'en plus vous êtes tranquille pour les 10 prochaines années, le projet va suivre les évolutions et vous bénéficierez des nouveautés neuves gratuitement et sans aucun effort. Hum. Ceci, encore une fois, est vrai dans le monde enchanteur de Oui-Oui, mais un peu moins dans la forêt vierge des projets informatiques modernes. Car en effet, il n'est pas rare de rencontrer l'un des trois événements qui déciment nos attentes en la matière :

- les gens désertent, le projet s'arrête, plus d'évolution de rien du tout, vous voilà marron si jamais les besoins continuent d'évoluer (comme une évolution du standard JPEG pour reprendre notre petit exemple, même si c'est tout de même assez peu probable).

- pire, les gens se disputent et le projet continue, mais un autre groupe décide de faire un nouveau développement (ce qu'on appelle un branchement, ou un fork, "Si t'es pas content tu forkes", comme on dit dans le milieu). Que faire ? Qui a raison ? Qui est vilain ? Un vrai casse-tête.

- le pire du pire, tout d'un coup le ou les programmeurs décident que rien ne va plus et changent tout le fonctionnement de leur code, aucune compatibilité gardée, bref votre intégration part illico à la poubelle, et il vous faut remettre le métier sur son ouvrage à un moment où vous auriez bien d'autres choses à faire. Ah mais vraiment je vous jure.


Il faut donc un minimum de circonspection quand on choisit d'intégrer du code de projets externes, même s'ils présentent toutes les garanties de sérieux et d'intégrité, comme en atteste la destinée chaotique de projets open-source phares comme OpenOffice, Mysql, ou Gnome. Et on pourrait multiplier les exemples à l'envi.



Coder ou ne pas coder, telle est la question


"Dilemme de la proie

Fuir

Ou se cacher ?"


Midoriro no Mausu (la Souris Verte)

Bien bien, rendus à ce point de notre discussion, il est temps de se demander sans détour : faut-il, oui ou zut, utiliser du code écrit par d'autres, intégrer des applications tierces, utiliser des librairies externes ? Alors ? Les souris ? Ah, je vois qu'on a une réponse à ma droite : oui et non. Euh, super, merci les souris vraiment. Qu'est-ce que je vais écrire aux lecteurs qui défaillent d'impatience, avec ça ? D'accord, on me précise la réponse, on peut réutiliser du code dans les cas suivants :

- le projet donne les garanties de sérieux et de stabilité qui ne nous demanderont pas d'y remettre un jeton toutes les 2 semaines

- le code n'est pas trop complexe à utiliser, et est suffisamment documenté pour notre usage

- notre besoin de performance n'est pas énorme, en particulier nous ne souhaitons pas faire 10 millions de rotations d'images JPEG par seconde avec la librairie Lambda que nous avons trouvée

- le code que nous avons trouvé constitue une fonctionnalité simple et bien délimitée, il ne cherchera pas à faire le café à notre place


Il faut surtout savoir doser son effort : inutile de mettre de l'enjeu à recoder tout un truc compliqué s'il existe déjà par ailleurs et que vous n'en faites qu'une utilisation très anecdotique. Il existe même quelques cas où, très honnêtement, il serait suicidaire de se lancer dans une réimplémentation personnelle de certains algorithmes, sauf si vous aimez vous lancer des défis : toutes les librairies cryptographiques, les prises en charge de protocoles tordus dont la définition fait 2500 pages, etc.


En revanche, il reste un cas où il faudra presque toujours y aller par vos propres petits moyens personnels et à la lampe torche, c'est si votre code est destiné à être utilisé de manière intensive et qu'il constitue le maillon faible des performances de toute votre application. Comme dit précédemment, si vous devez implémenter 10 millions de rotations d'images JPEG par seconde, il n'y a pas, il va falloir vous retrousser les manches, et faire votre code de manipulation d'images aux petits oignons pour que pas un octet ne dépasse du processeur. Mais, franchement, n'est-ce pas ce qui rend la programmation si passionnante ? Qui pourrait préférer passer ses journées à réutiliser des API GoogleBook toutes faites au lieu de répondre à cet appel du monde sauvage de la programmation débridée ?



Bien programmer sa conclusion


Vous l'avez compris, aux Souris Vertes nous sommes loin de trancher systématiquement en faveur du code tout-fait-tout-prêt à être enfourné au micro-ondes, ou du code super custom fait par nos petits doigts agiles. N'en déplaise aux tenants de la solution de facilité de ne pas se poser de questions, il faudra toujours se la poser, la question, éventuellement revenir sur ses propres choix, et user de tact et de raffinement pour construire le meilleur compromis possible sans sacrifier la banquise au passage. En particulier, essayer d'enrayer un peu le report systématique de certains framework ou librairies ultra-gourmands mais que tout le monde se refile comme si c'était l'évangile ferait du bien aux ours polaires.


A vous de jouer maintenant ! Cela dit, si vous restez sur votre faim de vrais conseils de programmation concrets qui vous parlent de votre quotidien au moins autant que l'édition régionale du journal télévisé, ne vous éloignez pas trop, car lui suite de notre dossier promet de décoller vers des sommets vertigineux en la matière. On se retrouve dès que vous aurez retrouvé votre plus belle combinaison spatiale, et qu'on aura de notre côté fini de tailler nos crayons de couleur. A suivre !



Vous avez aimé ce billet ?

 

Vous aimerez peut être...
> La Programmation Responsable (1) : Ce dossier tu liras
> La Programmation Responsable (4) : de spammer ta base de données tu cesseras
> Les souris vertes ont lu pour vous : l'âge des low tech, de Philippe Bihouix
> Le saviez-vous : Google n'est pas le seul moteur de recherche ?
> La Programmation Responsable (2) : de ricaner en cours d'algorithmique tu arrêteras
 

Mot-clefs de ce billet...
programmation écologie code

Commentaires


Aucun commentaire...


Ajouter un commentaire


La validation des commentaires se fait manuellement par l'administrateur du blog. La publication de votre commentaire se fera donc une fois que l'administrateur du blog l'aura accepté. Toutefois, si votre commentaire ne respecte pas les conditions d'utilisation ou s'il est considéré comme spam, il sera supprimé sans être publié.

Auteur
Email
 
(facultatif et caché)
Site web
 
(facultatif)
Message

Ico Valider


Infos blog

Des Souris Vertes

Derniers billets

Dossier   07/12/2017
La Programmation Responsable (5) : les structures de données tu maîtriseras
Dossier   28/11/2017
La Programmation Responsable (4) : de spammer ta base de données tu cesseras
Dossier   18/11/2017
La Programmation Responsable (3) : de déléguer la programmation tu éviteras
Dossier   04/11/2017
La Programmation Responsable (2) : de ricaner en cours d'algorithmique tu arrêteras
Le Petit Geste du Jour   24/10/2017
Le Petit Geste Du Jour : je nettoie ma boîte de messagerie
Dossier   16/10/2017
La Programmation Responsable (1) : Ce dossier tu liras
Réseau   05/10/2017
Mes données dans le cloud : écologique ou pas ?
Dossier   26/09/2017
Au secours, mon ordi est lent ! (8) : J'apprends à reconnaître et changer le matériel
Le Petit Geste du Jour   10/09/2017
Le Petit Geste De La Rentrée : j'arrête le streaming
Divers   25/05/2017
Les souris vertes s'invitent à la radio
Le Petit Geste du Jour   20/05/2017
Le Petit Geste Du Jour : je change les réglages de mon appareil photo
Dossier   11/05/2017
Au secours, mon ordi est lent ! (7) : Je réinstalle mon système tout seul comme un grand
Le Petit Geste du Jour   06/05/2017
Le Petit Geste Du Jour : j'écris un haïku pour me détendre
Divers   14/04/2017
Cultiver l'attente...
Club de lecture   25/03/2017
Les souris vertes ont lu pour vous : la convivialité d'Ivan Illich
Le Petit Geste du Jour   09/03/2017
Le Petit Geste Du Jour : j'enlève la signature automatique des messages
Polémiquons   27/02/2017
L'inquiétant mariage de la science et du numérique
Dossier   17/02/2017
Au secours, mon ordi est lent ! (6) : J'adapte mon système à mes besoins
Club de lecture   12/02/2017
Les souris vertes ont lu pour vous : une question de taille, d'Olivier Rey
Le saviez-vous ?   21/01/2017
Le saviez vous ? La voiture est un ordinateur sur roues
Dossier   10/01/2017
Au secours, mon ordi est lent ! (5) : J'apprends à ne pas perdre mes données
Dossier   30/12/2016
Au secours, mon ordi est lent ! (4) : Je nettoie Windows à grands jets
Polémiquons   23/12/2016
Le Petit Geste de l'Année : je ne commande rien d'électronique au père noël
Le Petit Geste du Jour   11/12/2016
Le Petit Geste Du Jour : j'utilise un bloqueur de publicités
Dossier   27/11/2016
Au secours, mon ordi est lent ! (3) : J'apprends à ne pas polluer mon ordinateur
Dossier   14/11/2016
Au secours, mon ordi est lent ! (2) : Je dégage l'antivirus à coup de pied
Dossier   05/11/2016
Au secours, mon ordi est lent ! (1) : les souris vertes à la rescousse
Le Petit Geste du Jour   23/10/2016
Le Petit Geste Du Jour : j'utilise le mode avion même à pied
Système   16/10/2016
L'ordinateur portable est-il plus écologique ?
Le Petit Geste du Jour   02/10/2016
Le Petit Geste Du Jour : je gère la durée de vie de ma batterie
Club de lecture   17/09/2016
Les souris vertes ont lu pour vous : l'âge des low tech, de Philippe Bihouix
Système   21/08/2016
J'apprends à gérer mes mots de passe
Le Petit Geste du Jour   08/08/2016
Le Petit Geste Du Jour : j'arrête d'inclure les messages quand je réponds
Polémiquons   30/07/2016
Ecole et numérique font-ils bon ménage ?
Le Petit Geste du Jour   19/07/2016
Le Petit Geste du Jour : j'arrête d'écrire mes mails en HTML
Chamois d"or   10/07/2016
Le saviez vous ? Il est possible d'être informaticien sous Windows sans se pendre
Messagerie   04/07/2016
L'incarnation du mal : la pièce jointe dans les mails
Le Petit Geste du Jour   26/06/2016
Le Petit Geste Du Jour : Je réduis la luminosité de mon écran
Divers   18/06/2016
Stop à l'imprimante jetable
Dossier   12/06/2016
Grandeurs du monde numérique (6) : Réseaux en folie
Le Petit Geste du Jour   05/06/2016
Le Petit Geste du Jour : j'éteins ma box quand je ne m'en sers pas
Le saviez-vous ?   31/05/2016
Le saviez-vous : Google n'est pas le seul moteur de recherche ?
Dossier   25/05/2016
Grandeurs du monde numérique (5) : Dans la jungle des écrans
Le Petit Geste du Jour   20/05/2016
Le Petit Geste du Jour : je mets mes sites favoris... en favoris
Le Petit Geste du Jour   15/05/2016
Le Petit Geste du Jour : je change la page de démarrage de mon navigateur
Dossier   14/05/2016
Grandeurs du monde numérique (4) : Les spectaculaires performances des jeux vidéos
Le saviez-vous ?   12/05/2016
Le saviez-vous : à quoi sert l'économiseur d'écran ?
Dossier   08/05/2016
Grandeurs du monde numérique (3) : Monsieur Herz mesure la solitude du processeur
Dossier   06/05/2016
Grandeurs du monde numérique (2) : Octets et compagnie, les rois du stockage
Dossier   05/05/2016
Grandeurs du monde numérique (1) : c'est gros, c'est petit ?
Divers   04/05/2016
Les souris partent à l'aventure


MP  Mighty Productions
> Blogs
> Des Souris Vertes
> Dossier
> La Programmation Responsable (3) : de déléguer la programmation tu éviteras
 
RSS       Mentions légales       Comms  Haut de la page  
◄ ►