[:fr]La parole est aux speakers : Nicolas Wurtz[:]

Publié le

[:fr]Jusqu’au PHP Tour Montpellier 2018, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils aborderont lors de leur conférence !

La conférence

GRAOU : la production ferroviaire collaborative

Les conducteurs et contrôleurs des trains SNCF ont toujours eu leur planning au format papier. En tant que conducteur de trains, j'en avais assez de le saisir tout à la main, et me suis mis en tête de créer un outil simple de synchro entre nos agendas électroniques et nos métiers. Puis en voyant les données passer, et grâce à l'arrivée de l'openData, le champ des possibles est devenu immense : qui est sur quel train, quel matériel, quels statistiques, quand vais-je croiser mes collègues, où manger, qui dort où, etc. et tout ça dans une web-app construite from scratch en PHP/MariaDb, un peu de JS et une grosse réflexion UX (le métier développe pour le métier !). GRAOU est aujourd'hui la première application interne collaborative SNCF, unanimement plébiscitée et massivement utilisée par les agents concernés. C'est l'histoire d'un conducteur de trains qui jongle désormais avec les containers docker et optimise php-fpm pour gérer les 800k vues/jour...

Salle Morpheus
18/05/2018
11:25-12:05

Les applications internes à la SNCF doivent avoir tout de suite de grands impacts sur les voyageurs. Quels sont les conséquences sur le développement de ces applications ?

Nous avons la particularité chez SNCF, d’en plus être une très grande entreprise (250.000 collaborateurs), d’avoir une diversité de métiers très importante, ce qui entraîne un besoin et une offre d’applications internes tout aussi importante, parfois déployées de manière nationale, parfois créées au fin fond d’une région — la multiplicité des lieux de travail est une des raisons de ces besoins parfois très spécifiques et locaux.
Ce n’est donc pas évident, encore aujourd’hui, de proposer des outils qui conviennent à toutes et à tous, tant côté contenu que contenant, les spécificités et silos sont encore très répandus, mais heureusement ces inconvénients disparaissent peu à peu grâce aux choix d’ouverture et de transparence de la donnée qui sont mis en oeuvre depuis quelques années, et de plus en plus.
De mon côté, justement grâce à ce qu’a apporté (mais aussi imposé !) l’openData, j’ai pu construire mon application, qui à défaut de servir directement les voyageurs, donne une information identique et généralisée aux agents qui l’utilisent.
Et cette facilité d’accès à l’information qui concerne les acteurs des trains, rend leur mission plus limpide et plus impliquée — ils savent avec qui ils peuvent travailler, sur qui ils peuvent compter, et ça change tout. L’humain est revenu au centre du système, il a un nom et pas seulement un numéro de train, par conséquent les interactions avec les voyageurs et la qualité du service apportée s’en trouvent améliorées.
Un exemple ? GRAOU permet de synchroniser le planning d’un agent avec un agenda électronique au format ICS. Une contrôleuse, récemment divorcée, avait toutes les peines du monde pour partager son planning, à la main, avec son ex-mari quant à la garde de leurs enfants.
Aujourd’hui, celui-ci a sur son smartphone le planning de la mère de ses enfants, il sait quand elle aura besoin de lui et peut s’organiser en fonction. Et cette collègue part l’esprit plus serein s’occuper de ses voyageurs à bord du train; et dans ce métier qui peut s’avérer très difficile parfois, pouvoir commencer sa journée en toute quiétude n’est pas insignifiant…

GRAOU : depuis combien de temps travailles-tu sur cette application ?

