Au secours Léonard !

Mathieu Eveillard
8 min readMay 30, 2018
Photo by Alex Block on Unsplash

Au temps de Léonard de Vinci, un érudit pouvait encore espérer avoir lu et assimilé l’ensemble du savoir produit par ses pairs ; aujourd’hui, la quantité d’information produite par les humains et les machines double toutes les 12 heures. Toute information n’est peut-être pas digne d’être érigée au rang de savoir, mais on conçoit que plus personne aujourd’hui ne puisse espérer en digérer autant.

Or toute personne s’intéressant à un champ de savoir particulier doit être en mesure d’en faire une synthèse suffisante s’il veut l’utiliser ou, peut-être, le prolonger. Comment y parvenir ?

La percée du JavaScript

Passé d’un langage de type « coin de table » à un véritable écosystème fullstack en moins de 10 ans, le JavaScript a opéré une percée qui illustre bien la nécessité et l’opportunité pour les individus et les organisations de se renouveler. Retraçons son histoire.

Le JavaScript fait son apparition dans les navigateurs en 1995, apportant du dynamisme par petites touches. En 2006, jQuery voit le jour, qui facilite les manipulations du DOM et exploite l’objet XMLHttpRequest, normalisé par le W3C l’année suivante. Ainsi naissent les architectures AJAX et les premières vraies Single Page Applications, auxquelles Backbone.js apporte de la structure en 2010 avec une implémentation du patron MVC et le recours aux événements.

Bien que l’on doive beaucoup à jQuery et Backbone, plus personne n’a désormais recours à ces librairies pour de nouveaux projets : dès 2009, Angular JS, son architecture MVC et les différents bindings permettent l’écriture des vues dans un style déclaratif. En 2016, Angular 2 enrichit et complète l’environnement de travail avec l’injection de dépendances, facilitant la modularité et la testabilité. Les entreprises disposent pour la première fois d’un framework front-end d’ordre industriel.

Puis, en 2013, React introduit le premier DOM virtuel, procédé largement adopté ultérieurement par les autres librairies Front-End du fait de son apport en termes de performances. Les bonnes pratiques conduisent à l’adoption d’architectures à flux de données unidirectionnels, implémentées pour la première fois par la librairie Flux mais aujourd’hui plus fréquemment par Redux et Mobx.

Ember et Vue ainsi que d’autres frameworks ou librairies Front-End viennent continuellement enrichir l’outillage du développeur, avec plus ou moins de succès : nous avons par exemple passé sous silence des tentatives intéressantes mais infructueuses telles que GWT, dont la première version date de 2006.

2009 est une année charnière, car c’est l’année où Node.js et son moteur V8 portent le JavaScript côté serveur, fournissant un écosystème suffisant pour créer des applications complexes de bout en bout, au développement comme à l’exécution. L’environnement de développement que nous évoquons comprend l’outillage nécessaire à la programmation par les tests (TDD, BDD), divers gestionnaires de paquets, transpileurs, linteurs et autres outils d’automatisation, qui ont emmené cet environnement à un niveau de maturité comparable à ses équivalents Java ou .NET.

Cet exemple illustre le fait qu’un développeur JavaScript rentré sur le marché il y a cinq ans puisse être aussi opérationnel qu’un développeur Java ou .NET. Il est en revanche une certaine maturité technique et méthodologique qui ne s’acquiert qu’avec le temps (cf. effet Dunning-Kruger).

Inversement, un développeur venant de langages objets fortement typés et n’ayant pas investi ce champ de connaissances aurait à payer un coût d’entrée important s’il était amené à mettre en place une Single Page Application : l’implémentation du paradigme objet par prototypage plutôt que par recours aux classes et l’asynchronisme propres au JavaScript demandent d’apprendre à penser différemment.

En ce sens, l’informatique est un domaine où prévaut l’égalité des chances : le paysage technologique avance. Si nous ne faisons pas l’effort nécessaire pour nous former, nous adapter et nous renouveler à son rythme, nous sommes dépassés. Tout nouvel entrant, parce qu’il va se former aux dernières technologies, trouvera a contrario une place dans cette course — le terme n’est pas des plus heureux.

Soyez acteur de votre formation !

Mettre en place une veille technologique personnelle active est d’autant plus nécessaire que la tendance naturelle des entreprises, lorsqu’elles n’y prennent pas garde et privilégient le court terme, est d’utiliser leurs salariés pour les compétences qu’ils maîtrisent déjà, les enfermant de fait dans leur zone de confort. Cette tendance se renforce du fait de l’évolution de la relation employeur-employé.

En effet, le modèle des grandes entreprises qui prévalait il y a 15 ans privilégiait l’embauche des ingénieurs au sortir de l’école et leur formation au cœur de métier via un parcours de long terme. L’entreprise investissait à 10, 20 ou 30 ans sur un individu dans le but de l’emmener à occuper un niveau de poste fonction de son potentiel. La contrepartie était une fidélité tacite et voulue de l’employé.

S’il est encore en vigueur dans quelques très grandes structures, notamment celles dont l’activité est fortement capitalistique (pétrole, électricité), ce modèle a clairement perdu de sa vigueur à mesure qu’est apparue de la défiance entre employeurs et employés. Parmi ces derniers, rares sont ceux qui envisagent encore de mener toute leur carrière au sein d’une même entreprise, voire d’exercer un métier unique. Le regain d’intérêt pour le statut d’indépendant est la manifestation extrême de ce phénomène.

Photo by Ari He on Unsplash

