Considéré comme un métier de « jeunes », le développement logiciel nécessite
pourtant des compétences et connaissances étendues en ingénierie logicielle ainsi qu’une expérience pratique de technologies variées. « À l’instar des Compagnons, atteindre l’excellence pour un développeur passe par son « Tour de France personnel », explique Thomas Cordival, directeur général de enioka Haute Couture, qui crée des solutions complètes et sur-mesure. « Il cumulera ainsi les techniques, les langages et aussi la vision intuitive des impacts de ses développements sur les utilisateurs. Ce sont ces maîtres que les entreprises s’arrachent. »
Aujourd’hui un jeune qui se destine au métier de développeur va se former ou suivre une
formation sur un petit ensemble de langages de programmation. Et chaque période a son
langage préféré. Dans les années 70, c’était COBOL, dans les années 80, le langage C
remplacé en popularité par le C++ dans les années 90. Les années 2000 ont vu un réel
engouement pour la programmation en Java, vite détrôné par Python et .Net dans les
années 2010. Aujourd’hui, c’est au tour de JavaScript de prendre le haut du tableau des
tendances.
Avec la complexification des stacks actuelles, il est devenu nécessaire d’en maitriser
plusieurs, potentiellement de générations et de paradigmes différents. Et si la solution passait par des Compagnons du Code ?
1ère étape du Tour de France : se former à l’ingénierie logicielle
En première étape de ce Tour de France du code, il nous semble essentiel de se familiariser avec l’ingénierie logicielle. Si l’on se réfère à l’arrêté ministériel du 30 décembre 1983 relatif à l’enrichissement du vocabulaire de l’informatique [Journal officiel du 19 février 1984], on appelle Génie Logiciel : l’ensemble des activités de conception et de mise en œuvre des produits et des procédures tendant à rationaliser la production du logiciel et son suivi.
En d’autres termes, cette première étape pour l’Apprenti-développeur va consister à
comprendre comment se bâtit du code. Quelle logique est sous-tendue derrière chaque
ligne de code. Quels vont être les impacts et les interdépendances entre ces lignes,
fonctions, classes ou modules ? Cette première étape va apporter la base théorique au métier de développeur, lui donner un « corpus » de base, lui permettant de comprendre comment les choses fonctionnent et pourquoi certaines autres ne fonctionnent pas.
Si l’on veut faire une analogie, on peut prendre la médecine où l’apprenti-médecin va
étudier pendant 10 ans un système existant – le corps humain – avant de pouvoir s’occuper de le maintenir en bon état ou de régler ses dysfonctionnements.
Certains diront que l’on peut programmer un logiciel sans nécessairement comprendre les
différentes interdépendances ; toutefois, pour développer des systèmes très pointus, il va
être indispensable d’avoir cette compréhension globale. On peut y voir des similarités avec le fait de conduire sa voiture (pas besoin de disposer d’une connaissance pointue en
mécanique) et être un pilote de rallye ou de F1 (besoin de comprendre le fonctionnement
du véhicule pour faire les bons réglages, identifier soi-même des dysfonctionnements,
optimiser le rendement…).
2ème étape : apprendre à étudier les nouveautés
Une fois la base acquise au cours de la première étape de ce Tour de France, l’Apprenti-
Codeur, en fin de sa période d’apprentissage, va devoir prendre toute la mesure du facteur nouveauté dans l’appréciation des technologies. En effet, comme on le mentionnait plus haut, chaque période a connu sa tendance de développement. Une nouvelle technologie ou un nouveau langage de programmation apparaît en général pour combler un manque ou pour apporter plus de facilité dans les développements de logiciels. L’erreur que font souvent les Apprentis-Codeurs est de se focaliser sur une seule stack (langage, framework, type de développement), en étant, surement trop, influencés par la mode du moment.
C’est au cours de cette étape qu’il va devoir prendre conscience que chaque langage de
programmation répond à un besoin contextuel dont il faut éviter de sortir si l’on veut être
performant. Par exemple, Java ou Python sont appropriés pour développer des applications web ou des composants d’échange et de traitements de données. En revanche, ils ne seront pas adaptés à la création d’un logiciel temps-réel dans le domaine de l’industrie ou de l’embarqué.
3ème étape : diversifier les langages pour faciliter l’apprentissage
L’Apprenti-codeur, une fois les deux étapes précédentes passées, entre maintenant dans sa phase de Compagnon-Codeur. Il va s’agir à présent de développer du code. Après avoir appris à coder dans un langage, afin de perfectionner son savoir-faire et pouvoir espérer atteindre la Maîtrise, le Compagnon-Codeur va devoir apprendre de nouveaux
langages de programmation. Comme mentionné lors de l’étape précédente, chaque
technologie a son contexte d’excellence. En choisissant les langages à apprendre, le
développeur va pouvoir démultiplier ses contextes d’intervention.
Cette étape est d’autant plus importante que plus l’on apprend de langages de
développement et les paradigmes associés, plus l’on se crée des mécanismes mentaux qui vont rendre l’apprentissage d’autres technologies plus rapide et plus efficace.
Au cours de cette troisième étape, il est important pour le Compagnon-Codeur de se créer
un portfolio de projets, que ce soit à travers des projets scolaires ou sur des projets lancés de son propre chef (un jeu vidéo, une application de domotique pour son appartement…)
Le développement de cette approche multi-langages peut également s’effectuer lors des
expériences professionnelles du Compagnon-Codeur. Au cours d’une mission en entreprise, il va être important de pouvoir agir sur un pan « détouré » d’un projet. De cette façon, le développeur va pouvoir intervenir sur l’intégralité du périmètre de son pan de projet et en mesurer tous les impacts et toutes les interdépendances.
4ième étape : aller au-delà de son projet
Le Compagnon-Codeur, fort de l’expérience acquise au cours des 3 précédentes étapes, doit maintenant disposer d’une vision globale. C’est à ce moment-là de son parcours qu’il va être nécessaire de comprendre les problématiques de tous les acteurs autour d’un logiciel. En plus des utilisateurs finaux souvent bien identifiés, la production, les architectes, les chefs de projets, les UX designers, les testeurs… ont tous un rôle primordial à jouer dans les projets. Il est donc essentiel pour le Compagnon-Codeur de bien les comprendre, d’intégrer leurs impératifs et contraintes et ainsi développer une réelle empathie pour leurs rôles, dans l’optique de mieux travailler avec eux.
Et fort de cette empathie, lors des futurs développements, ils pourront prendre en compte
l’impact que peut avoir une erreur de développement sur le quotidien professionnel
d’autres personnes.
5ième étape : maîtriser
S’il a bien respecté les 4 étapes précédentes, le Compagnon-Codeur est à présent prêt pour la Maîtrise-Codage. Il a compris les logiques de développement, a multiplié les contextes et les langages de programmation, a développé son empathie et aujourd’hui, il est mûr pour devenir Maître-Codeur.
A ce niveau, le Maître-Codeur est capable d’écouter, comprendre et discuter les besoins de son client et au cours du développement, il sera apte à prendre toutes les petites décisions de fonctionnement pour faire de son projet un réel chef-d’œuvre dans avoir à appeler constamment son client.
Et cela n’est que le début de la formation du Maître-Codeur, qui doit toujours apprendre. En effet, les technologies changent perpétuellement et évoluent. Heureusement, fort de son parcours, il a aujourd’hui les modèles mentaux et le savoir nécessaires pour les
appréhender.
Le métier de développeur a beaucoup évolué au cours des temps. Même s’il est aujourd’hui vu comme un métier de jeune, ce métier nécessite pourtant une véritable
excellence qui ne peut s’acquérir que par une expérience solide et diversifiée à l’instar des
Compagnons. N’oublions pas qu’en développement logiciel, l’à-peu-près s’appelle un bug. Et un bug, c’est un système qui ne fonctionne pas et entrave le fonctionnement d’une entreprise. Les entreprises le savent bien : cela n’est pas acceptable lorsque l’on est
devenu un Maître-Codeur !