L’idée est venue à l’été 2014, je savais que la donnée nécessaire était là (les plannings théoriques des conducteurs et contrôleurs), qu’on pouvait en faire un truc sympa qui nous donne des informations que nous n’avions pas jusqu’alors. J’ai donc pris d’un côté php.net pour la référence, git (comment faire autrement ?) et le bon sens de l’autre côté, pour commencer à parser les fichiers textes qui contenaient les données dont j’avais besoin. L’openData émergeait en parallèle avec un champ des possibles immense déjà et toujours plus grand aujourd’hui. Depuis toujours sur mon temps libre, j’ai mis deux mois à faire une première version, il fallait que ce soit sexy, moderne, responsive (les conducteurs commençaient à être équipés en iPad pour afficher les fiches de route des trains avec les arrêts) en me disant que ce serait peut-être opportun de prévoir, au cas-où, que ça pourrait intéresser des collègues d’autres régions. En octobre, 50 inscrits le premier jour, le lendemain des lorrains m’envoyaient leurs roulements (plannings) pour intégrer l’application, la semaine suivante, Paris-Gare-de-Lyon était sur la brèche. 2.000 inscrits 6 mois plus tard, aujourd’hui 18.000, soient 90% des agents de conduite et commerciaux des trains, uniquement en bouche à oreille.
J’ai dû m’adapter, me tromper, scaler, comprendre la nécessité d’optimiser chaque requête, chaque routine, idem côté serveur, et aujourd’hui c’est toujours vertigineux quand je m’aperçois que pour une broutille d’un timeout mal réglé le serveur peut tomber bêtement. Mais j’ai énormément appris. D’une part côté technique, mais aussi côté humain, gérer le support pour des collègues non connaisseurs du fonctionnement d’une web app, et toujours avec la même obstination de ne pas me créer du travail supplémentaire, ce n’était pas une évidence !
Un forum (pour le coup en Ruby (Discourse), désolé…) est là pour amortir les demandes, requêtes, conseils, me permet de faire le tri entre les issues à reporter dans mon gitlab, les demandes de fonctionnalités, les problèmes divers et variés. Bref, c’est prenant, mais passionnant, et surtout, surtout, j’ai bénéficié d’une extrême bienveillance de la part de mes utilisateurs, comme je suis l’un des leurs (conducteur), ils comprennent que ça peut prendre du temps, et se sentent impliqués.
Au final, c’est très gratifiant et motivant au quotidien de bénéficier de leurs remarques et encouragements. Vous en connaissez beaucoup des chefs de projets qui reçoivent toutes les semaines des mails d’amour de leurs utilisateurs ?

De conducteur de train à développeur : quel a été ton parcours de formation ?

J’ai dit que j’avais un Bac littéraire ? Voilà pour la formation.
Plus sérieusement, je suis autodidacte, bien qu’ayant commencé à programmer très jeune (sur Atari ST, en GFA Basic et un peu de C :), je m’étais arrêté de longues années, pour me mettre au PHP en 2011 afin de créer un logiciel de gestion de crèche parentale orienté enfant (suivi des siestes, repas, échange avec les familles, statistiques, etc.).
J’avais souvent pensé me remettre à la programmation, adminsys autodidacte également, mais je n’avais jamais eu d’occasion pour le faire — et c’est très important : le code c’est abstrait, sans but ni objectif, c’est très difficile de s’y mettre. Là, j’avais une envie, une idée, une interface en tête et un besoin immense. C’est ce besoin qui m’a poussé dans le PHP pour cette crèche, avec succès (on a gagné en confidentialité, praticité et humanisé les échanges parents/salariées), besoin et essai transformé avec GRAOU (et depuis plein d’autres petites choses ci et là, c’est fou comme savoir programmer nous facilite la vie au quotidien !).
Depuis, j’essaye de maintenir à flot mes connaissances côté adminsys, et d’avancer côté développement. J’aimerais me mettre sérieusement à Symfony (ou déjà Silex) par exemple, je sais que j’y gagnerai à terme, mais il faut du temps…

Est-ce que tu conduis toujours des trains ?

Oui ! Mais de plus en plus rarement. Il est déjà difficile de mener un projet comme GRAOU en parallèle à mon métier aujourd’hui 100% Digital chez SNCF, alors rouler est devenu rare, même si je garde une profonde affection pour la conduite évidemment.
C’est une chose de programmer, développer, gérer des projets, expérimenter et tester, c’en est une tout autre que de lancer 300 tonnes à 200km/h à travers la plaine d’Alsace. Quelque part c’est dommage, car pour pouvoir produire des applications métier, il faut connaître le métier.
J’aimerais garder cette proximité, c’est un métier concret, tangible, j’emmène des voyageurs d’un point A à un point B, dans un intervalle de temps donné; il y a là quelque chose de totalement opposé à quelques millions de bits organisés dans des fichiers, quelque chose de concret, qui pendant un temps était une formidable occasion pour relativiser et faire le tri — les contraintes de temps imposées par ce métier et les nombreux « battements » (entre deux trains, l’attente du départ, ou une ligne droite de plusieurs kilomètres) permettent de se retrouver face à soi, et parfois face à des algorithmes inutilement compliqués qui, grâce à ce temps de réflexion imposé, passaient de 300 lignes à 10 lignes une fois rentré à la maison, les idées mises en place.
Hélas, la journée ne fait que 86400 secondes !

Une conférence présentée par

Nicolas WURTZ
Nicolas WURTZ
Bac littéraire, conducteur de train, et devOps (c'est possible). Aujourd'hui chef de projet à la direction Digital SNCF, Nicolas Wurtz s'occupe principalement de prototypage et de rappeler la réalité d'une circulation ferroviaire ou d'un serveur.

Autres interviews

[:]