En conséquence, l’investissement de l’entreprise dans ses salariés n’est plus le même et l’individu doit être acteur de sa carrière et de sa formation. La mise en place du CPF (Compte Personnel de Formation) va en ce sens.

Cinq considérations pour une veille efficace

On n’a pas l’opportunité de faire un démonstrateur pour chaque technologie dont on souhaite comprendre l’apport. Heureusement, quelques réflexions simples aident à positionner le curseur et à choisir les technologies de manière éclairée sans aller nécessairement dans le détail.

1. Favoriser la sérendipité

Ne vous bridez pas. Votre intérêt premier est pour l’intelligence artificielle ? Gardez quand-même un œil sur les technologies et savoir-faire du Web. Qui sait ce que vous pourriez y trouver ? Des mécanismes de pensée à transposer ? Un champ d’application possible ? Une porte ouverte vers un autre domaine ? Soyez curieux. Faites des choses sans idée de ce qu’elles pourraient vous apporter. Autrement dit, favorisez la sérendipité.

2. Savoir qu’une technologie existe, ça n’a pas de prix

La seule information de l’existence d’une technologie est en soi d’une grande valeur, parce qu’elle pourra être mobilisée ultérieurement quand il s’agira de résoudre un problème.

Il s’agit donc, au moment d’aborder une nouvelle solution, de comprendre à quoi elle sert, ce qui a motivé sa création, quelles autres technologies elle concurrence ou complète et, idéalement, le principe de son fonctionnement. Ceci afin de nous prémunir contre une utilisation à contresens, telle l’utilisation de MongoDB avec des réflexes issus du SQL, malheureusement fréquente. Ou bien d’utiliser une technologie pour tout faire, surtout ce à quoi elle n’est pas destinée… parce qu’on ne connaît que celle-là ! Par exemple, utiliser MongoDB comme solution de cache.

3. Savoir ce que je ne sais pas

Nul ne peut avoir pour ambition de mener une veille technologique au même niveau de granularité dans tous les domaines, ceux-ci pouvant être aussi larges que l’informatique de gestion, le big data ou l’intelligence artificielle. Les journées ne faisant que 24 heures, une ambition réaliste pourrait être de « savoir ce que je ne sais pas ». Autrement dit, être en mesure d’apprécier l’étendue de sa propre ignorance et la quantité de travail déjà fournie par la communauté sur un sujet.

Une des plus grandes inefficacités serait en effet de réinventer la roue, avec de surcroît la quasi-certitude de n’y jamais arriver.

Cette veille, aussi simple soit-elle, permet a minima de décider des domaines sur lesquels se former prioritairement et par là-même de construire sa feuille de route d’auto-formation.

4. Les technologies s’envolent, les concepts restent

Connaissez-vous Cycle.js ? Peut-être pas. Cependant, vous en aurez une idée assez précise dès que vous saurez qu’il s’agit d’une librairie JavaScript Front-End qui permet l’écriture de Single Page Applications dans un style fonctionnel et réactif. Fonctionnel parce que vous n’écrivez que des fonctions pures, les interactions avec le monde extérieur (DOM virtuel, requêtes HTTP etc.) étant assurées par des drivers ; et réactif du fait de l’utilisation d’observables, qui autorisent la manipulation de flux de données à l’aide de méthodes généralement utilisées pour des structures de données, la fonction map() par exemple. Le tout permet l’écriture d’un code hautement testable, toute entrée pouvant faire l’objet d’un mock, même le temps !

Personne n’en doute, mais les concepts, patrons de conception et paradigmes qui sous-tendent l’informatique sont autant de bouées qui permettent d’appréhender rapidement une nouvelle technologie.

5. Rien ne sert de courir… faut-il partir ?

Autrement dit, un peu de recul ne fait jamais de mal. Il y a quelques mois encore, un développeur Web désireux de se former aux applications mobiles avait le choix entre le développement natif (Android ou iOS) et l’utilisation de frameworks tels que Cordova (WebView + code natif), React Native (pilotage de composants natifs par un thread JavaScript) ou Flutter (Dart compilant en code natif).

Or, si à l’origine les sites Web ne soutenaient pas la comparaison face aux applications mobiles en termes d’expérience utilisateur, il n’en est plus rien aujourd’hui grâce au JavaScript. D’ailleurs, on parle bien d’applications Web. Partant de ce constat, les navigateurs ont évolué depuis 2015 pour abolir la frontière entre sites Web et applications mobiles. On accède à présent à une page Web en plein écran et en mode offline de la même manière qu’on accède à une application, et ce grâce à l’adjonction de quelques mécanismes de synchronisation (Service Workers). Ce sont les Progressive Web Apps. Le bénéfice est grand, parce qu’il n’est plus nécessaire de gérer un site Web d’une part et N applications mobiles d’autre part.

Cet exemple illustre le fait qu’il est parfois « urgent d’attendre », puisqu’il ne sera peut-être plus nécessaire de se former au développement mobile.

Ouverture

Face au rythme soutenu de la production des savoirs et du renouvellement technologique, la capacité à mener une veille technologique active et efficace est autant une nécessité pour l’individu qu’une compétence à part entière que les entreprises gagneraient à rechercher parmi les candidats à l’embauche.

Cette compétence est d’ailleurs peut-être le propre d’un bon « généraliste » du développement, un individu dont la qualité première serait la capacité à manipuler concepts et méthodes à haut niveau tout en conservant celle d’aller dans le détail si nécessaire.

Vous avez dit un architecte ?

--

--