[Traduction] Chanceux d’être un développeur

L’article qui suit est une traduction d’un article intitulé : « Lucky to be a Programmer » publié par Gustavo Duartes sur son blog, le 14 juillet 2008. Les liens sont ceux d’origine et proposent donc un contenu en anglais, les mises en valeur (gras et italique) sont les miennes.

J’ai aimé l’enthousiasme de Gustavo et sa vision de la programmation.

Merci à Cécile Villemant de la Faculty of Life Sciences de Manchester, et à ses collègues pour l’aide sur les parties concernant la Biologie et les histoires de gènes.
Vous aussi, vous aimez le zen of coding ? L’état de sérénité qu’on atteint quand on développe  ?
Vous aussi pensez que coder, c’est créatif et rigoureux, scientifique et artistique ?

Durant les semaines passées, j’ai travaillé avec un collègue développeur sur un projet qui nécessitait une grosse dose de programmation. C’est maintenant terminé, et nous sommes repartis sur notre emploi du temps habituel mais quand les gens apprennent nos horaires dingues, ils ont souvent pitié de nous. Ils ne devraient pas. Je ne ferais pas cela tous les jours, ou sur des longues périodes, ou sans aucune compensation, si je le fais pour un employeur, mais en réalité, ces séances intensives de programmation sont mes périodes préférées dans la vie. Avec les conditions idéales, écrire des logiciel procure un plaisir si intense, que cela devrait être illégal.

Beaucoup de développeurs connaissent cet état, mais les autres reculent quand ils entendent ça. Je pense que c’est parce que beaucoup d’institutions excellent à retirer le plaisir de toute chose. C’est flagrant, par exemple, comme les écoles peuvent se saisir des sujets les plus passionnants et les rendre sous une forme académique et ennuyeuse. Même la programmation. Beaucoup d’enseignements transforment une expérience enrichissante en quelque chose que les gens acceptent de ne faire que s’ils sont payés.

C’est trop bête. Peu de choses sont  plus agréables que de passer du temps sur son nuage créatif, assailli par des idées, en regardant votre travail prendre forme, aller se coucher tendu et se réveiller rapidement, et essayer de nouvelles idées. Je ne suggère pas que les heures excessives sont nécessaires ou encore conseillées ; un emploi du temps sain est le mieux, sauf pour des excès occasionnels. Le fait est que programmer est un plaisir créatif intense, un mélange parfait entre le casse-tête, l’écriture et le bricolage.

Programmer offre des défis de haut niveau et laisse beaucoup de place pour l’invention. Quelques problèmes sont  de la recherche et de la déduction : « pourquoi le code tourne aussi lentement ? Qu’est-ce qui peut diable causer ce bug ? » Les autres sont constructifs, comme modéliser des algorithmes et architectures. Tous sont un délice si vous aimez l’analyse, être immergé dans un monde plein de monstres, comme les malwares, les routeurs, le cache, les protocoles, les bases de données, les graphes et les nombres.

Ce côté analytique est celui que la plupart des gens associent à la programmation. Cela la rend intéressante, comme un jeu de stratégie complexe. Mais dans la plupart des logiciels, le premier défi est la communication : avec les pairs par le code et avec les utilisateurs par les interfaces. En gros, écrire du code est plutôt un essai qu’un problème de maths. C’est donner forme à vos idées et concepts en un tout cohérent ; cela demande de la clarté, de la simplicité et de la concision. Coder et créer des interfaces sont liés à la joie de la création.

Une autre source de plaisir est que, sous certaines conditions, la beauté émerge de la programmation. Cela peut ressembler à des conneries, mais c’est réel, c’est ce qui rend votre journée meilleure. Prenez par exemple la démonstration de 2 lignes d’Euclide prouvant que les nombres premiers sont infinis. Je pense que beaucoup trouveront cela merveilleux – un résultat si court et si fascinant. C’est la beauté des maths, froides et austères, et cela fonctionne aussi pour le développement. Ce sont les algorithmes astucieux comme quicksort, dans les sources des noyaux et compilateur, ce sont les exploits élégants et les trucs que nous utilisons pour résoudre les problèmes de tous les jours. Quand vous voyez ces solutions, que ce soit un algorithme connu ou une astuce exclusive, vous souriez et vous pensez « comme c’est classe » et vous vous sentez bien. How noble in reason!

Une beauté non-mathématique existe également dans le code, qui rejoint l’éloquence dans le discours. C’est présent dans les logiciels bien écrits qui font beaucoup avec peu de code, dans des fonctions courtes et concises, avec des architectures bien pensées. Quelques langages rendent cela difficile, et les développeurs ne codent pas ainsi, mais c’est une joie de lire et travailler sur un tel code. Si vous travaillez avec un langage expressif avec des collègues qui codent d’une manière agréable, cela arrive assez souvent pour vous rendre heureux.

Maintenant, parlons du bricolage. Dans un sens, le développement est abstrait – où le programme existe-t-il à part dans nos esprits ? Cependant nous appelons cela « fabriquer des logiciels » pour une raison. Les logiciels sont créés fonctionnalité après fonctionnalité, les architectures démarrent  et grandissent, les interfaces utilisateur s’y ajoutent, les bugs sont réparés et les points durs sont optimisés pour rendre les choses plus rapide. Le développement procure un sentiment profondément satisfaisant de travail manuel. Nous construisons des choses depuis des idées et ensuite nous les regardons travailler à résoudre des problèmes réels et à rendre la vie des gens meilleure. Ou loin de cela, selon le cas.

