Edit : je rajoute juste un lien sur le même sujet, mais qui décrit / explique autrement : http://blog.mageekbox.net/?post/2012/07/04/Le-developpeur-une-espece-en-danger-d-extinction

Développeur senior

Au détour d'un article assez intéressant de Xebia sur la pénurie de seniors dans les équipes de développement je viens d'avoir une révélation : je suis désormais (enfin depuis quelques temps en réalité) un développeur senior ! :-)

Au delà de 5 ans d’expérience, les développeurs sont considérés comme « seniors »

Développeur senior ?

Honnêtement je trouve que cette classification senior est un peu prématurée. En gros le découpage, dans cet article, est fait comme suit :

  • 0 - 2 ans : débutant
  • 2 - 5 ans : confirmé
  • > 5 ans : senior

En même temps je commence pour ma part à vraiment sentir la différence entre aujourd'hui et quelques années en arrière, notamment dans une bien meilleur anticipation des problèmes pouvant survenir. Oui, c'est pour le coup l'expérience qui parle, surtout confronté à des développeurs débutants (ou n'ayant même pas encore fini leurs études) mais aussi par rapport à des développeurs ayant quelques années de boulot mais pas trop.

(oui je sais ça fait un peu vieux con ce que j'écris)

Donc oui, je me sens quand même comme un développeur ayant une assez bonne expérience, une culture assez large en informatique. Mais dans la classification l'un des points qui me gène est le suivant : il n'y a aucune étape après 5 ans d'expériences ? Qu'est-on lorsqu'on à 10 ans, 20 ans de dev derrière nous ?

Une pénurie de senior ?

Sinon, je suis plutôt d'accord avec ce billet. L'informatique (et malheureusement aussi les éditeurs de logiciels bien que ce soit peut-être un petit peu moins marqué) manquent cruellement de développeurs seniors. Evidemment un senior va demander un salaire plus élevé. Mais n'est-ce pas rentabilisé par la production d'un meilleur logiciel au final ? Moins buggé et plus maintenable (car le développeur a justement eu l'expérience suffisante, s'est déjà frotté plus d'une fois à un code non maintenable pour en avoir beaucoup plus conscience). Mais aussi simplement de part l'expérience la création de meilleurs logiciels, l'utilisation de méthodes plus adaptées, etc.

Le problème est que, au delà de ce problème de salaire, il y a un problème de mentalité. En France (je ne sais pas pour les autres pays) un développeur confirmé est tout juste considéré, un développeur senior l'est encore moins. En tout cas c'est le sentiment partagé par de nombreux développeurs. Alors que fait-on lorsqu'on est développeur ? Ben on devient chef de projet, directeur technique (c'est quand même mieux que chef de projet je pense, mais ça dépend des cas). Dans certains cas on va passer sur des phases spécifiques de conception, d'architecture, mais c'est parfois réducteur. Au final, certes on prend des responsabilités, mais on s'éloigne avant même d'avoir pu exploiter entièrement nos capacités, connaissances. En fait avec cette divagation on n'exploite même pas réellement l'expérience acquise. Et c'est dommageable pour tout le monde, pour les entreprises, les éditeurs de logiciels, comme pour les utilisateurs.

Principe de Peter

Concernant le phénomène de passer chef de projet (ou autre), je pense qu'il y a deux raisons : déjà lorsqu'on est dans une école d'ingénieur (surtout une école orienté info) c'est la voie qui est indiqué : tu sortira de l'école et tu prendra 50k€ tout en étant chef de projet. Mais il y a aussi une raison plus insidieuse, presque perverse, et qui fait beaucoup de tord (mais ce n'est pour le coup pas du tout lié à l'informatique). Il s'agit du principe de Peter :

tout employé tend à s'élever à son niveau d'incompétence

ou, si on prend l'un des principes de base :

un employé compétent à un poste donné est promu à un niveau hiérarchique supérieur

C'est quelque chose qui se rencontre (malheureusement ?) partout. Lorsqu'on est compétent, on nous donne le poste suivant. Si on est un développeur compétent, performant, avec plusieurs années d'expériences, on va vous demander de gérer des projets, voir de diriger le service développement. C'est bien, c'est gratifiant, c'est une promotion. Mais c'est, souvent, une erreur. En effet, si je suis bon pour développeur un logiciel, si je suis performant, efficace, compétent, ça ne veut pas dire que je le serai au poste supérieur. Il se peut que oui, auquel cas c'est très bien. Mais il se peut que non, ou que j'ai encore beaucoup de choses à donner au poste actuel.

Le problème c'est qu'on confond deux choses différentes. Un développeur qui deviendrait confirmé, puis senior, qui prend un rôle de plus en plus important dans le développement, qui devient référent sur certains points, qui va guider les autres, etc est une bonne chose. D'ailleurs ses évolutions devraient être également prises comme des promotions. Mais au lieu de ça que fait on ? On dirige vers chef de projet, directeur technique, responsable de service. Et là en réalité ce n'est simplement plus le même métier. En fait on change totalement de métier (car au final, faire du management de développeurs ou d'autres types de profiles reste en majorité du management)

Par cette confusion on va déconsidérer le développeur en faisant croire que l'évolution logique et de passer au management au lieux d'évoluer dans le développement. Le développement est alors vu comme une voie de garage, aussi bien par les développeurs (qui veulent donc l'éviter) que par les entreprises (qui ne le comprennent pas forcément, ne veulent pas payer les développeurs avec expérience, etc).

D'où la pénurie finalement.

Après, la non considération des développeurs est aussi, je trouve, du fait d'un manque de compréhension du métier. Beaucoup (y compris dans l'édition de logiciel) pensent que le développement est une chose assez "simple", que n'importe qui peut faire le boulot d'un autre, que l'expérience n'amène pas grand chose, ou qu'on peut juste blinder les développements / logiciels par des processus stricts.

Alors, que faire ?

Déjà faire réellement prendre conscience du métier de développeur. Et ça c'est à tous les développeurs de le faire. C'est pas évident, mais primordial. Faire comprendre que non, un stagiaire ne va pas pouvoir vous faire presque seul le logiciel critique de la boite, mais que payer un développeur confirmé / senior permettrait d'avancer correctement et d'avoir, au final, un bon retour (sur investissement).

Une fois ceci fait, faire comprendre que développeur, chef de projet, directeur technique, responsable de service sont des métiers différents, et combattre le principe de Peter.

Payer les développeurs à leur juste valeur.

Avec ceci, les choses devraient pouvoir s'améliorer, mais honnêtement je ne vois actuellement pas trop d'évolution à ces niveaux...


Pour l'histoire perso : je suis actuellement justement en train de changer de travail (je détaillerai probablement un peu plus tard). Entre autre chose j'ai justement du faire le choix entre changer de poste - passer du côté responsabilité de service - ou être considéré comme développeur expérimenté et donc continuer à développer (oui, il y a quand même des entreprises qui le comprennent). Sans surprise j'ai prix le deuxième choix, car je suis, pour le moment, développeur. Peut-être que dans quelques années je changerai de voie, je partirai vers d'autres domaines (du type de la première proposition), ou même dans un secteur totalement autre que le développement (je tiens fortement à mon côté - et ma formation - généraliste). De part mon choix, j'espère avoir, aussi, contribué à l'amélioration des deux premiers points mentionnés ci-dessus (pour le troisième c'est moins de mon ressort, enfin c'est plus compliqué quoi).