Interview Pierre Bretéché

Bonjour Pierre, peux-tu te présenter en quelques mots ?

J’ai toujours voulu enseigner, plus particulièrement aux adultes. Pour ce faire, j’ai suivi des études universitaires jusqu’au doctorat. Je me suis d’abord intéressé à l’ingénierie informatique puis j’ai bifurqué vers de l’informatique fondamentale, de la combinatoire, de l’intelligence artificielle. Mes études doctorales touchaient aux sciences cognitives, aux sciences des systèmes et à la captation de la communication non verbale en tant que flux de stimuli émotionnels.

À l’issue de mes études, j’ai eu l’opportunité de participer à la création d’une Start Up qui montait un projet de partage de bases de données géographiques sur Internet. J’ai été embauché en tant qu’ingénieur Recherches & Développement, principalement sur l’aspect interface utilisateur 3D. Je développais sur un portail web ; c’est à cette occasion que j’ai réellement pu faire mes armes dans le domaine.

En 2011, Gilles, un ami, m’a appris qu’il y avait un poste de formateur à pourvoir dans sa société. J’allais enfin pouvoir enseigner ! Cela fait maintenant 5 ans que je travaille chez Dawan. Aujourd’hui, je suis responsable du Pôle Web et j’assure des formations sur les différents langages, CMS et tout ce qui touche au développement LAMP, domaine dans lequel j’ai le plus d’expérience.

Pendant tes expériences, tu as pu découvrir la philosophie Agile, pourrais-tu nous en parler ?


L’agilité, quand il s’agit de projet informatique, ce sont des valeurs avant d’être des outils. C’est une thématique qui me tient à coeur. J’en avais entendu parler au début de mes études mais ça restait assez abstrait pour moi car je n’avais pas, à l’époque, de vision de projet d’entreprise. Lors de mon expérience dans la start-up, c’était devenu plus concret.

On créait à partir de rien, donc on a pu mettre en place la gestion de projet qui nous convenait et ce, dès le départ. Cette expérience m’a paru particulièrement efficace. L’objectif pour nous était de pouvoir produire très rapidement des premières versions «beta» et de bénéficier du retour des futurs utilisateurs afin d’adapter au mieux le produit au besoin. Les interactions au sein de l’équipe de développement étaient particulièrement intéressantes car elles permettaient une bonne montée en compétence de chacun.

Le manifeste Agile met en balance quatre couples de valeurs.

En premier lieu, on va privilégier la capacité à s’adapter au changement à la planification, même si elle reste importante. On considère qu’il vaut mieux rectifier le tir sur un projet que de suivre à la lettre un diagramme de GANTT.

Et puis, les méthodes Agile privilégient la collaboration avec les clients plutôt que la négociation commerciale. Dans le cadre d’une organisation Agile, la personne propriétaire du produit doit pleinement s’impliquer dans le pilotage du projet. Elle peut ainsi indiquer la bonne direction à prendre pour que les développeurs s’adaptent au mieux à ce qui est demandé. Cela évite, entre autre, les défauts d’interprétation des besoins.

Le troisième axe privilégie les individus et leurs interactions plutôt que les processus et les outils. Mieux vaut apprendre à se connaître et à travailler ensemble plutôt que de penser qu’un outil miracle va pouvoir régler tous les problèmes. Les outils doivent être au service d’une démarche collective plutôt qu’une contrainte imposée.

Le dernier axe nous dit qu’il vaut mieux privilégier des logiciels qui fonctionnent plutôt qu’une documentation exhaustive. Dans beaucoup de projets, on a tendance à mettre en avant la documentation qui est importante certes, mais qui doit s’appuyer sur un applicatif qui fonctionne sinon ça ne sert à rien.

En méthode Agile, les cycles de développement sont très courts : entre une et quatre semaines, afin assurer une livraison très régulière au client. C’est bénéfique à plus d’un titre. Par la mise à l’épreuve régulière, on solidifie ses méthodes de livraison. On reçoit également des retours répétés du client. Cela permet enfin de réorienter le développement et donc de réduire drastiquement les coûts de réajustement.

La recherche de la satisfaction du besoin client est au centre des méthodes Agiles. C’est une approche beaucoup plus raisonnée de la gestion d’un projet. Le développement logiciel est par essence un travail créatif. Un développement doit répondre à des problématiques qui n’ont pas encore de solutions. On rencontre nécessairement des imprévus, des difficultés mais on trouve aussi de meilleures idées issues du renforcement de la connaissance du projet. Les méthodes Agiles reconnaissent l’existence de ces imprévus et se concentrent sur « comment réagir au mieux » plutôt qu’à la recherche de boucs émissaires. Cela en fait une démarche beaucoup plus productive à mes yeux !

En définitive, l’agilité génère un indicateur fiable pour favoriser la livraison d’un logiciel qui fonctionne. Ça ne va pas forcément permettre de développer plus vite. On va en revanche être intransigeant sur la qualité du produit.

