Être programmeur en 2015

Petit billet d’humeur, frustration d’une réflexion qui n’aboutit à rien au bout de plusieurs années… comment être un bon développeur sur la durée ?!

Je n’ai pas envie de créer un post à polémique, je sais que les avis sont souvent très différents sur le sujet, donc cela ne sera que mon avis et rien de plus. Je n’aime pas l’appellation développeur – cela fait mieux sur un CV, mais quand j’ai commencé l’informatique, on appelait cela « programmeur » en se moquant un peu de ceux qui disaient « programmateur »…

url

J’ai commencé en langage Basic sur CPC. A l’époque, tout me semblait dans le manuel fourni avec la machine – on pouvait faire des sons, des images, des calculs, … bref, on pouvait faire des jeux. Cela a été mon premier contact avec la programmation. Très rapidement, j’ai découvert que le Basic, c’est bien, mais ce n’est pas très rapide et c’est limité. Pour dépasser cela, il y avait l’assembleur. je m’en suis contenté longtemps jusqu’à ce que j’atterrisse sur un PC – et là, ça fait bizarre, car il y avait plein de nouveau langages. J’ai commencé par le Turbo Pascal, le Turbo Basic, le C… Je faisais des programmes de 3D codé majoritairement avec des routines en assembleur, mais appelées en C. J’ai vite manqué de mémoire, découvert le mode FLAT permettant d’accéder à des quantités de mémoire disponibles au dessus de 640Ko, et pas limité comme en mode XMS. Je passe très vite car cela n’intéresse personne, mais il y a eu la programmation événementielle sous Windows, la découverte d’Unix etc. Tout cela n’a fait que s’accélérer avec les années. Jusqu’à il y a peu, j’avais presque touché à toutes les technos: Java, les AGL de type Windev, les scripts Python, PHP, de l’OpenGL, du DirectX, Android, les architectures distribuées, etc. Inutile de faire un étalage de ces connaissances bien incomplètes, mais qui démontre une seule chose : Si un bon codeur doit être doté de bons outils, alors comment être bon sur la durée dans cette immensité de technologies, de normes différentes, de standards de programmation, de méthodologies (Merise, UML, Agile, etc.) ?

url

Tous les 3-4 ans, je suis obligé de recoder toutes mes librairies, de les transposer, de les re-conceptualiser quelques fois. J’ai perdu pleins de boites noires, des méta-outils que j’avais construits pour les algorithmes génétiques, pour résoudre tel ou tel problème… certains sont désuets d’ailleurs. Mes fonctions de compression d’images (format proche du PCX) pour mon CPC n’ont plus aucune raison d’être, ni mes routines de sprites delta en assembleur x386. Elles étaient utiles à l’époque, mais maintenant, on se sert de l’accélération vidéo ou de meilleurs algorithmes. Oui, les algorithmes évoluent également. Il y a des tas de nouveaux brevets, des thèses qui présentent des méthodes hybrides algorithmiques.

Alors, c’est quoi un bon programmeur ? Celui qui s’est spécialisé dans un langage, dans un AGL, dans une technologie, voire dans un domaine très particulier (exemple: la bioinformatique). En étant un spécialiste du marteau, toute solution revient à enfoncer un clou. Est-ce un généraliste qui n’a pas vraiment d’outil sous la main et qui doit tout refaire dès qu’il travaille sur un logiciel particulier ?

Aujourd’hui, le marché du travail recherche des spécialistes en nombre, et quelques généralistes pour superviser les gros projets. Mais qu’en est-il de notre âme de programmeur ? Presque tous mes amis passionnés de programmation (je ne dis pas informatique, car c’est trop vulgaire – avant, un informaticien était forcément codeur en partie, aujourd’hui, des intégrateurs de matériel se disent informaticiens) ont arrêté cette passion ? Pourquoi ? Les difficultés liées à l’âge adulte, le marché du travail, l’évolution rapide des technologies ?

Tout cela n’a pas de sens – nos machines sont de plus en plus performantes, et nous en avons de moins en moins la maîtrise. Elles peuvent réaliser des prouesses, et nous les utilisons pour nos mails, les réseaux sociaux et quelques applications métier.

