Forum Programmation.autre Rôle du développeur et son "cœur de métier"

Posté par (page perso) . Licence CC by-sa
Tags : aucun
4
31
oct.
2013

Bonjour,

j'ai un ami qui est développeur. Il a suivi des formations, et a quelques années d'expériences.

Lorsque je lui parle d'adapter un logiciel à un besoin, il dit que c'est de la bidouille, que ce n'est pas propre.
Il préfère tout coder "from scratch" pour coller au plus près des besoins du client et de son métier (celui du client).

Quand je lui parle de logiciels libres, dont on peut lire le code pour voir quelles ont été les problèmes auxquels les auteurs ont du faire face (on peut parfois le lire dans les commentaires accompagnant le code), il dit que lire le code de quelqu'un d'autre c'est chiant, et que jamais il n'a entendu ça dans ses formations et son entourage. Pour lui, personne ne relit le code.

Il précise en outre que son "cœur de métier", celui de développeur, c'est de penser à l'architecture, puis de coder. Au grand jamais d'adapter ou d'adapter un logiciel "tout fait".

Qu'en pensez-vous?
Qu'est ce que vous auriez comme arguments pour contrer ça?

Dans mon entourage, c'est tout l'inverse, mais c'est une question de culture. On apprends beaucoup à lire du code source, rien qu'avec les commentaires.

Merci
G

  • # la différence entre les vrais et les faux

    Posté par . Évalué à 4.

    Bonjour,

    Je préfère prévenir : mes propos ci-après n'engagent personne sauf moi.

    J'ai rencontré pas mal ce genre de caricatures de "développeurs" du temps béni ou j’étais programmeur. Caricatures car un développeur dit observer, analyser, concevoir et enfin développer.
    Il est vrai que développer "from scratch" est plus sympa et moins exigeant intellectuellement
    Les SSII font de la maintenance ou de l’évolution d'applications et une refonte complète du code demanderait pas mal de temps et de moyens. D'où des contraintes techniques.
    Si le développeur ne veut ou ne peut s'y adapter, alors il devrait changer de job.

    PS: J'ai arrêté la prog devant le fout*ge de tête des clients et des utilisateurs finaux : la rentabilité est normale, le travail bâclé et/ou la surfacturation est insupportable.

    tant va la cruche à l'eau qu'à la fin elle t'explose en pleine tête

    • [^] # Re: la différence entre les vrais et les faux

      Posté par . Évalué à 1.

      a propos de surfacturation, compilé/porter 2 lib sous win 7, exemple précis et vécu : zlib et libssl ca peut couter 10k€ ?

      merci de vos remarque

      • [^] # Re: la différence entre les vrais et les faux

        Posté par (page perso) . Évalué à 2.

        En restant grossier (dans les chiffres hein !), mais en restant dans ce qui se fait habituellement. à 500€/j, 10k€, cela fait donc 20 jours de boulot.

        zlib est déjà disponible pour windows, et la dll est même directement téléchargeable sur le site officiel (de mémoire, arrêtez moi si je me trompe).

        Il reste donc ssl. Suite à une recherche rapide, j'ai trouvé des binaires pour ssl (compilés avec cygwin, mingw et même visual studio).

        Donc, 20 jours de boulot pour juste la compilation, oui, cela me parait complètement démesuré dans ce cas là. Mais reste à voir ce qu'inclue exactement les 10k€ pour pouvoir être plus catégorique.

  • # analogie foireuse

    Posté par . Évalué à 5.

    Lorsque je lui parle d'adapter un logiciel à un besoin, il dit que c'est de la bidouille, que ce n'est pas propre.

    recoder 10 fois la même chose c'est propre ? Mieux vaux faire sa propre implémentation nouvelle (et forcément buggée) que d'utiliser des briques stables, bien testées ?

    Il précise en outre que son "cœur de métier", celui de développeur, c'est de penser à l'architecture, puis de coder. Au grand jamais d'adapter ou d'adapter un logiciel "tout fait".

    Et le cœur de métier d'un maçon c'est de faire des maisons neuves, pas de faire de la restauration/adaptation ??

    Attention, je ne suis pas développeur.

    • [^] # Re: analogie foireuse

      Posté par . Évalué à 0.

      Affirmatif :

      pourquoi ont été créé les langages orientés objets…

      tant va la cruche à l'eau qu'à la fin elle t'explose en pleine tête

  • # Bug confirmé

    Posté par . Évalué à 6.

    D'après ce portrait j'ai l'impression que ton ami est plutôt arrogant, du style de développeur gourou auto-proclamé dont on voit passer le code sur des sites comme thedailywtf. Je pense que c'est nocif pour lui, pour ceux avec qui il travaille, et pour ses clients.

    Il a l'air d'être un puriste qui aime le code bien fait, c'est une qualité. Sauf quand c'est poussé à l'extrême et que l'on n'accepte que son propre code qui suit sa propre définition de beau code (et qui n'est pas forcément la définition qu'ont les autres).

    A mon sens personne ne sait tout mieux que tout le monde et il y a toujours à apprendre de ses pairs, surtout dans un champ qui évolue rapidement comme la programmation. S'appuyer et s'inspirer du travail des autres, c'est à la fois gagner du temps et progresser personnellement. Et c'est valable dans tous les domaines.

    J'ai du mal à croire que quelqu'un puisse maîtriser parfaitement tous les aspects d'une application complexe au point de pouvoir tout écrire from scratch de manière tellement robuste qu'elle ne contienne aucun des bugs et failles corrigés par les projets existants au cours de leur histoire.

    Coder from scratch se rapproche pour moi plus de la bidouille et de l'exercice que du métier de développeur. Forcément le métier de développeur comporte des contraintes, il demande à faire des compromis, à travailler avec du code pas toujours conforme à ses standards d'élégance, à coder avec d'autres développeurs qui n'ont pas la même vision des choses, à lire et relire du code, à respecter des délais et des budgets.

    Comme dans tous les autres domaines la pureté n'existe pas, mais je pense que le meilleur moyen de pousser les choses vers l'avant est de créer et partager du code de qualité qui peut être réutilisé facilement. Et qu'il n'est pas possible de produire du code de qualité sans lire, s'inspirer et réutiliser le code des autres. Il serait dommage de ne pas accepter les inévitables contraintes au nom d'une vision personnelle et puriste.

  • # ça dépend

    Posté par (page perso) . Évalué à 4.

    Je connais des gens très bien qui ont cette approche et dans certains cas ça a du sens. Si tu dois concevoir un système « entier » relativement monolithique qui n'a pas vraiment à s'intégrer avec autre chose, ça me semble pas une mauvaise idée de tout faire from scratch. Cependant, dès que tu dois avoir un minimum de compatibilité ou intégration, il est souvent préférable de repartir de quelque chose d'existant.

    Il semble effectivement que beaucoup de développeurs préfèrent écrire du nouveau code plutôt que de maintenir/modifier du code existant mais je pense que c'est généralement parce que la vaste majorité du code existant est passablement pourri. Du coup, écrire encore plus de code pourri n'aide pas vraiment non plus.

    Je pense que lire du code tiers est assez important pour se faire une idée de ce qu'est du code {in,}{maintenable,compréhensible} et apprendre des {erreurs,succès} des autres. Mais effectivement, c'est souvent plus difficile que d'écrire un truc from scratch.

    Voire aussi : http://en.wikipedia.org/wiki/Code_smell

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # probleme de temps/argent

    Posté par . Évalué à 2.

    combien de temps va passer ton ami à chercher ou il doit modifier l'outil et tester qu'il na pas introduit un peu plus loin quelques part dans un process
    par rapport à combien de temps il va passer à recoder de lui meme l'outil en entier.

    sur certains outils un peu complexe, la question peut se poser.
    ici on a eu un outil avec un framework maison, recuperer d'un vieux projet, etc
    bah reprendre le code est une vraie plaie,

    pour tout dire, c'est du php, qui genere des pages html et qui plutot que de faire un "simple"

    echo "<table><tr><td>...</td></tr></table>";

    va faire un

    open_table(1line,2col);
    create_line(xxxx);
    create_col(yyy);
    create_col(zzz);
    end_line();
    end_table();

    idem evidemment pour creer un formulaire, etc

    du coup rependre le code ou refaire de zero, quand on a du refaire un site faisant un truc similaire,
    on s'est bien posé la question

  • # des fois la taille ça compte…

    Posté par (page perso) . Évalué à 3.

    il dit que lire le code de quelqu'un d'autre c'est chiant, et que jamais il n'a entendu ça dans ses formations et son entourage. Pour lui, personne ne relit le code.
    

    Oui c'est chiant, mais beaucoup de personnes le font. Déjà il y a des personnes qui lisent plus ou moins chaque patch pour voir si il n'y a pas eu une régression fonctionnelle grossière ou une faille potentielle de créée, mais aussi pour les "bonnes pratiques" qui permettent de progresser (quand on se prend une remarque deux/trois fois ça commence à rentrer) Pour ces cas je pensais plus à des logiciels libre, mais même au travail, quand on a des stagiaires on fait de la relecture de code une fois par semaine avec eux, ça dure 1h mais c'est bien pour tout le monde.

    Après, pour savoir si c'est mieux d'adapter ou de tout recréer… ça dépend de la distance entre le code existant et le nouveau code. En général plus le projet est petit et mieux c'est de tout recréer.

    Bref, pour des petits projets de merde tout seul : on fait ce qu'on aime et donc on recrée un maximum de choses, pour tout le reste on reprend du code existant.

  • # troll

    Posté par . Évalué à 1.

    Si c'est codé en perl, il vaut mieux recommencer from scratch
    Si c'est codé en python, il vaut mieux adapter le code existant

    Je ne suis plus là -->[]

    • [^] # Re: troll

      Posté par (page perso) . Évalué à 4.

      Si c'est codé en perl, il vaut mieux recommencer from scratch

      Toi aussi tu reportes le trolldi à la veille quand vendredi est férié ?

      It's a fez. I wear a fez now. Fezes are cool !

  • # Tout dépend de ce que l'on appelle "from scratch"

    Posté par . Évalué à 3.

    Pour certains, "from scratch", c'est juste prendre un framework, et dériver quelques classes déjà toutes faites pour répondre au besoin métier. De plus il est très rare que le code et les commentaires te donnent une idée précise de l'architecture logicielle. Donc dans certains cas, tout recoder peut se justifier.

    Maintenant, comme dit plus haut, tout dépend de ou on part et des outils que l'on a. Et si le "développeur" n'a appris dans sa formation qu'à utiliser un framework, dans ce cas je comprends sa réponse.

  • # Retour d'expérience

    Posté par (page perso) . Évalué à 5.

    La réponse à cette question qui semble simple est en réalité relativement…complexe !

    Cela dépend le type de logiciel que développe ton ami. Et quand je dis type, je pense surtout à la taille.

    Maintenant, dans le cadre de mon activité professionnel, j'ai eu à plusieurs reprise l'opportunité d'utiliser des bibliothèques libres ou open source (je sépare volontairement les deux, vous verrez pourquoi ensuite).

    Premier cas : Diagram.Net (http://www.dalssoft.com/diagram/)
    Il s'agit d'une bibliothèque permettant la réalisation de diagramme. C'est une bibliothèque .Net que j'ai eu à intégrer et à adapter dans deux de mes projets. Le temps d'intégration et d'adaptation à chaque fois (correction de bugs inclus) : 2j. Si j'avais du faire la bibliothèque moi-même et en prenant le temps de prendre papier et crayon avant de me lancer dans les développements, je pense que cela m'aurait pris 10j (limite basse). Bref, le gain est de suite évident pour moi.

    Deuxième cas : Telerik (http://www.telerik.com)
    Telerik est une bibliothèque open source (d'où ma séparation tout à l'heure), regroupant un ensemble de composants graphiques, que ce soit pour le web ou les clients lourds. Toujours dans le cadre d'un projet, j'ai du modifier un composant fourni par la bibliothèque (RadScheduler pour être précis), afin d'y intégrer les besoins du client. RadScheduler faisait 95% du boulot de base, il me restait 5% à implémenter. Temps passé pour intégration et modification : 3j. Si j'avais du tout faire, je ne sais pas combien de temps cela m'aurait pris, mais beaucoup plus que 3 jours (à la louche, au mini, 1 mois de boulot).

    Pour moi, l'argument que j'aurais à te donner par rapport à ces deux exemples, c'est le gain de temps. Gain de temps au développement (exemples chiffrés que j'ai donné), mais également gain de temps en terme de correction de bugs ! Et là, je n'ai pas de chiffrage à proposer, mais je n'ai aucun doute quant au gain.

    Ensuite, quand ton ami dit que le rôle du développeur est de penser architecture puis de développer, je vais dire que je suis d'accord avec lui (à condition de prendre "développeur" dans un sens très large). Mais avant de penser architecture, je pense analyse des besoins. Et si un logiciel existant répond à 95% aux besoins d'un client, je l'étudie un minimum pour étudier son architecture et essayer de voir ce qui sera le plus pertinent entre adapter et redévelopper. Il n'y a pas de réponse toute faite, puisque cela dépend complètement des projets. Les 5% peuvent très bien s'inclure facilement dans l'existant ou au contraire nécessiter de revoir l'architecture de l'application.

  • # architecte et développeur

    Posté par (page perso) . Évalué à 2.

    Il précise en outre que son "cœur de métier", celui de développeur, c'est de penser à l'architecture, puis de coder. Au grand jamais d'adapter ou d'adapter un logiciel "tout fait".

    Celui qui pense à l'architecture, c'est l'architecte.
    Celui qui code, c'est le développeur.

    Et ça dépend ce qu'il appelle "adapter" un logiciel tout fait. Enfin bon, les cas où on choisit entre développer quelque chose de nouveau ou réutiliser quelque chose d'existant, ça a assez été détaillé ci-dessus :)

    J'espère juste qu'il ne fait pas du "from scratch" à 100% : il y a des milliers de bibliothèques qui répondent à des milliers de problématiques, il faut au maximum utiliser ces bibliothèques.

    https://www.domotego.com/ | https://www.maccagnoni.eu/ | https://www.smm-informatique.fr/

    • [^] # Re: architecte et développeur

      Posté par (page perso) . Évalué à 4.

      J'espère juste qu'il ne fait pas du "from scratch" à 100% : il y a des milliers de bibliothèques qui répondent à des milliers de problématiques, il faut au maximum utiliser ces bibliothèques.

      Ouais, parce que recoder un parseur XML sous prétexte qu'il préfère tout maîtriser plutôt que d'utiliser libxml, bon, hein :)

      It's a fez. I wear a fez now. Fezes are cool !

      • [^] # Re: architecte et développeur

        Posté par (page perso) . Évalué à 4.

        Tu oublie le recodage du compilateur.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.