p
u
b
l
i
c
i
t
é

Quel est le code dont vous êtes le plus fier ?
Pourquoi l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ?

Le , par Gordon Fowler, Expert Confirmé Sénior
Récemment, un ami développeur me confiait à la terrasse d'un café la fierté qu'il avait ressenti d'avoir réalisé son premier code avec sa fille.

Le programme n'avait rien de complexe ni de révolutionnaire, mais de voir son enfant créer une mini-application (un jeu très basique en Java) lui avait procuré une joie immense et beaucoup plus de satisfaction que lors de ses habituelles réalisations complexes et sur mesure pour des services financiers ou des opérations de reportings de grand envergure.

Cette petite anecdote montre bien que le développement n'est pas uniquement affaire de complexité ou de performance du code.

Souvent, la fierté vient d'une réussite modeste (comme un premier code fait tout seul), commune mais difficile (comme tenir un délai) ou de la « beauté » (forcément subjective) du résultat.

Un membre de la rédaction de Développez (Idelways pour ne pas le citer) expliquait ainsi que le code dont il était le plus fière était « un middleware fait pour assurer l’interopérabilité entre deux systèmes de gestion d'un parc de réparation radicalement différents, mais qui devaient interagir à tout prix. C'était super car ça n'a pris après refactoring qu'une table de correspondance et 20 lignes de code. C'était élégant, efficace et ça pouvait être lu en un seul écran ».

Source de fierté professionnelle supplémentaire, cette solution est en production, sans faillir, depuis bientôt 5 ans.

Quelquefois, la fierté vient du fait d'être arrivé à dépasser les contraintes techniques, comme les limitations du réseau. Et de le faire dans des délais courts.

« Le code source dont je suis le plus fier portait sur l’implémentation d’une méthode de décompression/compression des transactions d’un web service développé en C#. Après pas mal de recherches, nous avons décidé d’utiliser la bibliothèque C # open source CsharpZipLib qui a permis d’implémenter cela assez rapidement », raconte Hinault Romaric, lui aussi membre de la rédaction de Développez. « Ce code a été écrit dans le cadre du développement d’un service web dont les données devaient être échangées sous un format XML. La quantité de données transmises dans une requête était parfois très importante, et on avait des temps de réponse assez longs et une surcharge assez importante de la bande passante. Le résultat a été très satisfaisant. Avec les très bas débits que nous avions dans cette sous région du Cameroun, c'était un facteur très important pour la réussite du projet ».

Trois exemples parmi d'autres qui rappellent aussi que le métier de développeur possède un avantage sur beaucoup d'autres : il est affaire de créativité.

Et par conséquent, de fiertés potentielles.

Et vous, quel est le code dont vous êtes le plus fier ? Dans quel cadre l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Zirak Zirak - Expert Confirmé http://www.developpez.com
le 28/08/2015 à 12:01
Joli déterrage ^^

Bon du coup j'en profite, perso comme certains, les choses dont je suis le plus "fier" ne sont pas forcément très complexe, mais elles sont fonctionnelles et ont fait (et font toujours) gagner un temps fou (et donc économiser l'argent en conséquences) à plusieurs services de l'entreprise où je travaille.

Comme par exemple :

- un outil de chiffrage automatisé qui nous a permis de déporter la réalisation de nos devis d'un service en interne directement chez nos franchisés qui maintenant les réalisent eux-mêmes (pour info, nous fabriquons des maisons, donc le devis va du choix du modèle même de la maison, à l'ajout / modification de garage, le choix des menuiseries, etc etc)