« Un bon informaticien ne doit pas réinventer la roue » – mais qu’en est-il vraiment quand il utilise des technologies, des APIs qu’il ne comprend pas, qu’il ne maîtrise pas… et qui changent du jour au lendemain sans pour autant respecter une compatibilité ascendante, ou se gorgeant de nouvelles erreurs.

Comme tout programmeur, je me suis un jour dit : je vais réécrire un système d’exploitation plus simple (compatible « Linux » pourquoi pas), inventer un nouveau langage, son compilateur et son interpréteur, sa librairie de gestion de fenêtres, etc. Et puis, quelques secondes après on se dit « mais quel travail, il me faudrait plus d’une vie pour faire moins bien ! « . Donc, cela signifie qu’il me faut accepter de ne pas tout maîtriser ? Accepter de faire des programmes bogués, qui ne tourneront plus dans 2-3 ans, et que je devrais entièrement réécrire… Un bon programmeur est un artiste du code, un esthète de la programmation : un programme n’est parfait que s’il ne contient plus aucune ligne superflue, s’il ne contient aucune erreur… Aucun compromis n’est acceptable !

Comment être un bon développeur en 2015 ? Je crois qu’on ne peut plus… enfin, pas comme on le souhaiterait, pas comme au temps de la demoscene. Et si on croit l’être, c’est que l’on a une vision bien étriquée du sujet…

urlPS: Je viens de passer 6H sur un bug de merde…