Par conséquent, le produit est de qualité, testé. Une nouvelle fonctionnalité ou un correctif sur le logiciel devra passer une batterie de tests avant que celle-ci ne soit ajoutée en production. Cela induit un confort non négligeable : la possibilité de se tromper sans que cela ne soit irrémédiable. L’humain fait et fera toujours des erreurs. Mais un projet géré en Agile permettra d’amoindrir sinon de d’annihiler les problèmes ainsi générés, que l’erreur soit imputable au développeur ou qu’elle soit due au client.

J’essaie de transmettre la philosophie de l’agilité au travers de toutes mes formations, tout particulièrement les formations type « avancée » ou « expert » dans lesquelles les grammaires des langages sont déjà maîtrisées et où l’on s’intéresse davantage aux techniques et aux méthodologies.

Dans la continuité de l’agilité, tu souhaitais nous parler d’un tout nouveau framework, Angular 2...


C’est un framework qui veut être « Agile Friendly » : il permet de faire du développement modulaire. Sa nouvelle mouture vient tout juste d’être rendue publique.

C’est un projet Open Source poussé par Google. Il est largement pressenti pour devenir le leader du marché des frameworks JavaScript.

Les concepteurs se sont basés sur l’expérience d’AngluarJS, développé aussi par Google. L’équipe est d’ailleurs presque équivalente, même si une partie des développeur d’Angular première version ont voulu développer un autre framework de leur côté : Aurelia.

Le patron de conception d’injection de dépendance (DI) est un concept central d’Angular 2. L’idée est de créer des services qui vont collaborer les uns avec les autres plutôt qu’une grosse application monolithique.

Le cloisonnement et l’autonomie de chaque service permet de les faire évoluer individuellement sans impacter le reste de l’application. On ne risque pas de casser une fonctionnalité sans le vouloir.

On va aussi pouvoir récupérer et intégrer plus facilement des services développés au sein de la communauté Open Source.

Si le rythme de développement demeure élevé, c’est aussi du fait de son architecture modulaire. On se concentre sur de petits développements à chaque fois.

La différence entre Angular et les autres Frameworks permettant de faire du Rich Internet Application (ou plutôt du Single Page App de nos jours), c’est sa modernité.

Angular va pouvoir s’appuyer sur les normes ECMAScript 2015, la sixième édition de JavaScript et donc profiter des nouveautés du langage.

Angular nous facilite la vie si on veut piloter le projet par les tests. Il est conçu pour être branché aisément sur des jeux d’outils comme Selenium, Protractror, Karma ou encore Jasmine. On va pouvoir décrire comment doit réagir l’application et vérifier tout au long des phases de développement que les contraintes que l’on a posées sont toujours respectées.

Dans la formation Angular2 que nous venons de mettre en place, on va étudier en profondeur le développement piloté par les tests, avec le suivi de version, comment on évite la régression, comment ne pas se laisser surprendre par un bug qui monte en production...

Pour les ateliers pratiques, nous privilégions le concret. Montrer un cas d’école c’est important mais ce qui l’est d’autant plus, c’est de pouvoir corriger ses erreurs en s’appuyant sur la technologie. Il faut que mes apprenants sortent suffisamment avertis et préparés pour pouvoir faire face à leur projet et pour réagir convenablement en fonction des imprévus. Mon approche personnelle est la suivante : un langage informatique c’est comme un langage naturel dont il faut apprendre la grammaire et la syntaxe. Or la qualité d’un développeur ne se mesure pas à sa connaissance exclusive du langage mais en sa capacité à construire un discours efficace et cohérent.

Pourquoi un tel engouement autour des frameworks JavaScript aujourd’hui ?



C’est assez nouveau. Le JavaScript n’est pas un langage récent mais il a été dénigré à ses débuts : on craignait les problèmes de sécurité et on regrettait le manque de compatibilité entre les navigateurs. Les applets Flash et Java n’ont pas rencontré ce genre de problèmes à leurs débuts.

Certains acteurs comme Google ont décidé de développer tout de même leurs applications en JavaScript : Gmail, Google Maps, Docs, Drive... Ceci a été rendu possible par un important investissement dans le monde des standards et de l’open-source. Toutes ces applications sont particulièrement complexes et démontrent la maturité de la technologie. Résultat : on n’a pas à recharger la page une seule fois. Tout est fait en JavaScript.

Maintenant que l’on essaye de dématérialiser, de sortir les applicatifs des terminaux pour les mettre dans le Cloud, de nombreux efforts ont été fait au niveau des navigateurs ; JavaScript lui-même a beaucoup évolué. On bénéficie aujourd’hui d’un environnement favorable à du développement entièrement fait sur JavaScript.

Sur le marché du travail, les développeurs ayant une bonne connaissance JavaScript sont rares et, de fait, sont très recherchés.

Angular nous facilite la vie si on veut piloter le projet par les tests. Il est conçu pour être branché aisément sur des jeux d’outils comme Selenium, Protractror, Karma ou encore Jasmine.

Pour en savoir plus sur nos formations :
- nos formations Java
- nos formations Angular JS
- nos formations JavaScript