- la mise en place d'une gestion des stocks via QR-Code / douchette pour éviter à nos opérateurs de devoir saisir manuellement chaque mouvement d'entrée ou de sortie de matériaux manuellement dans notre ERP (et qui accessoirement, via un autre outil, nous permet maintenant de réaliser les inventaires généraux annuels en à peine 3/4h grand maximum à 5/6 personnes, là où l'on mettait entre 15 et 20h il y a encore 3/4 ans de cela avec plus de 15 personnes).
Avatar de chanyslas chanyslas - Membre confirmé http://www.developpez.com
le 28/08/2015 à 12:32
Comme beaucoup, ce sont des programmes qui ne servent à rien qui m'ont rendu le plus fier.
Et certainement pas ceux que je réalise en tant que professionnel.
En ce moment, je code un logger d'activités Back/Front, pour que les collaborateurs de notre client puissent se dénoncer les uns les autres et se renvoyer la balle des responsabilités quant aux modifications qu'ils apporteront aux données principales de l'application de production. Le truc loggue aussi les activités de leur propres clients, quand ils modifient les données de leur compte.
J'ai appelé le module Big Brother, accessible depuis le Back, Menu "Administration" -> "Big Brother", le client ne semble pas s'en offusquer.

Le premier code est un BIOS et un éditeur/assembleur/désassembleur écrit en ASM 65C02.
Je venais d’acquérir la nouvelle puce pour mon APPLE IIe.
Malheureusement, le BIOS n'était pas mis à jour, les instructions du 65C02 n'étaient pas pleinement utilisables avec mes anciens programmes.
Par accident, je suis tombé sur un point d'entrée du BIOS puis de l'assembleur que j’utilisais.
J'ai pu désassembler le tout et réécrire les portions de ces deux programmes (BIOS/Assembleur) pour les rendre compatibles avec la nouvelle puce.
Et me faire ma propre disquette de démarrage contenant mon BIOS et assembleur modifié.
On commençait à voir apparaitre les fenêtres et contrôles par souris, que j'avais commencé à intégrer dans l'éditeur/assembleur.
J'étais adolescent et tellement passionné par ce que je faisais que j'en oubliais presque de manger.

Le second code fut une version de Corewar en C/ASM.
Pendant mon cursus, j’entends parler des premiers virus et d'un programme qui serait à l'origine de cette perversion, mais en milieu sain. Corewar.
Et coup de chance, on reçoit comme projet d'étude d'en faire un. Je me jette sur la documentation publiés par leur auteurs dans deux articles de la revue Science, et retrouvés dans la bibliothèque de Beaubourg, qui décrit le langage Red Code et sa version améliorée (avec l'instruction SPL).
Et je me jette à corps perdu dans implémentation de l'assembleur de Red Code, du scheduler et du visualiseur de l'anneau mémoire.
J'ai passé une partie de cette année d'étude devant l'écran à regarder des programmes s'entretuer dans un anneau de mémoire circulaire.
Avatar de Saverok Saverok - Expert Confirmé Sénior http://www.developpez.com
le 28/08/2015 à 16:33
Citation Envoyé par chanyslas Voir le message
En ce moment, je code un logger d'activités Back/Front, pour que les collaborateurs de notre client puissent se dénoncer les uns les autres et se renvoyer la balle des responsabilités quant aux modifications qu'ils apporteront aux données principales de l'application de production. Le truc loggue aussi les activités de leur propres clients, quand ils modifient les données de leur compte.
J'ai appelé le module Big Brother, accessible depuis le Back, Menu "Administration" -> "Big Brother", le client ne semble pas s'en offusquer.
Ca fait un big HS par rapport au topic mais je ne comprends pas en quoi cela te mets à l'aise...
Loguer l'activité d'une application est le B-A-BA de l'informatique.

Personnellement, dans tous les programmes que je fais, j'ai toujours les 4 colonnes "date_creation", "user_creation", "date_update", "user_update".
Et si le besoin se fait sentir, j'ai une table d'historique.

Je dirai même que c'est une grande avancée de l'informatique que de pouvoir permettre ça.
Ton OS fait ça en permanence en te permettant de faire des CTRL-Z et CTRL-Y, par exemple.
Avatar de chanyslas chanyslas - Membre confirmé http://www.developpez.com
le 28/08/2015 à 17:42
Citation Envoyé par Saverok Voir le message
Ca fait un big HS par rapport au topic mais je ne comprends pas en quoi cela te mets à l'aise...
Loguer l'activité d'une application est le B-A-BA de l'informatique.

Personnellement, dans tous les programmes que je fais, j'ai toujours les 4 colonnes "date_creation", "user_creation", "date_update", "user_update".
Et si le besoin se fait sentir, j'ai une table d'historique.

Je dirai même que c'est une grande avancée de l'informatique que de pouvoir permettre ça.
Ton OS fait ça en permanence en te permettant de faire des CTRL-Z et CTRL-Y, par exemple.
Je repondais à la question "de quel code êtes vous le plus fier ?" = "Certainement pas ce que je fais au taff."
Je ne vois pas en quoi comparer le travail que je fais actuellement au code que je faisais avant hors études/travail, pour expliquer que je suis plus fier du travail qui finalement ne sert pas à grand chose que du travail qu'on me demande de faire dans mon parcours professionnel.
Vous si.

Vous portez un jugement sans connaitre le contexte. De fait, votre intervention est, elle bien hors sujet. Posez des questions avant d'intervenir pour dire n'importe quoi..
L'application sur laquelle je travaille dispose dejà d'environ 200 logguers activables pour la majorité des activités de l'application :
- activité général des composants des serveurs et de l'application
- connexions des clients et parcours des clients,
- connexion et requêtes en base,
- activité de la couche ORM
- activité des web services,
- activité des moteurs de recherches,
- activités des jobs recurrents,
- activité des rewrite d'url,
- activité des systèmes de paiements.
- activité des services de mailing
et j'en passe.
Plus tous les trackers JS qu'ils se sont collés eux mêmes dans l'application.
On a déjà augmenté le monitoring avec une vingtaine de sondes sur des activités spécifiques de l'application qui n'étaient pas couverts.
Il y a techniquement largement de quoi couvrir l'ensemble des activités de l'application sans en plus avoir besoin de savoir quand quelqu'un modifie une donnée.
On est clairement pas en train de me faire développer un module qui va augmenter la productivité ou le confort de travail des collaborateurs du client.

Alors venir m'expliquer que votre application possède 4 colonnes. J'en ri encore.
Ctrl-Z ? Vous confondez historique d'action et tracage d'activité.
Je ne sais pas où vous avez vu un système d'édition qui se base sur des logs d'activité pour annuler des actions utilisateurs.
Vous ce n'est pas du HS, c'est clairement du grand n'importe quoi.

Merci de m'apprendre que Windows base son système d'édition et d'annulation des actions utilisateur, dans Word et Notepad, sur des logs d'activités.
J'en sors grandi, du coup.
Avatar de Saverok Saverok - Expert Confirmé Sénior http://www.developpez.com
le 31/08/2015 à 13:36
Citation Envoyé par chanyslas Voir le message
Vous portez un jugement sans connaitre le contexte. De fait, votre intervention est, elle bien hors sujet. Posez des questions avant d'intervenir pour dire n'importe quoi..
Pour commencer, on baisse d'un ton svp.
Je ne porte aucun jugement, bien au contraire, je demande un complément d'information pour connaître le contexte qui n'est tjrs pas précisé, dit en passant

Ensuite, savoir "quand quelqu'un modifie une donnée" est une information extrêmement importance pour l'analyse d'un bug ou d'une situation.
Par exemple, une donnée erronée est saisie dans un référentiel via tel canal.
Savoir l'identifier permet de savoir si c'est le canal qui n'est pas à jour ou l'API d'accès au référentiel utilisé par ce canal, etc.

Ou encore, connaître l'historique de modification des coordonnées d'un client peut avoir du sens pour du scoring fraude, par exemple.
Un client qui change son adresse de livraison ou ses coordonnées de paiement à chaque commande peut être considéré comme suspect, par exemple.
Du coup, avoir l'historique de la modification de la donnée prend tout son sens.
Avatar de chanyslas chanyslas - Membre confirmé http://www.developpez.com
le 01/09/2015 à 9:58
Alors changez de ton et de discours ! Remontez le fil de discussion, vous verrez que je me suis contenté de répondre à la question, et que vous vous n’êtes intervenu que pour perturber la discussion avec vos propos incohérents. Je viens sur ces forums pour lire des actualités et tenter d’aider d’autre coreligionnaires, pas pour me faire troller par les habitués des comptoirs du forum. Alors je vais le dire avec des mots simples, « Foutez moi la paix ! ».
La moindre des choses quand vous intervenez, c’est de ne pas prendre un ton condescendant pour affirmer n’importe quoi, et si quelque chose ne vous plaît pas, de le signaler avec politesse. C’est le B-A-BA de l’éducation.
En quelques phrases, vous affirmez le contraire de ce que vous dites, et qui pour faire court, vous mentez, en plus de dire n’importe quoi. Quand on demande une information ou « un complément d'information », on utilise une forme interrogative, qu'on accompagne d'une marque d'interrogation, c'est le B-A-BA du français, voire de la communication entre humains. Malheureusement, quand on relit votre prose :

Ca fait un big HS par rapport au topic mais je ne comprends pas en quoi cela te mets à l'aise...
Loguer l'activité d'une application est le B-A-BA de l'informatique.

Il n'y a aucune forme interrogative, ni aucune marque d'interrogation, juste des affirmations présomptueuses. Dans votre tambouille de mots, vous sous entendez maladroitement, que cette application ne dispose pas de ce type de fonctionnalité. Vous portez là bien un jugement sur un contexte dont vous ignorez tout. Relisez-vous ! Le reste, c'est du même tonneau. Aucune forme interrogative et aucune marque d'interrogation. N'affirmez pas « Je demande un complément d'information » quand vous ne le faites pas. C'est un mensonge.

D'autre part, vous me parlez d'identifier le canal source de l'erreur de données. Vous ignorez que tous les flux entrants et sortants de cette application sont déjà loggés, parce que vous n'avez posé aucune question, avant d'affirmer n'importe quoi. De plus, je l'ai sous entendu avec la description des loggers existants, mais vous n'avez rien compris.

Ensuite, pour continuer votre démonstration fausse, vous venez pérorer avec vos Scoring de Fraude, en ignorant le fait qu’il faille logger également, dans ce même module, les sélections des items de menu dans le Back Office, en plus des modifications de données Back/Front, faites par les collaborateurs du client et celles faites par les clients du client. Il s’agit d'un logger Back/Front, vous vous rappelez ? Vous allez sûrement nous dire qu'il s'agit là d'établir simultanément un Scoring de Travail. C'est une salade de mots. Vous mélangez tout, et vous dites n'importe quoi.

Le Scoring de fraude n’existe pas, c’est une invention de votre esprit. Le Scoring sur la capacité de paiement est une réalité.

Pour terminer dans le grand n'importe quoi - et de la même manière que vous avez confondu historisation des actions et traçage d'activité, dans votre post précédent - dans votre dernier post, vous avez confondu « gestion du risque de crédit et du défaut de paiement » à la pseudo « gestion de fraudes ». Pour votre complément d'informations, que vous n'avez toujours pas demandé, cette application utilise déjà des services de ce genre, dans les pays où c'est autorisé. Le client se contrefout d'évaluer les pseudos risques de fraudes, il ne travaille qu'avec des sociétés dûment identifiées par leur K-bis, en France, et tout ce qu'il faut juridiquement dans ses filiales étrangères. Et si fraude il y a, elle est complètement négligeable et ne nécessite aucun développement pour être réglée. Et le module dont je parle n'a aucune vocation en ce sens. Vous confondez tout, et vous dites n'importe quoi.

Quant au client final qui va s'amuser à changer ses adresses de livraison/facturation à chaque commande, vous ignorez, encore et toujours, parce que vous n'avez rien demandé, que les flux entrant et sortants sont déjà aussi sous haute surveillance. Les changements d'adresses sont déjà surveillés. Mais pour d'autres raisons, parce que le simple fait de s'imaginer un gros idiot se dire « J'ai une idée, je vais changer les adresses de livraison/facturation à chaque commande, de cette manière, personne ne se rendra compte que la société fraude », on ne peut que rire de vos exemples ridicules. Vous avez réfléchi à l’absurdité de la situation avant de la citer en exemple ? Non ! Vous êtes en train de vous raccrocher aux branches mortes d’un arbre mort fabriqué à partir de vos propos décousus, et pour l’instant, je vous regarde tomber.

J'ai assez perdu de temps avec vous. A chaque post, vous avez un ton hautain particulièrement mal venu et vous dites n'importe quoi. Vous témoignez d’une incompétence crasse en français et en informatique. Je vais arrêter de vous répondre pour votre bien et que vous arrêtiez de vous faire du mal tout seul.
Je vous souhaite un bon rétablissement.
Avatar de shadowmoon shadowmoon - Membre Expert http://www.developpez.com
le 01/09/2015 à 10:01
Citation Envoyé par Saverok Voir le message
savoir "quand quelqu'un modifie une donnée" est une information extrêmement importance pour l'analyse d'un bug ou d'une situation
...
Du coup, avoir l'historique de la modification de la donnée prend tout son sens.
Je suis d'accord avec toi Saverok sur l'utilité de l'historisation des modifications des données. Savoir qui a fait quoi et à quel moment est en effet important en cas de soucis.

Par contre

Citation Envoyé par chanyslas Voir le message
En ce moment, je code un logger d'activités Back/Front, pour que les collaborateurs de notre client puissent se dénoncer les uns les autres et se renvoyer la balle des responsabilités
...
Sur ce point précis je comprends chanyslas. A mon avis ce n'est pas normal que tous les employés aient accès à ces données, c'est une "porte ouverte" à la délation et autres "coup-bas".

Je pense que seuls les responsables / chefs / gestionnaires ... d'équipe / de projet / de production ... devraient être en mesure de consulter ces données.
Avatar de el_slapper el_slapper - Expert Confirmé Sénior http://www.developpez.com
le 01/09/2015 à 10:07
Citation Envoyé par shadowmoon Voir le message
(.../...)Je pense que seuls les responsables / chefs / gestionnaires ... d'équipe / de projet / de production ... devraient être en mesure de consulter ces données.
C'est comme les données bancaires. Il est obligatoire de tracer toute activité bancaire dans une piste d'audit - vérifiée régulièrement par des auditeurs - pour garantir au client qu'on ne le blouse pas. Il est préférable de limiter au maximum l'accès à ces données - en gros aux auditeurs, et, éventuellement, le temps d'une maintenance, aux gens qui vont faire la maintenance.
Avatar de Saverok Saverok - Expert Confirmé Sénior http://www.developpez.com
le 01/09/2015 à 13:19
Citation Envoyé par shadowmoon Voir le message
A mon avis ce n'est pas normal que tous les employés aient accès à ces données, c'est une "porte ouverte" à la délation et autres "coup-bas".

Je pense que seuls les responsables / chefs / gestionnaires ... d'équipe / de projet / de production ... devraient être en mesure de consulter ces données.
Je suis en phase avec cela.
De manière générale, les utilisateurs n'ont à avoir accès aux données de suivi d'exploitation.
L'accès au serveurs de prod, même en lecture seule, doit être contrôlé et limité.
Avatar de SosoDuduBabar SosoDuduBabar - http://www.developpez.com
le 02/09/2015 à 16:42
moi perso ;

Code : Sélectionner tout
alt f4
Avatar de deuche deuche - Membre du Club http://www.developpez.com
le 03/09/2015 à 14:27
En 1990-1992 j'ai développé une application graphique sur un DX2-66Mhz. Le PC le plus puissant à l'époque.
Mais il fallait être capable d'afficher en temps réel les données qui arrivaient sur la carte électronique sans que la mémoire de celle-ci ne sature.

En permanence je cherchais à optimiser le code, par exemple j'avais remarqué que l'ordinateur avait un traitement plus rapide en utilisant une palette de couleurs de 65K plutôt que de 256 même si j'en utilisais bien moins que 256.

Cela avait vraiment un sens que de faire de bons algorithmes.
Et puis un jour, mon module d'affichage, là où le cpu passait le plus de temps, je décide de l'hyper optimiser : je fais du codage assembleur de mon propre code en C.

Quand j'y repense, aujourd'hui, j'en serai bien incapable !
Forcément cela me prend un peu de temps.

Et puis une fois qu'il est fini je test les deux applications.
Grosse déception, je ne gagne rien du tout, même en passant 100 fois dans la même boucle, il n'y a pas une seul seconde d'écart.

Je décide alors de regarder et d'imprimer la traduction assembleur de mon code C.
Et je me suis rendu compte que les deux codes étaient extrêmement proche l'un de l'autre, il y avait quelques NOP du côté CPU que j'ai jamais compris...

J'étais alors très fier d'avoir réalisé le même code que le compilateur Borland 5.0 même si au final cela n'avait servi à rien !
Mais aujourd'hui encore, je suis toujours à la recherche de l'optimisation de mes outils de travail, ou ceux de mes collègues, qui apprécient de ne plus être obligé de faire des tâches monotones et répétitives.
Offres d'emploi IT
Gestionnaire d'application h/f
CDI
Société Générale - Ile de France - Paris (75000)
f/h Consultant technique APO SAP
Freelance
Augusta Reeves Ouest - Pays de la Loire - Nantes (44000)
Développeur php symfony h/f
CDI
Silkhom - Rhône Alpes - Lyon (69000)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Accueil : le Service Publications -