IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Humour Informatique Discussion :

Coder rapidement ou écrire du code de qualité ? Les deux approches ne servent à rien

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Par défaut Coder rapidement ou écrire du code de qualité ? Les deux approches ne servent à rien
    Coder rapidement ou écrire du code de qualité ?
    Les deux approches reviennent au même, selon un célèbre web-bédéiste



    XKCD est une célèbre bande-dessinée créée et publiée par Randall Munroe, un ancien consultant à la NASA, qui la définit comme un webcomic sarcastique qui parle de romance, de maths et de langage.

    Une planche publiée récemment sous forme d'organigramme algorithmique n'a d'autre prétention que celle de résumer, d'une manière extrêmement pessimiste, le métier de développeur.

    Les développeurs seraient, selon Munroe, éternellement confronté au dilemme : coder rapidement ou coder correctement.

    Ceux qui prennent la décision de "coder correctement" sont selon Munroe toujours dépassés par les événements, et quand leur travail arrive enfin à terme, les spécifications auront déjà changé. Les malheureux doivent donc tout jeter et reprendre depuis le début.

    Les autres (ceux qui choisissent de coder vite) finiraient, eux, immanquablement par produire une masse de « bidouilles et de code spaghetti ». Résultat, leur code subirait le même triste sort que celui de leurs confrères : être jeté et repris depuis le début.



    Bien entendu, cette planche exclut toute possibilité de juste milieu entre ces deux extrêmes.

    Il existe bien entendu des développeurs qui arrivent à produire du bon code dans les délais, sinon nous ne serions pas là pour en parler.


    Mais d'après vous ?

    Comment trouver le juste milieu pour développer vite tout en produisant du code correct ?
    Comment faire des concessions tout en étant consciencieux ?
    Y arrivez-vous plus avec l'expérience ? Ou pas du tout ?


    Source : XKCD.com

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut Mon mantra
    "Make It Work, Make It Right, Make It Fast", Kent Beck.

    1. "Make It Work" : Coder quelque chose qui est fonctionnel (implement)

    2. "Make It Right" : Reprendre le code pour le rendre clair (refactor)

    3. "Make It Fast" : Reprendre le code pour le rendre rapide (optimize)

    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 519
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    "Make It Work, Make It Right, Make It Fast", Kent Beck.

    1. "Make It Work" : Coder quelque chose qui est fonctionnel (implement)

    2. "Make It Right" : Reprendre le code pour le rendre clair (refactor)

    3. "Make It Fast" : Reprendre le code pour le rendre rapide (optimize)

    Il ne me semble pas qu’il soit question du même "fast", ici : celui de la bande dessinée semble plutôt s’appliquer au développement qu’au programme résultant.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 91
    Par défaut
    Des besoins clients qui n'évoluent pas, c'est un voeux pieux, donc autant se dire que cela n'existe pas. Et pas de projets sans clients, donc autant intégrer la fluctuation des besoins comme une contrainte de départ.

    Je vous conseille de passer un peu de temps à étudier les méthodes agiles. Ce n'est pas uniquement parce qu'on est un développeur "agile" que le code est produit rapidement et proprement, mais si le client et/ou MOA sont impliqués dans le processus, cela augmente les chances de se rapprocher du Graal: vite et bien.

    Il est certain que lorsqu'un donneur d'ordre espère que 100% du travail soit réalisé dans 70% du temps imparti avec des exigences fonctionnelles différentes encours de projet, il y a peu de chances que la MOE livre du travail de qualité dans les délais!

  5. #5
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Citation Envoyé par pseudocode
    "Make It Work, Make It Right, Make It Fast", Kent Beck.
    +1.

    Les développeurs seraient, selon Munroe, éternellement confronté au dilemme : coder rapidement ou coder correctement.

    Ceux qui prennent la décision de "coder correctement" sont selon Munroe toujours dépassés par les événements, et quand leur travail arrive enfin à terme, les spécifications auront déjà changé. Les malheureux doivent donc tout jeter et reprendre depuis le début.

    Les autres (ceux qui choisissent de coder vite) finiraient, eux, immanquablement par produire une masse de « bidouilles et de code spaghetti ». Résultat, leur code subirait le même triste sort que celui de leurs confrères : être jeté et repris depuis le début.
    Il existe des méthodes de gestion de projet pour éviter ces désagréments. XP (Scrum, etc) permettent de significativement réduire le risque que ce genre de mésaventures se produisent (même si elles ne l'annihilent pas). Pour moi, c'est une ânerie.

  6. #6
    Membre Expert Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Par défaut
    Je pense que la meilleure méthode reste celle là :



    C'est la méthodologie de la RACHE à découvrir ici : http://www.risacher.com/la-rache/ et qui est utilisée dans de très nombreux projets.

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour

    dans l'immense majorité des cas, celui (client, supérieur hiérarchique ou autre) qui vous confie une tâche de développement informatique n'a aucune idée de ce qu'il veut
    je dirais +1000. A tel point parfois qu'il arrive que cela soit le prestatire qui doive écrire le cahier des charges qu'il devra respecter. Véridique, cela a été le cas de mon dernier contrat. Enfin comme il me l'a dit : "c'est pas mon problème" et que "c'était à moi de faire mon boulot en lui détaillant ses besoins".
    A la question posée je dirais qu'il faut juste coder proprement en prévision des futures modifications, de manière à ce que la reprise du code soit la moins fastidieuse possible.

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 127
    Par défaut
    Citation Envoyé par Barsy Voir le message
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"
    Indiana Jones ?

  9. #9
    Membre très actif
    Inscrit en
    Juin 2009
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 219
    Par défaut
    Citation Envoyé par Barsy Voir le message
    Je pense que la meilleure méthode reste celle là :



    C'est la méthodologie de la RACHE à découvrir ici : http://www.risacher.com/la-rache/ et qui est utilisée dans de très nombreux projets.
    I like this

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Citation Envoyé par bleporini Voir le message
    (.../...)
    Je vous conseille de passer un peu de temps à étudier les méthodes agiles. Ce n'est pas uniquement parce qu'on est un développeur "agile" que le code est produit rapidement et proprement, mais si le client et/ou MOA sont impliqués dans le processus, cela augmente les chances de se rapprocher du Graal: vite et bien.
    (.../...)
    D'accord avec le reste, mais pour les méthodes agiles, je ne suis pas emballé(enfin, pas toujours). Tout simplement parceque l'important n'est pas la méthode, mais que le client ET la MOA soient impliqués. Quand le client suit le projet de près et répond aux questions(et en pose), ça peut être du waterfall à 18 mois, ça marche. Ca eut marché aussi en agile, mais pas parceque c'est de l'agile. Pour moi, le choix de l'agile est surtout intéréssant pour des projets ou on peut tester vite(tout ce qui comporte une interface, tout ce qui est batches quotidiens). Pour les monstres mensuels que je traite actuellement, ça n'aurait aucun sens.

  11. #11
    Membre chevronné Avatar de Mobius
    Profil pro
    none
    Inscrit en
    Avril 2005
    Messages
    463
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : none

    Informations forums :
    Inscription : Avril 2005
    Messages : 463
    Par défaut
    Citation Envoyé par bleporini Voir le message
    Je vous conseille de passer un peu de temps à étudier les méthodes agiles. Ce n'est pas uniquement parce qu'on est un développeur "agile" que le code est produit rapidement et proprement, mais si le client et/ou MOA sont impliqués dans le processus, cela augmente les chances de se rapprocher du Graal: vite et bien.
    Je pensais que les méthodes agiles c'était le contraire : voir le graal s'éloigner en perdant du temps.
    Expérience observé : Le client décide de passer aux méthode agile pour réduire les cycle de développement en ayant une qualité accrue. Il fait venir un expert agile expliquant à tout le monde comment faire. Après avoir écouté la grande messe, tout le monde met un maximum de bonne volonté, communique chaque matin sur le job de la journée. Il s'est révélé que ce qui devait prendre 5 minute chaque jour pouvait durée plusieurs heures. Le client, se rendant compte au fur et a mesure de l'avancé, peut donner de nouvelles directive (ou changer d'idée) encore plus souvent. Résultat des courses, on passe plus de temps en réunions (donc moins de temps de développement) et le travail est plus rapidement mis à la poubelle.

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par Mobius Voir le message
    Je pensais que les méthodes agiles c'était le contraire : voir le graal s'éloigner en perdant du temps.
    Expérience observé : Le client décide de passer aux méthode agile pour réduire les cycle de développement en ayant une qualité accrue. Il fait venir un expert agile expliquant à tout le monde comment faire. Après avoir écouté la grande messe, tout le monde met un maximum de bonne volonté, communique chaque matin sur le job de la journée. Il s'est révélé que ce qui devait prendre 5 minute chaque jour pouvait durée plusieurs heures. Le client, se rendant compte au fur et a mesure de l'avancé, peut donner de nouvelles directive (ou changer d'idée) encore plus souvent. Résultat des courses, on passe plus de temps en réunions (donc moins de temps de développement) et le travail est plus rapidement mis à la poubelle.
    De la bonne volonté et un daily meeting n'est pas suffisant pour combler une absence de gestion projet.

    Les methodes agiles mettent en oeuvre des cycles de développement complexes, nécessitant une grande rigueur dans la gestion du projet. C'est justement parce que le cadre du projet est très rigoureux qu'on peut se permettre de modifier le cahier des charges ou le contenu des itérations pendant le développement.

    Si déjà on a du mal avec un SDLC simple (waterfall, spiral, sawtooth), il faut éviter de plonger dans l'agile en espérant que ca va magiquement résoudre les problèmes. Enfin, c'est mon avis.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 614
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    "Make It Work, Make It Right, Make It Fast", Kent Beck.

    1. "Make It Work" : Coder quelque chose qui est fonctionnel (implement)

    2. "Make It Right" : Reprendre le code pour le rendre clair (refactor)

    3. "Make It Fast" : Reprendre le code pour le rendre rapide (optimize)

    Ça, c'est une jolie théorie, mais elle a le défaut que si elle n'est pas appliquée par le gestionnaire de projet (peu importe à quel niveau) plus accroché à ses graphs, elle ne dépasse pas l'étape 1. Après tout, pourquoi continuer à imputer sur quelque chose qui est fonctionnel. C'est fonctionnel, bien, c'est plié et on passe à la tache suivante. Au niveau du gestionnaire, ça avance (fast), au niveau du code, on génère du spaghetti à la bolognaise qui tâche...

  14. #14
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par martopioche Voir le message
    Après tout, pourquoi continuer à imputer sur quelque chose qui est fonctionnel. C'est fonctionnel, bien, c'est plié et on passe à la tache suivante. Au niveau du gestionnaire, ça avance (fast), au niveau du code, on génère du spaghetti à la bolognaise qui tâche...
    Ca avance vite... au debut seulement. Ca s'enlise au fur et à mesure, et les itérations deviennent de plus en plus longues et risquées.

    Au point souvent d'établir comme règle de "toucher au minimum" le code existant... et finir par n'avoir que deux choix possibles : "Ne plus rien toucher" ou "Tout jeter et refaire".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  15. #15
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut coder vite, et bien.
    simple, faire en sorte que les spécifications de l'appli ne changent pas toutes les 5 minutes..

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par eomer212 Voir le message
    simple, faire en sorte que les spécifications de l'appli ne changent pas toutes les 5 minutes..
    pure folie ou folie pure ? = )

    Sion j’avais pensé au triple D en lisant la news
    Do it yourself,
    Do it fast,
    Do not test

    On peut même rajouter
    Do it once again =)

    a+

  17. #17
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Bonjour à tous!

    Mon expérience professionnelle est la suivante: dans l'immense majorité des cas, celui (client, supérieur hiérarchique ou autre) qui vous confie une tâche de développement informatique n'a aucune idée de ce qu'il veut, et encore moins de ce qu'il est possible de réaliser. Il convient donc de procéder en deux étapes:
    1. Commencer par écrire un programme de manière raisonnablement propre, mais sans trop se soucier du cahier des charges, qui, de toute manière, est totalement incohérent.
    2. Lorsque c'est terminé, faire preuve d'un sens psychologique extrême pour persuader le client que c'est exactement ce qu'il a commandé.

    Vous pouvez me croire ou non, mais, dans la plupart des cas, ça marche. On pourrait évidemment envisager un cas critique, à savoir que le client soit compétent, mais c'est plutôt rare; de plus, dans ce cas, il aurait écrit son programme lui-même.

    Jean-Marc Blanc

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Bonjour à tous!

    Mon expérience professionnelle est la suivante: dans l'immense majorité des cas, celui (client, supérieur hiérarchique ou autre) qui vous confie une tâche de développement informatique n'a aucune idée de ce qu'il veut, et encore moins de ce qu'il est possible de réaliser. Il convient donc de procéder en deux étapes:
    1. Commencer par écrire un programme de manière raisonnablement propre, mais sans trop se soucier du cahier des charges, qui, de toute manière, est totalement incohérent.
    2. Lorsque c'est terminé, faire preuve d'un sens psychologique extrême pour persuader le client que c'est exactement ce qu'il a commandé.

    Vous pouvez me croire ou non, mais, dans la plupart des cas, ça marche. On pourrait évidemment envisager un cas critique, à savoir que le client soit compétent, mais c'est plutôt rare; de plus, dans ce cas, il aurait écrit son programme lui-même.

    Jean-Marc Blanc
    La méthode Gérard majax !

    Un classique de l'incompétent informaticien, ou du trop expérimenté,
    c'est selon ; )

    a+

  19. #19
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par kaymak Voir le message
    La méthode Gérard majax !


    Une variante du Reality distortion field.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  20. #20
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Bonjour à tous!

    Mon expérience professionnelle est la suivante: dans l'immense majorité des cas, celui (client, supérieur hiérarchique ou autre) qui vous confie une tâche de développement informatique n'a aucune idée de ce qu'il veut, et encore moins de ce qu'il est possible de réaliser. Il convient donc de procéder en deux étapes:
    1. Commencer par écrire un programme de manière raisonnablement propre, mais sans trop se soucier du cahier des charges, qui, de toute manière, est totalement incohérent.
    2. Lorsque c'est terminé, faire preuve d'un sens psychologique extrême pour persuader le client que c'est exactement ce qu'il a commandé.

    Vous pouvez me croire ou non, mais, dans la plupart des cas, ça marche. On pourrait évidemment envisager un cas critique, à savoir que le client soit compétent, mais c'est plutôt rare; de plus, dans ce cas, il aurait écrit son programme lui-même.

    Jean-Marc Blanc
    Pour le point 1, la méthode la plus sûre et la plus rentable n'est-elle pas de reservir ce qui a convenu à un client précédent ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2010, 18h07
  2. Réponses: 1
    Dernier message: 17/04/2007, 13h07
  3. Façon d'écrire votre code
    Par reptils dans le forum C
    Réponses: 6
    Dernier message: 03/03/2007, 17h20
  4. Réponses: 3
    Dernier message: 17/08/2006, 04h11
  5. [VBA Excel] Comment écrire un code dans le ThisWorkBook ?
    Par WebPac dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/05/2005, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo