Être programmeur en 2015

Petit bil­let d’humeur, frus­tra­tion d’une réflex­ion qui n’aboutit à rien au bout de plusieurs années… com­ment ê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 sou­vent très dif­fé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 com­mencé l’informatique, on appelait cela “pro­gram­meur” en se moquant un peu de ceux qui dis­aient “pro­gram­ma­teur”…

url

J’ai com­mencé en lan­gage Basic sur CPC. A l’époque, tout me sem­blait dans le manuel fourni avec la machine — on pou­vait faire des sons, des images, des cal­culs, … bref, on pou­vait faire des jeux. Cela a été mon pre­mier con­tact avec la pro­gram­ma­tion. Très rapi­de­ment, j’ai décou­vert que le Basic, c’est bien, mais ce n’est pas très rapi­de et c’est lim­ité. Pour dépass­er cela, il y avait l’assembleur. je m’en suis con­tenté longtemps jusqu’à ce que j’atterrisse sur un PC — et là, ça fait bizarre, car il y avait plein de nou­veau lan­gages. J’ai com­mencé par le Tur­bo Pas­cal, le Tur­bo Basic, le C… Je fai­sais des pro­grammes de 3D codé majori­taire­ment avec des rou­tines en assem­bleur, mais appelées en C. J’ai vite man­qué de mémoire, décou­vert le mode FLAT per­me­t­tant d’accéder à des quan­tités de mémoire disponibles au dessus de 640Ko, et pas lim­ité comme en mode XMS. Je passe très vite car cela n’intéresse per­son­ne, mais il y a eu la pro­gram­ma­tion événe­men­tielle sous Win­dows, la décou­verte 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 tech­nos: Java, les AGL de type Windev, les scripts Python, PHP, de l’OpenGL, du Direc­tX, Android, les archi­tec­tures dis­tribuées, etc. Inutile de faire un éta­lage de ces con­nais­sances bien incom­plètes, mais qui démon­tre une seule chose : Si un bon codeur doit être doté de bons out­ils, alors com­ment être bon sur la durée dans cette immen­sité de tech­nolo­gies, de normes dif­férentes, de stan­dards de pro­gram­ma­tion, de méthodolo­gies (Merise, UML, Agile, etc.) ?

url

Tous les 3–4 ans, je suis obligé de recoder toutes mes librairies, de les trans­pos­er, de les re-con­cep­tu­alis­er quelques fois. J’ai per­du pleins de boites noires, des méta-out­ils que j’avais con­stru­its pour les algo­rithmes géné­tiques, pour résoudre tel ou tel prob­lème… cer­tains sont désuets d’ailleurs. Mes fonc­tions de com­pres­sion d’images (for­mat proche du PCX) pour mon CPC n’ont plus aucune rai­son d’être, ni mes rou­tines de sprites delta en assem­bleur x386. Elles étaient utiles à l’époque, mais main­tenant, on se sert de l’accélération vidéo ou de meilleurs algo­rithmes. Oui, les algo­rithmes évolu­ent égale­ment. Il y a des tas de nou­veaux brevets, des thès­es qui présen­tent des méth­odes hybrides algo­rith­miques.

Alors, c’est quoi un bon pro­gram­meur ? Celui qui s’est spé­cial­isé dans un lan­gage, dans un AGL, dans une tech­nolo­gie, voire dans un domaine très par­ti­c­uli­er (exem­ple: la bioin­for­ma­tique). En étant un spé­cial­iste du marteau, toute solu­tion revient à enfon­cer un clou. Est-ce un général­iste qui n’a pas vrai­ment d’outil sous la main et qui doit tout refaire dès qu’il tra­vaille sur un logi­ciel par­ti­c­uli­er ?

Aujourd’hui, le marché du tra­vail recherche des spé­cial­istes en nom­bre, et quelques général­istes pour super­vis­er les gros pro­jets. Mais qu’en est-il de notre âme de pro­gram­meur ? Presque tous mes amis pas­sion­nés de pro­gram­ma­tion (je ne dis pas infor­ma­tique, car c’est trop vul­gaire — avant, un infor­mati­cien était for­cé­ment codeur en par­tie, aujourd’hui, des inté­gra­teurs de matériel se dis­ent infor­mati­ciens) ont arrêté cette pas­sion ? Pourquoi ? Les dif­fi­cultés liées à l’âge adulte, le marché du tra­vail, l’évolution rapi­de des tech­nolo­gies ?

