Soyez fainéants !

Be Lazy! The greatest inefficiencies come from solving problems you will never have.

Cette phrase tirée des transparents d’une conférence donnée par Rasmus Lerdorf en janvier dernier, signifie à peu de choses près : Soyez fainéants ! Les plus grandes inefficacités viennent de la résolution de problèmes que vous n’aurez jamais.

Cette phrase à première vue provocatrice met, en fait, en lumière un problème très répandu chez les développeurs : la quête du code parfait qui va s’adapter à toutes les situations.

Entendons nous bien, je ne jette la pierre à personne; moi même, cela ne fait pas si longtemps que j’ai pris conscience du problème. Mon but est précisément de permettre à ceux qui y croient encore de comprendre plus tôt pourquoi cette quête est vaine et contre productive.

A première vue, écrire un code capable de gérer tous les cas est LA solution. Seulement en pratique, on s’apercoit très vite que cela n’est jamais possible car les besoins et les contextes changent et tous ces changements ne peuvent pas être prévus. De plus avec l’évolution de votre propre niveau de compétence, certains choix vous sembleront inappropriés et vous souhaiterez revenir dessus. Vous aurez ainsi passé un temps non négligeable sur du code qui n’aura finalement jamais servi.

La philosophie que prône ici Rasmus Lerdorf, et qui se rapproche fortement de celle de l’eXtreme Programming, est qu’il faut se limiter à coder le strict nécessaire. Ainsi, on diminue le volume du code, et donc le nombre de bugs potentiels, tout en évitant de perdre du temps à développer des parties qui ne serviront jamais.

Ce contenu a été publié dans PHP. Vous pouvez le mettre en favoris avec ce permalien.

6 réponses à Soyez fainéants !

  1. perrick dit :

    Attention tout de m?me : pour en avoir parler avec lui, Rasmus pr?cise bien que l’eXtremme Programming c’est tr?s exigeant quand c’est fait "by-the-book" : je ne pense pas qu’il soit un avocat de cette m?thodologie. Et puis XP va beaucoup plus loin que le seul principe YAGNI…

  2. Fabien dit :

    Je pense que m?me si l’on applique pas XP ? 100%, utiliser certaines des techniques et m?thodes propos? par XP ne sont jamais inutile. Comme par exemple le principe ?nonc? ici ou les tests unitaires ne sont jamais inutiles.

  3. C?dric dit :

    Mais appliquer tout XP en adaptant au contexte en cours donne vraiment de bons r?sultats. Ceci dit commencer par les tests, le remaniement et la simplicit? apporte d?j? pas mal en effet.
    Disons que au del? de XP, on parle de pratiques agiles.

  4. YoGi dit :

    "certains choix vous semblerons" -> "certains choix vous sembleront"

  5. JMF dit :

    YoGi> Merci, c’est corrig?. 🙂

  6. Vincent dit :

    Je suis tout ? fait d’accord sur le principe, mais il faut faire attention ? la mise en ?uvre.

    M?me si concevoir uniquement son code pour un but pr?cis est important et permet souvent de r?duire la taille du code, elle implique souvent des travaux de remaniements complexes sur lesquels il ne faut pas rechigner en cas de modifcations des besoins.

    Ce qui veut dire que face ? un changement de direction, il est souvent difficile de prendre la d?cision de casser ce que l’on vient de faire plut?t que d’y installer une verrue. Et ce genre de comportements am?ne toujours un d?veloppement ? d?g?n?rer.

    Il faut donc ?tre fain?ant lorsque l’on met en place une architecture, et un peu moins lorsqu’on la modifie. Surtout qu’un bon remaniment effectu? correctement am?ne toujours ? finalement gagner du temps m?me si la plupart des programmeurs croient le contraire.

Les commentaires sont fermés.