Ê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…

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...