Tout cela n’a pas de sens — nos machines sont de plus en plus per­for­mantes, et nous en avons de moins en moins la maîtrise. Elles peu­vent réalis­er des prouess­es, et nous les util­isons pour nos mails, les réseaux soci­aux et quelques appli­ca­tions méti­er.

Un bon infor­mati­cien ne doit pas réin­ven­ter la roue” — mais qu’en est-il vrai­ment quand il utilise des tech­nolo­gies, des APIs qu’il ne com­prend pas, qu’il ne maîtrise pas… et qui changent du jour au lende­main sans pour autant respecter une com­pat­i­bil­ité ascen­dante, ou se gorgeant de nou­velles erreurs.

Comme tout pro­gram­meur, je me suis un jour dit : je vais réécrire un sys­tème d’exploitation plus sim­ple (com­pat­i­ble “Lin­ux” pourquoi pas), inven­ter un nou­veau lan­gage, son com­pi­la­teur et son inter­pré­teur, sa librairie de ges­tion de fenêtres, etc. Et puis, quelques sec­on­des après on se dit “mais quel tra­vail, il me faudrait plus d’une vie pour faire moins bien ! “. Donc, cela sig­ni­fie qu’il me faut accepter de ne pas tout maîtris­er ? Accepter de faire des pro­grammes bogués, qui ne tourneront plus dans 2–3 ans, et que je devrais entière­ment réécrire… Un bon pro­gram­meur est un artiste du code, un esthète de la pro­gram­ma­tion : un pro­gramme n’est par­fait que s’il ne con­tient plus aucune ligne super­flue, s’il ne con­tient aucune erreur… Aucun com­pro­mis n’est accept­able !

Com­ment être un bon développeur en 2015 ? Je crois qu’on ne peut plus… enfin, pas comme on le souhait­erait, 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 pass­er 6H sur un bug de merde…

