Un article intéressant sur le métier de développeur a été commenté dans L’Informaticien ces jours-ci. La thèse de Roy Bahat est que programmer pourrait devenir une commodité, et le métier associé une profession courante.
Bien que la thèse soit intellectuellement très attirante, je pense que c’est confondre deux choses : être capable de développer ne fait pas de quelqu’un un développeur, de la même manière que faire du jardinage le dimanche n’a jamais transformé une personne en agriculteur.
Bien sûr, coder est devenu plus facile, et il est effectivement possible de former des gens qui n’ont que peu de connaissances techniques à programmer en Java en quelques mois. Roy Bahat reconnait toutefois que l’expertise prend par contre beaucoup de temps, mais explique qu’on peut développer à peu de frais.
Je pense que ces deux dernières parties de sa thèse sont vraies, mais incomplètes…
Les développeurs sont de plus en plus experts
Il est tout à fait vrai qu’il est possible d’apprendre à coder en relativement peu de temps. Mais dans le même temps, l’industrie informatique s’oriente plus vite vers des besoins d’expertise. La programmation s’est simplifiée, mais cette simplification fait qu’on peut utiliser plus facilement des briques logicielles pré-existantes pour créer des surcouches plus complexes.
Il y a une dizaine d’années encore, il arrivait que des développeurs “pissent du code”, mais ce n’est plus le cas depuis pas mal de temps. Le vrai métier du développeur s’est fortement spécialisé, et aujourd’hui, il s’agit plus de connaitre les méthodes performantes et agiles de créer un code facilement maintenable, générique, évolutif. En plus de ceci viennent les problématiques de sécurité que les développeurs doivent de plus en plus prendre en compte.
Alors, effectivement, il est facile de faire une petite application mobile Android sur un coin de table, mais il ne faut pas considérer ceci comme le métier d’un développeur. Il y a un monde entre ce prototype et un passage en production, qui est au moins le triple de ce qui est nécessaire. L’application qui fonctionne doit être vue comme un prototype : il faut ensuite savoir la déployer, la sécuriser, la mettre à jour, la maintenir et la rendre robuste. C’est là qu’intervient le développeur, et honnêtement, je ne pense pas que quelqu’un soit capable de ceci avant plusieurs années d’expérience.
La thèse du prix
La notion de coût de développement est également sujette à caution. Roy Bahat parle du coût des outils de développements, et effectivement, avec un ordinateur d’entrée de gamme et des outils gratuits comme Eclipse ou Visual Studio Express, n’importe qui peut commencer à programmer.
Mais le coût d’un développement n’a rien à voir. Encore récemment, une étude est sortie (voir ici pour un résumé), dans laquelle la dette technique est estimée à 5,42 $ par ligne de code en Java. Or, justement, programmer des applications avec des développeurs débutants est le meilleur moyen d’avoir une dette technique élevée. Faites le calcul : sur une application de 100 000 lignes (ce qui n’est pas énorme : au travail, je suis au contact de progiciels avec un nombre de lignes de l’ordre du million), en imaginant même que 99% des lignes soient parfaitement écrites, il reste un coût, juste pour la correction de la dette technique, de 5420 $.
Beaucoup plus qu’un portable… Et c’est là la limite de cette comparaison : apprendre à développer ne coûte effectivement pas cher, mais laisser un non-expert coder coûte à l’inverse une fortune, et ce n’est pas par hasard que les éditeurs de logiciels préfèrent de beaucoup embaucher un expert plutôt que trois développeurs moyens.
Le coût de l’expertise
Au final, l’activité de développement n’a rien à avoir avec simplement savoir programmer. Pour prendre une autre comparaison, effectivement tout le monde sait ou peut apprendre facilement à faire du vélo. Mais faire son métier du cyclisme n’est pas donné à tout le monde. Il faut de l’entraînement, de la discipline, et un réel talent.
Je me rappelle qu’il y a une quinzaine d’années, lorsque les macros sont apparues dans Excel, les magazines informatiques fleurissaient de formules pour nous expliquer que nous allions tous programmer. Et au collège, les MO5 et TO7 allaient, grâce au BASIC, permettre à tout un chacun de savoir coder. Mais combien d’entre nous sommes réellement allés jusqu’au bout ? Des langages apparaissent chaque année, promettant de mettre à la portée du plus grand nombre la programmation. Force est de constater que malgré tout, ça ne décolle pas… et pour cause !
Pour finir
Mon opinion personnelle est que cet article suit une longue série autour de l’idée que les nouvelles approches informatiques (interfaces simples, utilisation ubiquitaire du web, réseau social, etc.) sont une nouvelle façon de réaliser du travail productif. Malheureusement, ce n’est pas le cas, et il ne s’agit que d’enrobage. Clairement, une belle interface est désormais essentielle, mais savoir l’utiliser n’a rien à voir avec la coder.
Encore aujourd’hui, j’ai fait une visite d’étudiants dans ma société, et le message que j’espère leur avoir fait passer est que, à la fin des fins, la seule chose qui compte est de connaître son client et de satisfaire ses besoins. Attention à ne pas se sentir l’âme trop conquérante avec des thèses comme celle de Roy Bahat, ou avec des articles comme celui-ci. Les nouveaux arrivants auront beau mieux maîtriser les nouvelles technologies, ils mettront toujours beaucoup de temps à apprendre à les créer. L’iPhone est un outil de jeunes, mais n’oublions pas qu’il a été conçu par des gens à la tête desquelles étaient un entrepreneur de 50 ans et un designer de 40…
En conclusion, doucement les jeunes ! Développer, c’est un métier (mais c’est peut-être le deuxième plus beau du monde…)
Je suis tout à fait d’accord avec ce que tu dis.
Effectivement les éditeurs ont tendance à sortir des outils de développement de plus en plus facile à utiliser. Si on regarde les évolutions des designers de Visual Studio, ou l’arrivée de Lightswitch ou WebMatrix, on se rend compte que développer une application basique devient accessible aux non-informaticiens.
Mais comme tu le soulignes, développer est un métier, et cela nécessite à la fois des connaissances (algorithmie, architecture, réseau, base de données, mathématiques, méthodologie, etc..), et de l’expérience.
Le développement représente une étape dans le cycle de vie d’une application, et les autres étapes sont tout aussi importantes.
Enfin, dès qu’il s’agit d’obtenir une application performante, ou avec forte volumétrie des données, ou très sécurisé, ou encore très évolutive…. Ce n’est même plus la dette technique qui est trop importante avec les développeurs amateurs, c’est simplement qu’ils ne sont pas capables d’atteindre l’objectif.
Salut Jean-Philippe,
Tout à fait d’accord avec toi sur le sujet. D’ailleurs, si on prend l’exemple de notre entreprise, on se rend compte que ce n’est pas si simple que cela.
Pour poursuivre le débat, voici deux articles qui mettent de l’eau à ton moulin :
– J’écris du code
– Avant de se mettre à écrire, il faut apprendre à lire