AFUP Forum PHP 2018 Baromètre Planète PHP

La parole est aux speakers : Nicolas Wurtz

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 !

Le speaker

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

En poursuivant votre navigation sur ce site, vous acceptez l’utilisation des cookies pour améliorer votre navigation. plus d'infos

1. Qu’est-ce qu’un cookie?

Un Cookie est un petit fichier texte enregistré sur votre terminal (ordinateur, tablette, smartphone, etc.), à l’occasion de la consultation d’un service en ligne grâce à votre logiciel de navigation. Il permet à son émetteur d’identifier le terminal dans lequel il est enregistré, pendant la durée de validité ou d’enregistrement du Cookie. Lors de la consultation de notre site Internet, des informations relatives à la navigation de votre terminal sont susceptibles d'être enregistrées dans ces fichiers dits "Cookies". Ces derniers sont installés sur votre terminal, sous réserve des choix que vous auriez exprimés concernant les Cookies et que vous pouvez modifier à tout moment.

2. A quoi servent les cookies émis sur notre site ?

Seul l’émetteur d’un cookie est susceptible de lire ou de modifier les informations qui y sont contenues.
Les cookies utilisés sur notre site permettent :

3. Vos choix concernant les cookies

Vous disposez de différents moyens pour gérer les cookies. Tout paramétrage que vous pouvez entreprendre sera susceptible de modifier votre navigation sur notre site et sur Internet en général et vos conditions d'accès à certains services de notre site nécessitant l'utilisation de cookies. Vous pouvez à tout moment exprimer et modifier vos souhaits en matière de cookies, par les moyens décrits ci-dessous. L'accord sur les cookies L'enregistrement d'un cookie dans un terminal est essentiellement subordonné à la volonté de l'utilisateur du terminal, que celui-ci peut exprimer et modifier à tout moment et gratuitement à travers les choix qui lui sont offerts par son logiciel de navigation. Si vous avez accepté dans votre logiciel de navigation l'enregistrement de cookies dans votre terminal, les cookies intégrés dans les pages et contenus que vous avez consultés pourront être stockés temporairement dans un espace dédié de votre terminal. Ils y seront lisibles uniquement par leur émetteur.

Le refus des cookies Si vous refusez l'enregistrement de cookies dans votre terminal, ou si vous supprimez ceux qui y sont enregistrés, vous ne pourrez plus bénéficier d'un certain nombre de fonctionnalités qui sont néanmoins nécessaires pour naviguer dans certains espaces de notre site. Tel serait le cas si vous tentiez d'accéder à votre compte ou à votre abonnement qui nécessite de vous identifier. Tel serait également le cas lorsque nous, ou nos prestataires, ne pourrions pas reconnaître, à des fins de compatibilité technique, le type de navigateur utilisé par votre terminal, ses paramètres de langue et d'affichage ou le pays depuis lequel votre terminal semble connecté à Internet. Le cas échéant, nous déclinons toute responsabilité pour les conséquences liées au fonctionnement dégradé de nos services résultant de l'impossibilité pour nous d'enregistrer ou de consulter les cookies nécessaires à leur fonctionnement et que vous auriez refusés ou supprimés. Les choix offerts par votre logiciel de navigation Vous pouvez configurer votre logiciel de navigation de manière à ce que des cookies soient enregistrés dans votre terminal ou, au contraire, qu'ils soient rejetés, soit systématiquement, soit selon leur émetteur. Vous pouvez également configurer votre logiciel de navigation de manière à ce que l'acceptation ou le refus des cookies vous soient proposés ponctuellement, avant qu'un cookie soit susceptible d'être enregistré dans votre terminal. Pour la gestion des cookies et de vos choix, la configuration de chaque navigateur est différente. Elle est décrite dans le menu d'aide de votre navigateur, qui vous permettra de savoir de quelle manière modifier vos souhaits en matière de cookies. Selon votre navigateur, consultez le lien ci-dessous pour configurer votre navigateur et refuser les cookies :