13 réflexions sur « Être programmeur en 2015 »

  1. L’assembleur reste aus­si pour moi le lan­gage le plus pur… mais c’est très dif­fi­cile de porter son code par la suite sur d’autres envi­ron­nements. Le C reste pour moi le meilleur com­pro­mis, et j’avoue que la POO me plait bien aus­si depuis.
    Mais c’est vrai qu’une pas­sion, ça doit rester sans con­trainte — et donc, c’est pas facile de mix­er cela avec le boulot.

  2. 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 con­tent d’être tomber sur ce site. A une époque j’ai été recruter par un chas­seur de tête (super salaire..) (je suis auto­di­dacte) mais j’ai fuit… parce que la POO pffffff
    une pas­sion c’est sans con­trainte alors les con­traintes de rentabil­ité je me les met.…
    Cor­diale­ment les amis.

  3. Une phrase sur la pas­sion de Hegel 🙂 pour ren­dre à César ce qui est à César.

    Superbe votre coup de gueule con­cer­nant la pro­gram­ma­tion (j’ai un peu con­nu le GFA Basic sur Atari ST… snif. Belle péri­ode)

  4. Greg,

    Je m’appelle Eric et j’aimerai pou­voir vous join­dre en privé pour évo­quer le sujet du code du jeux.
    mer­ci de me laiss­er une infor­ma­tion de lien à ce sujet.

    Eric

  5. Dans ce cas, lance toi à fond alors — rien de grand dans ce monde ne s’est fait sans pas­sion ! (moi aus­si j’adore l’assembleur 😉

  6. Mer­ci 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évelop­per en Assem­bleur, et quand on aime on devient très bon je pense.

  7. Je pense qu’il faut se pos­er la ques­tion autrement. Quand on est développeur, c’est une façon de penser, de s’organiser, de créer. On n’est pas for­cé­ment pieds et mains liés à un lan­gage ou une tech­nolo­gie. Oui, on peut se spé­cialis­er ponctuelle­ment, mais tout avance si vite que ce serait sui­cidaire de ne jur­er que par une tech­nolo­gie. L’assembleur n’est pas non plus un lan­gage: il y a plusieurs assem­bleurs — celui de nos PC, mais aus­si ceux de nos tablettes, nos télé­phones… voir notre fri­go.
    L’assembleur est très proche de la machine, ce qui le rend séduisant. Toute­fois, s’il est util­isé ponctuelle­ment par l’industrie (surtout pour les dri­vers et les com­pi­la­teurs), c’est aus­si qu’on l’utilise de moins en moins. Tout est sou­vent à repren­dre à zéro: je ne con­nais pas de gross­es librairies Open Source écrites en Assem­bleur, util­isées en assem­bleur et per­me­t­tant de réalis­er des opéra­tions com­plex­es. Sou­vent, on se con­tente des APIs ouvertes par le sys­tème d’exploitation…
    Alors, peut-on être un développeur assem­bleur en 2015 ? Pour gag­n­er sa vie, dans ce cas là, il fau­dra être un des meilleurs et le faire-savoir. C’est un pari très risqué. Per­son­nelle­ment, je te con­seillerais plutôt d’avoir cette corde à ton arc si tu as le pro­fil “élec­tron­ique & robo­t­ique”, mais surtout de maitris­er le C++ et toute la galax­ie Java. Là, il y a du boulot et il devrait y en avoir encore dans 5 à 10 ans.

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

  9. Con­cer­nant le con­trôle total, je pense que tu as entière­ment rai­son, la mul­ti­tude des tech­nolo­gies implan­tées tant par leur com­plex­ité que leurs intri­ca­tions met la barre trop haute pour un seul homme.

  10. Oui, je te com­prends par­faite­ment sur ce plaisir qu’on a à con­trôler par­faite­ment sa machine, quand on s’extrait du sys­tème d’exploitation, et même du BIOS par cer­tains cotés… Il est encore pos­si­ble aujourd’hui d’optimiser cer­tains algo­rithmes en pas­sant pas l’assembleur, mais c’est rare.
    Il y a 15 ans, j’obtenais de très bons résul­tats en ajoutant des fonc­tions liées au FPU et codées en assem­bleur.
    Il y a 10 ans, je codais un moteur 3D et j’améliorais ma librairie math­é­ma­tique en lui ajoutant les fonc­tions et en prenant en compte 3DNow!, le SSE, et l’hyperthreading pour amélior­er le prefetch de cer­tains cal­culs (avec prob­a­bil­ité).
    Mais quand j’ai recom­mencé il y a 5 ans avec SSE3 et 4… je n’obtenais pas de gain par rap­port à un com­pi­la­teur C opti­misé pour ces jeux d’instructions.
    Depuis, je m’éclate de nou­veau grâce à Open­CL et Cuda qui per­me­t­tent de pro­gram­mer qua­si­ment en hard les processeurs de sa carte graphique. C’est vrai­ment très sym­pa. Mais le con­trôle total… c’est défini­tive­ment per­du je pense. Ou alors, il faut y pass­er sa vie, et son œuvre ne sera jamais à la hau­teur de ce qui existe déjà.

  11. J’ai bien aimé tes réflex­ions qui pour cer­taines me ren­voient un peu aux miennes. Effec­tive­ment être pro­gram­meur pro­fes­sion­nel (ce qui n’est pas mon cas) doit être un vrai chal­lenge… déjà qu’en étant sim­ple­ment ama­teur c’est triste de se dire que le temps passé à dévelop­per ses out­ils et autres moteurs sem­ble quelque peu per­du ; toute­fois reste l’expérience et on ne repart à mon avis pas à chaque fois de zéro (coté méthodolo­gie et con­cepts qu’on paufine dans le temps).
    Peut-être faut-il laiss­er de côté l’idée que c’est une quête avec un but “absolu”, je trou­ve que c’est plutôt le plaisir de Tan­ta­le (oui, je dis bien plaisir et non pas sup­plice) car c’est quand-même génial d’élargir ses con­nais­sances et l’expérience passée n’est à mon point de vue jamais totale­ment per­due.
    Je dois dire que c’est génial de pou­voir créer aujourd’hui des choses qu’on n’aurait même pas imag­inées quand on a com­mencé (per­so avec un C64).
    Pour le clin d’oeil, le mode flat je ne m’y suis pas aven­turé, me con­tentant de l’EMS / XMS… mais quel plaisir de con­trôler à ce point sa machine en lan­gage machine : c’est ce qui me manque le plus aujourd’hui, mais je m’éclate tou­jours à coder par­fois sur C64 et je me suis même aven­turé sur la VCS2600 (cori­ace la besti­ole… en tout cas pour moi)…
    Quand auxt 6 heures sur un bug à la noix… clas­sique, mais tu ne dois pas faire assez de paus­es… mais bon, je crois qu’on fait tous un peu ça.. 🙂
    Allez, haut les coeurs !

    Khrys

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.