Une interview de Ryan Potts au cours de laquelle Jeremy Walker et lui discutent de Delphi, de ce qu'il a appris en tant que contributeur à Exercism, et de son expérience de la programmation dans des secteurs encore « hors ligne ».
Salut Ryan. Merci de prendre le temps de discuter avec moi. Tu es le mainteneur du parcours Delphi sur Exercism. Comment as-tu commencé avec Delphi ?
Je travaille pour une entreprise que mon père a fondée, qui développe des logiciels depuis les années 80, en commençant par Microsoft Pascal puis en passant plus tard à Turbo Pascal de Borland. Je suis arrivé dans l'entreprise en 96, à peu près au moment où elle recevait des demandes pour produire des logiciels qui tourneraient sous Windows plutôt que sous DOS. Par chance, Borland venait de sortir Delphi 1. C'était parfait pour nous, car la plupart des unités développées au fil des années pouvaient encore servir. Nous n'étions plus obligés de tout reprendre de zéro en VB ou en VC pour prendre en charge Windows.
Et tu utilises toujours Delphi au quotidien aujourd'hui ?
Oui, l'entreprise où je travaille fabrique des machines pour les tests de R&D et les tests en petite série dans l'industrie automobile : des tests de pneus, de sièges de voiture, de gonfleurs d'airbag, ainsi que des tests de choc. Tous les systèmes produits sont utilisés par plusieurs constructeurs automobiles dans le monde, ainsi que par leurs fournisseurs.
Le logiciel sur lequel je travaille sert à piloter ces différents types de machines. Je développe l'interface utilisateur, je définis les séquences de test pour les parties automatisées, j'intègre les différents points d'entrée et de sortie, analogiques et numériques. Il doit être aussi convivial que possible, pour qu'une personne avec une formation minimale se sente plutôt à l'aise pour l'utiliser.
Le travail que je fais ne demande aucune programmation web. Tout ce que je fais est en Delphi sous Windows. De temps en temps, je dois bricoler une petite « commande personnalisée » en C++ que je téléverse ensuite dans la carte de traitement d'acquisition de données, un ordinateur parallèle qui réside dans un slot PCI de l'ordinateur ; il a son propre processeur, sa propre mémoire et son propre système d'exploitation.
C'est fascinant de discuter avec quelqu'un qui ne fait aucune programmation web. Ça semble assez inhabituel aujourd'hui, mais je me demande si ce n'est pas simplement le rapport signal/bruit dont j'entends parler au quotidien plutôt qu'un reflet du secteur.
Oui, participer à Exercism m'a permis d'entrevoir un peu comment vit « l'autre moitié » de l'industrie informatique. J'ai beaucoup appris sur le développement piloté par les tests (TDD), sur la navigation dans GitHub et sur le travail sur un projet open source. Une grande partie de ce que j'ai appris a amélioré la qualité du travail que je fais au boulot.
C'est vraiment génial à entendre. Ce que j'aime le plus dans Exercism, c'est justement cet esprit « comment vit l'autre moitié » : prendre conscience de tous ses angles morts et découvrir des choses dont tu ignorais même l'existence. J'imagine que le fait d'être mainteneur d'un parcours a encore renforcé cet apprentissage ?
Oui. J'écris plus de tests qu'avant. Ce n'est pas toujours du TDD à proprement parler ; parfois les tests viennent après plutôt qu'avant. Cela dit, ça a influencé ma façon de structurer le code, en supprimant les dépendances inutiles pour faciliter les tests.
Je passe beaucoup de temps à examiner les issues et les PR dans le dépôt problem-specifications, où l'on définit les exercices Exercism de manière indépendante du langage. J'ai beaucoup appris des discussions. Parfois, un changement proposé semble simple en surface, mais la conversation qui suit fait apparaître des problèmes. J'ai développé plus de patience. Ça m'a appris à chercher d'autres angles possibles face aux problèmes techniques au travail.
J'ai aussi appris davantage sur le mentorat, en particulier l'importance de connaître le pourquoi sous-jacent, et pas seulement le comment. Je travaille avec une poignée d'autres programmeurs. Même si je suis plus jeune que la plupart d'entre eux, je suis dans l'entreprise depuis plus longtemps, et je peux souvent indiquer une approche plus efficace pour séquencer le fonctionnement d'une machine, ou expliquer pourquoi une chose doit être faite d'une manière particulière.
Au-delà d'Exercism, tu es aussi MVP Delphi, ce qui est plutôt impressionnant ! Comment ça s'est fait ? Tu fais partie d'une communauté Delphi dynamique ?
Lors des premières étapes de la mise en place du parcours Delphi, j'ai contacté M. Jim McKeeth chez Embarcadero pour voir si nous pouvions obtenir une licence open source pour Delphi. Cela nous permettrait d'utiliser Delphi pour développer de nouveaux exercices et de laisser les gens contribuer via des pull requests. Jim m'a invité à rejoindre le programme MVP d'Embarcadero au fil de notre correspondance.
Delphi Praxis est une communauté en ligne que je connais bien. Il y a beaucoup de passage sur Google+, mais c'est en train de disparaître, alors il faut aller voir ailleurs.
As-tu développé des applications open source en Delphi que d'autres pourraient regarder ?
Oui ! Exercism's Windows CLI Installer est open source et entièrement écrit en Delphi. Il détermine automatiquement la bonne version (32/64 bits) de l'Exercism CLI dont l'apprenant a besoin, puis télécharge l'Exercism CLI, l'extrait et le place au bon endroit. L'installateur a été téléchargé 15 000 fois, et j'en suis plutôt fier !
C'est une sacrée réussite ! En tant que personne qui ne fait pas beaucoup (voire pas du tout) de programmation liée à internet, quels défis as-tu rencontrés en créant l'installateur en Delphi ?
L'installateur avait d'abord été écrit en C#. Il était dépassé, et j'ai décidé de voir si je pouvais l'améliorer. Je n'avais jamais tenté quelque chose comme ça auparavant, mais je savais que Delphi avait les outils pour faire le travail. J'ai commencé par étudier le code C# d'origine pour comprendre quelle séquence d'événements se déroulait en coulisses, puis j'ai essayé d'accomplir les mêmes tâches en Delphi. J'ai trouvé du code d'exemple sur le site de documentation d'Embarcadero qui aidait à comprendre comment bien enchaîner les composants disponibles pour créer un client REST. J'ai aussi découvert un utilitaire pratique fourni avec Delphi, appelé REST Debugger. Il me permettait de saisir, et donc de tester, les différents appels HTTP nécessaires au bon fonctionnement de l'installateur. Une fois qu'ils fonctionnent, le débogueur crée des copies des composants requis, pour que je puisse les coller dans le code.
Pour quelqu'un qui veut s'impliquer plus profondément dans Exercism, peut-être quelqu'un qui espère devenir mainteneur, peux-tu nous raconter quel a été ton cheminement ?
Je suis membre d'un groupe MeetUp local appelé Akron Code Club. Environ une fois par mois, nous nous réunissons et, la plupart du temps, nous nous mettons en binôme pour travailler un code kata proposé au groupe. À la rencontre d'août 2016, nous avons commencé à travailler des exercices proposés par Exercism. Comme j'utilisais Exercism et quelques autres sites d'apprentissage, je me suis dit que ce serait bien que davantage de ces sites de programmation en ligne proposent Delphi ou Pascal en option. Après avoir exploré le site d'Exercism et les dépôts GitHub d'Exercism, j'ai découvert qu'Exercism est toujours intéressé par l'ajout de nouveaux parcours de langage. Je ne savais pas trop comment contacter Katrina au mieux. Je pense avoir utilisé Gitter pour la contacter en août 2016, en proposant l'ajout de Delphi. J'ai reçu une réponse d'excuse environ deux mois plus tard, et c'est là que j'ai compris qu'elle n'allait pas sur Gitter. Bref, elle se demandait si j'étais toujours intéressé par l'ajout d'un parcours Delphi Pascal et, si oui, elle donnerait suite.
Aujourd'hui, il existe un dépôt que tu peux utiliser pour demander un nouveau parcours de langage, et tu peux toujours ouvrir des issues dans le dépôt exercism/exercism pour entrer en contact avec les mainteneurs du projet.
Super. Merci d'avoir discuté avec moi, et merci pour tout ton travail sur Exercism !
Avec plaisir ! C'était sympa. J'aime participer et faire ce que je peux pour Exercism. Apprendre en faisant !