logo le blog invivoo blanc

L’intérêt de se diversifier pour un développeur

17 octobre 2017 | C#, C++, Front-End, Java, Python

Philippe Boulanger, Manager d’Expertise Python, nous parle de la nécessité pour un développeur de se confronter à des langages différents.

Au cours de ma carrière, j’ai été confronté à des collègues ayant eu un apprentissage incomplet de l’informatique : leur formation s’était concentrée sur l’apprentissage d’un seul langage dans un contexte limité à la création d’applications simples (application graphique client lourd ou application orientée batch pour la finance).

Du fait des problèmes du bug de l’an 2000 et du passage à l’Euro, de nombreux scientifiques (chimistes, biologistes, etc…) ont été recrutés après une brève formation (de 1 à 3 mois) afin de fournir la main d’œuvre nécessaire à la maintenance de toutes les applications comptables et financières. Ces personnes, certes compétentes, n’avaient ni le même recul ni le même bagage théorique que celui que j’avais sur les tenants et aboutissants des technologies que nous manipulions. La complexité algorithmique leur était, par exemple, étrangère, leur faisant prendre de mauvaises décisions algorithmiques. De plus, certaines techniques/pratiques pouvaient leur manquer : la résolution récursive d’un problème ou l’optimisation de la consommation mémoire en font partie.
Plus grave, ne pas savoir poser les bonnes questions pour compléter un besoin client incomplet.

citation maslow

Le marteau de Maslow, un parallélisme évident avec le métier de développeur

C’est lors d’un débat politique que j’ai entendu pour la première fois cette phrase qui résonnait avec mes expériences personnelles : « Lorsque le seul outil que l’on ait sous la main est un marteau, alors tous les problèmes finissent par ressembler à des clous». Cet aphorisme appelé « Marteau de Maslow » illustre la tentation qui consiste à travestir la réalité d’un problème en le transformant en fonction des réponses dont on dispose, ou encore le fait de considérer qu’il n’y a qu’une réponse unique à tous les problèmes. Cela m’a amené à me poser des questions sur notre capacité de compréhension des problèmes informatiques en fonction des langages que nous connaissions.

marteau maslow developpeur

Le langage, influenceur de pensée

En effectuant des recherches, je me suis rendu compte que notre langue maternelle pouvait conditionner notre perception et notre compréhension, notre façon de penser : Guy Deutscher (linguiste), dans son livre “Through the language glass”, pense que certains langages insistent sur des points spécifiques, ce qui peut leur donner une perception accrue de certains phénomènes. Par exemple, les langues allocentrées (centrées sur l’autre ou la situation) ne disposent pas de coordonnées spatiales relatives telles que gauche, droite, devant ou derrière. Elles expriment des coordonnées absolues telles que Nord, Sud, Est ou Ouest. Les membres des populations utilisant ce genre de langage sont capables de se repérer plus aisément dans n’importe quel contexte : que ce soit dans le noir ou dans une grande ville, ils savent spontanément où est le Nord. Sont-ils pour autant incapables de comprendre les concepts de gauche ou de droite, d’avant et d’arrière ? Pas du tout. Il leur suffit de les apprendre. Par exemple, en leur apprenant des langages tels que le français ou l’anglais,  ils  manieront ces concepts aussi bien que nous.

La psychologue et neuroscientifique Lera Boroditsky a exposé dans une interview pour Edge que la vision du temps des populations utilisant une langue allocentrée était liée à leur conception de l’espace. D’autres expériences ont montré que la vision des germanophones est holiste, c’est-à-dire qu’elle prend en compte le cadre dans lequel s’inscrit l’action. Les anglophones ont quant à eux tendance à se focaliser sur l’action elle-même. Cela serait le résultat des différences grammaticales entre les deux langues.

Le langage conditionnerait donc notre façon de penser. Être polyglotte ajoute de nouveaux outils pour percevoir, comprendre et résoudre les problèmes. À la lumière de ces informations, la compréhension de mes expériences passées devient claire : les fonctionnalités proposées par les langages qu’un développeur connait et la diversité des expériences professionnelles qu’il aura eues vont contraindre le type de solutions qu’il pourra apporter à un nouveau problème.

Conclusion

Une personne n’ayant travaillé qu’avec un langage impératif structuré aura des difficultés à aborder des problèmes nécessitant une résolution par des méthodes fonctionnelles ou logiques comme les problèmes à satisfaction de contraintes ou de calcul formel. Afin d’être polyvalent et capable d’aborder tous les problèmes avec un œil critique, un développeur doit apprendre les techniques liées à des paradigmes de programmation différents : impératif structuré (FORTRAN ou C), fonctionnel (Lisp, Scala, Ocaml ou Haskell), objet (C++, C# ou Java), logique (Prolog)…

Dans le but de devenir un bon développeur, il doit se confronter à des techniques et des environnements différents pour enrichir sa culture générale informatique et apprendre de nouveaux outils lui permettant de faire face aux nouveaux défis.