13 Commentaires

  1. Khrys

    J’ai bien aimé tes réflexions qui pour certaines me renvoient un peu aux miennes. Effectivement être programmeur professionnel (ce qui n’est pas mon cas) doit être un vrai challenge… déjà qu’en étant simplement amateur c’est triste de se dire que le temps passé à développer ses outils et autres moteurs semble quelque peu perdu ; toutefois reste l’expérience et on ne repart à mon avis pas à chaque fois de zéro (coté méthodologie et concepts qu’on paufine dans le temps).
    Peut-être faut-il laisser de côté l’idée que c’est une quête avec un but « absolu », je trouve que c’est plutôt le plaisir de Tantale (oui, je dis bien plaisir et non pas supplice) car c’est quand-même génial d’élargir ses connaissances et l’expérience passée n’est à mon point de vue jamais totalement perdue.
    Je dois dire que c’est génial de pouvoir créer aujourd’hui des choses qu’on n’aurait même pas imaginées quand on a commencé (perso avec un C64).
    Pour le clin d’oeil, le mode flat je ne m’y suis pas aventuré, me contentant de l’EMS / XMS… mais quel plaisir de contrôler à ce point sa machine en langage machine : c’est ce qui me manque le plus aujourd’hui, mais je m’éclate toujours à coder parfois sur C64 et je me suis même aventuré sur la VCS2600 (coriace la bestiole… en tout cas pour moi)…
    Quand auxt 6 heures sur un bug à la noix… classique, mais tu ne dois pas faire assez de pauses… mais bon, je crois qu’on fait tous un peu ça.. 🙂
    Allez, haut les coeurs !
    Khrys

    Réponse
    • greg

      Oui, je te comprends parfaitement sur ce plaisir qu’on a à contrôler parfaitement sa machine, quand on s’extrait du système d’exploitation, et même du BIOS par certains cotés… Il est encore possible aujourd’hui d’optimiser certains algorithmes en passant pas l’assembleur, mais c’est rare.
      Il y a 15 ans, j’obtenais de très bons résultats en ajoutant des fonctions liées au FPU et codées en assembleur.
      Il y a 10 ans, je codais un moteur 3D et j’améliorais ma librairie mathématique en lui ajoutant les fonctions et en prenant en compte 3DNow!, le SSE, et l’hyperthreading pour améliorer le prefetch de certains calculs (avec probabilité).
      Mais quand j’ai recommencé il y a 5 ans avec SSE3 et 4… je n’obtenais pas de gain par rapport à un compilateur C optimisé pour ces jeux d’instructions.
      Depuis, je m’éclate de nouveau grâce à OpenCL et Cuda qui permettent de programmer quasiment en hard les processeurs de sa carte graphique. C’est vraiment très sympa. Mais le contrôle total… c’est définitivement perdu je pense. Ou alors, il faut y passer sa vie, et son œuvre ne sera jamais à la hauteur de ce qui existe déjà.

      Réponse
      • Eric

        Greg,
        Je m’appelle Eric et j’aimerai pouvoir vous joindre en privé pour évoquer le sujet du code du jeux.
        merci de me laisser une information de lien à ce sujet.
        Eric

        Réponse
  2. Khrys

    Concernant le contrôle total, je pense que tu as entièrement raison, la multitude des technologies implantées tant par leur complexité que leurs intrications met la barre trop haute pour un seul homme.

    Réponse
  3. pj

    Moi la question que je me pose, c’est -‘Peut-on être développeur assembleur en 2015’? Car dans mon peu d’expérience que j’ai eu du code, c’est vraiment l’assembleur qui m’a fait le plus triper !
    Ps : La question je l’ai posé à google, il m’a amené ici ;-))

    Réponse
    • greg

      Je pense qu’il faut se poser la question autrement. Quand on est développeur, c’est une façon de penser, de s’organiser, de créer. On n’est pas forcément pieds et mains liés à un langage ou une technologie. Oui, on peut se spécialiser ponctuellement, mais tout avance si vite que ce serait suicidaire de ne jurer que par une technologie. L’assembleur n’est pas non plus un langage: il y a plusieurs assembleurs – celui de nos PC, mais aussi ceux de nos tablettes, nos téléphones… voir notre frigo.
      L’assembleur est très proche de la machine, ce qui le rend séduisant. Toutefois, s’il est utilisé ponctuellement par l’industrie (surtout pour les drivers et les compilateurs), c’est aussi qu’on l’utilise de moins en moins. Tout est souvent à reprendre à zéro: je ne connais pas de grosses librairies Open Source écrites en Assembleur, utilisées en assembleur et permettant de réaliser des opérations complexes. Souvent, on se contente des APIs ouvertes par le système d’exploitation…
      Alors, peut-on être un développeur assembleur en 2015 ? Pour gagner sa vie, dans ce cas là, il faudra être un des meilleurs et le faire-savoir. C’est un pari très risqué. Personnellement, je te conseillerais plutôt d’avoir cette corde à ton arc si tu as le profil « électronique & robotique », mais surtout de maitriser le C++ et toute la galaxie Java. Là, il y a du boulot et il devrait y en avoir encore dans 5 à 10 ans.

      Réponse
      • pj

        Merci de ta réponse, je code en Java (en fait je suis dev web Java EE), j’ai tâté le C, le C++, le PHP…. Mais le plaisir que j’en tire est 1000 fois inférieur à celui que je prends à développer en Assembleur, et quand on aime on devient très bon je pense.

        Réponse
        • greg

          Dans ce cas, lance toi à fond alors – rien de grand dans ce monde ne s’est fait sans passion ! (moi aussi j’adore l’assembleur 😉

          Réponse
          • PF

            Une phrase sur la passion de Hegel 🙂 pour rendre à César ce qui est à César.
            Superbe votre coup de gueule concernant la programmation (j’ai un peu connu le GFA Basic sur Atari ST… snif. Belle période)

          • greg

            Oui, c’est exactement ça pour Hegel (je l’ai cité dans mon bouquin sur le BGE 😉 )

  4. Luc

    Il y a que l’assembleur qui me motive, j’ai tester le ‘style’ Java et autre grosse merde sans rigueur. Je prend pas de plaisir quand c’est trop facile. Je suis content d’être tomber sur ce site. A une époque j’ai été recruter par un chasseur de tête (super salaire..) (je suis autodidacte) mais j’ai fuit… parce que la POO pffffff
    une passion c’est sans contrainte alors les contraintes de rentabilité je me les met….
    Cordialement les amis.

    Réponse
    • greg

      L’assembleur reste aussi pour moi le langage le plus pur… mais c’est très difficile de porter son code par la suite sur d’autres environnements. Le C reste pour moi le meilleur compromis, et j’avoue que la POO me plait bien aussi depuis.
      Mais c’est vrai qu’une passion, ça doit rester sans contrainte – et donc, c’est pas facile de mixer cela avec le boulot.

      Réponse

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée.

Ces articles pourraient aussi vous intéresser …

Quand sortir un jeu?

Quand sortir un jeu?

Les sorties de jeux vidéo ne sont pas continues sur l'année, il peut se passer 9 mois avec quelques lancements puis...