Prenez la biologie. Malgré environ 400 années de révolution scientifique, la biologie a été incapable de livrer la solution à des problèmes cruciaux comme les infections virales ou le cancer. Certains de nos meilleurs progrès, comme les antibiotiques, ont été trouvés par hasard et par des expériences empiriques. Vous démarrez un essai clinique pour le traitement de l’hypertension quand soudain – waouh – tous vos sujets ont des érections ! Le Viagra est né. Il est certain que le hasard jour un rôle dans toutes les découvertes, mais la physique et la chimie ont une théorie systématique des améliorations, alors que la biologie a été grandement confinée à de la bidouille. Vous voulez traiter le cancer ? Ok, bombardez le patient avec des radiations et du poison et espérons que le cancer meure le premier. Ce sont des bidouilles géniales, et je suis heureux de les avoir, mais c’est loin de la précision qu’on peut rencontrer ailleurs.

Le développement modifie cela. Il y a seulement 50 ans, la structure de l’ADN était découverte, mais maintenant n’importe qui peut parcourir et télécharger des centaines de séquences génomiques complètes. Ou regarder des milliers de gènes (DLEC1 est un exemple au hasard), complets avec la séquence nucléotidique, la séquence en acides aminés pour les protéines exprimées, la littérature mentionnant le gène, et bien d’autres choses ! Ou vous pouvez chercher dans de vastes bases de données génétiques et protéiques des séquences nucléotidiques ou d’acides amines, peut-être après avoir séquencé quelque chose dans des appareils toujours moins chers, et obtenir un rapport complet sur le profil correspondant. Il n’est pas important que la correspondance soit exacte, car l’algorithme de BLAST, l’outil standard de recherche de séquence, donne des correspondances partielles parmi différentes bases de données et espèces, en indiquant le taux de correspondance. Ces avancéess vont permettre des découvertes majeures en médecine. La biologie entre dans une nouvelle ère, comme la physique au 18ème siècle, propulsée par le développement logiciel.

Oui, bien entendu, les biologistes ont un rôle mineur, mais l’informatique augmente la possibilité de développements majeurs dans la science, la culture et le business. Quand un enfant du Tiers Monde lit un article Wikipédia, c’est notre boulot aussi ! Nous écrivons des RFCs et les piles réseaux, le navigateur et MediaWiki, les OS et les serveurs HTTP. Sans parler des articles de Wikipedia, mais puisque quelques uns sont sur leur temps de travail je laisse cela de côté.  L’influence des technologistes va au delà des octets et du numérique : c’était un développeur qui a inventé les wikis et notre communauté qui a démarré les blogs. Henry Mencken souligne avec justesse que « la liberté de la presse est limité à celle de ceux qui la possèdent ». C’est dommage qu’il ne soit pas là pour voir nos créations briser la conformité  et la douce soumission du journalisme professionnel. Moins glamour, mais grand avantage, nos applications ont livré des gains de productivité significatifs pour les entreprises de l’économie. Ce ne sont que quelques exemples d’une longue liste.

Il y a deux ans, quand j’ai terminé mon premier cycle (après avoir été un développeur durant des années), j’étais sur le point d’entrer en école de médecine. A ce moment, quelques expériences négatives m’avaient refroidi du travail sur ordinateur. Je suis content de m’être accroché. Je suis toujours intéressé par la recherche biomédicale, mais si j’avais voulu en être, j’aurais mieux fait d’attaquer par l’angle informatique, parce que, franchement, c’est trop de plaisir. Ma mère pense que je suis un dactylo, mais bon.

Si vous vous trouvez coincez dans un endroit qui tue votre passion inné de la technologie, par tous les moyens, barrez vous ! Ne restez pas en place tandis que votre enthousiasme s’épuise lentement. C’est difficile de trouver des gens motivés à embaucher donc vous avez déjà un atout majeur ; il y a plein d’employeurs – et d’entreprises à créer – qui iront mieux pour vous. Pour les gens qui pensent qu’ils pourraient aimer programmer, votre déplacement peut varier, mais je le recommande vraiment en tant que métier. Non seulement les perspectives optimistes sur le front de l’emploi, mais aussi le rôle du logiciel qui croît dans la société fait que nous verrons de plus en plus de d’excitation et de changement bénéfiques induits par la technologie. Je suis ravi d’être dans la course avec mon art et bricolage que je tente de maîtriser.

Je rappelle que je partage ces opinions en grande partie, mais que ce ne sont pas mes écrits.

2 réflexions sur “[Traduction] Chanceux d’être un développeur

  1. Pingback: mattGNU (mattgnu) 's status on Monday, 12-Oct-09 11:40:19 UTC - Identi.ca

  2. ça résume très bien ce que je pense de mon travail (qui était même une passion avant de devenir mon emploi).

    La programmation demande d’être :
    -créatif
    -rigoureux
    -organisé
    -clair
    -capable d’anticiper
    -de comprendre ou d’inventer des concepts
    -de savoir les communiquer

    Sans compter le plaisir de développer un outil, une solution qui va faciliter la vie des utilisateurs.

    Si j’étais né avant l’informatique, j’aurais fait inventeur je pense

Ajouter mes idées

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s