De la légitimité de l'optimisation

 On a tous entendu parler certains types plus malins que tout le monde, ou lu leurs interventions sur des forums: ils se posent en "homme qui sait" pour décréter, sur un ton docte, que tel logiciel, tel site, telle appli ne sont pas optimisés...

Je me suis rendu compte qu'aujourd'hui, cette étape nécessaire de la programmation est  devenu une façon de percevoir le monde...

Petite réflexion perso qui vaut ce qu'elle vaut (et pas plus )

 

 


 

La plupart des codeurs du dimanche (genre moi) qui parlent d'optimisation le font comme s'il s'agissait là d'une sorte d'absolu, de perfection, vers laquelle tendre de toutes ses forces... 

Quand on y réfléchit posément, toutefois, il apparaît que l'optimisation n'est en rien une fin, mais un moyen: on optimise son code, son appli, sa maquette avec un objectif précis.

Aussi, parler d'optimisation comme le saint Graal de la prog sans aborder dans le même temps dans quel but on le fait, c'est un peu comme déclamer que la mytose cellulaire est mieux que la reproduction sexuée sans dire sur quel point de comparaison on se base: la mytose est plus simple mais le sexe est tout de même plus fun... 


La question qui me vient à l'esprit quand on me dit que mon code peut être optimisé (ce qui m'intéresse toujours au plus haut point) c'est: optimiser pour quoi faire ?

On peut optimiser son code pour:

  • qu'il soit plus rapide (mais on y perd peut-être en lisibilité)
  • qu'il soit plus lisible (mais il sera moins compact)
  • qu'il soit plus compact (mais à débugger ou à maintenir, bonjour)
  • qu'il soit plus léger,
  • qu'il soit plus élégant (mais ça marchait avant nom de dieu: touche à rien !)
  • qu'il soit plus facile à maintenir,
  • qu'il puisse être utilisé et compris par d'autres personnes de l'équipe sans provoquer de vomissements, diarrhées et conjonctivites,
  • qu'il s'intègre dans d'autres applis,
  • qu'il soit réutilisable,
  • qu'il ne prenne pas trois jours de développement,
  • ...

Tous ces objectifs sont légitimes mais parfois incompatibles entre eux... et c'est là tout le problème quand cette forme de pensée est appliquée en dehors de l'info.


 

Depuis plusieurs années, on voit de plus en plus les techniques "manageriales",  autrefois réservées au monde de l'entreprise, venir contaminer l'espace public et la vie de tous: ainsi on parle partout de benchmarking, de management, de ressources humaines, d'optimisation des ressources et des pratiques etc...

Et voilà que ce qui s'avérait une bonne chose en info devient la justification de toutes les bassesses: la fin justifie les moyens...

L'optimisation d'un hôpital, c'est de le rendre rentable... Qui a décrété qu'un service public devait l'être ?

Un service public, utilisé de façon raisonnée, n'a pas à être rentable: il est là pour fournir à tous un service gratuit, égal et minimum garanti... Il fait partie de la res publica, le bien commun.

Quand un cabinet de conseil en ressources humaines vient expliquer comment gérer une entreprise et l'optimiser, qui lui demande sur quels critères ?

Gagner plus d'argent ? Etre plus productifs ? Dégager plus de bénéfices pour les actionnaires ? On peut en justifier des injustices avec ces objectifs ...

Et l'objectif humain, alors ? 

 

Quand la direction d'une banque fait du benchmarking pour comparer les résultats de chaque bureau et qu'elle cloue au pilori les établissement les moins "efficaces" ? Elle pousse parfois au suicide ou à la maladie les gens qui y travaillent ou qui en sont responsables... Et l'objectif humain là dedans ?

Quand on flique les ouvriers d'une usine ? quand on harcèle les vendeuses d'un magasin un chrono et une calculatrice à la main ?

Où est passé l'objectif humain ?

 

 

 

 

Quand des agences de notation d'un autre continent décident de qui est fiable et qui ne l'est pas ? (dirigeant au passage la politique des pays et les poussant encore davantage vers le précipice...) 

Où est passé l'objectif humain ?!

Jusqu'où va-t-on optimiser ? Quelles absurdités ou quelles inhumanités va-t-on justifier au nom de cette vision utilitariste du monde ...? Et cette façon de concevoir le monde s'étend sans vergogne à la politique...


Naïvement, je croyais que la société était au service du développement humain avant de me rendre compte que tout le monde ne donne pas le même sens au mot développement.

Beurk...

❝ 7 commentaires ❞

1  JeromeJ le

Ahaha tu te tortures

Selon moi, déjà, chaque "type d'optimisation" ne se vaut pas, certains prévalent d'autres (mais ça reste "en général" car faut toujours voir au cas par cas).

Globalement, si tu peux optimiser un pour un autre, alors c'est la "règle" de dessus qui est utilisée : qu'est-ce qui compte le plus ? Tout en évitant de tomber dans certains extrêmes, l'optimisation c'est pas toujours plus ou toujours moins, c'est parfois un juste milieu.

Mais bon, c'est jamais évident à juger, faut savoir pas mal de chose (côté pratique, côté technique, etc) et à défaut parfois on compare naïvement des choses pas comparables ne sachant pas toujours leurs impacts réels. (Par exemple, le nombre de ligne)

Mais le top, c'est quand même si t'arrives à faire des améliorations qui n'apportent que du plus, si tu vois ce que je veux dire :D

Après personnellement, j'évite de trop tirer vers le bas. Un bon programmeur doit savoir utiliser ses outils (à savoir, entre autres, savoir utiliser la doc du langage dans lequel on code est impératif), ne pas avoir peur de chercher des solutions/explications sur le net (c'est blindé blindé; du coup faut aussi savoir faire de bonnes recherches et/ou connaitre les bons coins) pis moi j'explique volontiers mes codes (certains sont parfois dur à comprendre pour le premier venu car "optimisés" par la connaissance du langage, nos langages sont souvent plus puissants que la base des programmeurs ne le sait, ça serait dommage de s'en priver, surtout que ça ne rajoute pas toujours en complexité)

Un très bon "guideline" pour la programmation est la philosophie pythonique qui peut facilement s'appliquer à beaucoup d'autres langages: elle est très facilement accessible via l'IDE sous forme d'un easter egg. En effet il suffit de taper import this pour voir s'afficher le dit PEP (un PEP est un "guide Python") en bon anglais :

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

(Tu pensais pas y échapper hein ? :p)

Sinon pour en revenir à ton analyse plus philosophie et moins technique, je suis d'accord avec toi que niveau "optimisation" on en voit de toutes les couleurs, des vertes et des pas mûres, un peu comme si le mot était devenu tendance, "hype".

Du coup, il est torturé, maltraité et, comme tu l'as si bien souligné, parfois même extrapoler là où il ne devrait pas l'être pour justifier tout et n'importe quoi (snif).

Mais … là, je ne pense que ça soit vraiment l'"optimisation" (ou la tentative de) qu'il faut blâmer, mais la/les mentalités derrières :/

Exemple (just comme ça, totalement au hasard, ): Always more money $$ … même au désavantage du reste.

(Je sais que je redis beaucoup de trucs que tu viens juste de dire mais tant que tu m'en veux pas, ça va :p)

Mais que la lutte contre le trop d'optimisation ne justifie pas le gaspillage non plus hein hehe

 
2  Bronco le


oui, je connaissais la litanie de Tim Peters et non, je n'imaginais pas une seconde y échapper
J'aime beaucoup optimiser le code (des fois c'est même reprendre à zéro un vieux trucs qui pique les yeux ) et ce n'est pas un billet d'humeur à l'encontre de l'optimisation, mais plutôt à l'encontre des objectifs qu'on se fixe pour optimiser de façon assez inhumaine et cynique ce qui devrait être au service de l'humain et qui en devient le bourreau...

 
3  Bronco le

Et oui, je vois bien de quoi tu parles! ça va !!!!

 
4  Valentin le

J'ai toujours considéré l'optimisation (en prog) comme un jeu.
Mais un jeu qui peut être dangereux; quand notre intelligence (habileté au jeu) dépasse notre entendement.
Quand tu relis quelques temps plus tard, et que tu te demande: " P...n, C'est moi qui ai écrit ça ???...Et: Comment-est-ce-que-c'est-possible-que-ça-marche ???..."

 
5  Bronco le

HINHIN +1
surtout du vieux code d'avant que tu ne découvres une fonction qui fait ça mieux en une commande

 
6  jerrywham le

Juste une parenthèse concernant l'hôpital. On veut nous faire croire qu'il n'est pas rentable (ce qui n'est pas son but initial) et que la sécu se casse la gueule uniquement pour en dégouter la population et nous faire accepter que la seule alternative est l'assurance privée (qui attend impatiemment d'avoir le juteux marché).

C'est ça l'optimisation, la vraie. Utiliser des ressources publiques pour des intérêts privés. Ça coûte rien mais ça rapporte gros.

PS : bon choix le moteur ;-)

 
7  Bronco le

+1 ;)

 

Fil RSS des commentaires de cet article

✍ Écrire un commentaire

Quelle est la deuxième lettre du mot plhz ?