Mes premiers pas en programmation remontent à assez loin. Je dirais que naviguer sur l’autoroute de l’information m’a intéressée beaucoup plus tôt que d’obtenir mon permis de conduire, au grand dam de mes parents… J’ai navigué sur Internet avec un modem qui téléchargeait à 14,4 ko/s, bloquant la ligne téléphonique de la maisonnée. Au début, j’envoyais des courriels à d’autres early adopters en mode « hyperterminal », lettres blanches sur fond noir, « pas de son pas d’image », sur le réseau de l’Université de Montréal. Avant qu’Internet Explorer et Netscape arrivent, j’ai consulté les BBS, c’était ben plate en fait… Puis Internet devenu un peu plus mainstream, plus rapide (mais pas tant!) et plus divertissant. Il y a eu la Toile du Québec, puis ICQ, puis Napster. Télécharger une chanson de 3 minutes, ça pouvait prendre une heure. Une symphonie, ça ne valait pas la peine d’essayer. Juste pour aller consulter mes courriels sur Hotmail, j’avais le temps d’aller prendre une douche avant que la page ait fini de charger. Et ça, c’est si personne de la famille ne décrochait le combiné ou n’envoyait un fax(!)… si ça arrivait, tout était à recommencer. Altavista, un agrégateur de moteurs de recherche, c’était presque révolutionnaire : Google n’existait pas encore…

Et moi, jeune adolescente, circa 1996, j’ai décidé que je ferais mon propre site Web sur Geocities! GEOCITIES!!!! Étais-je désœuvrée à ce point?!? La musique me tenait passablement occupée, mais ma situation géographique (banlieue nord, alors que j’allais à l’école à Montréal, où habitaient la plupart de mes amis) nuisait grandement à ma vie sociale. (Ça, et les cours de solfège au Conservatoire le vendredi soir et/ou le samedi, peut-être.) J’ai donc commencé à apprendre à faire des sites en HTML avec des tutoriels trouvés ça et là. En bonne nerd, j’avais trouvé un sujet particulièrement nerd pour mon site : un auteur français de science-fiction! Dire que j’aurais pu prendre l’air et vivre ma vie, mais que j’ai préféré gaspiller ma jeunesse dans le sous-sol à gosser là-dessus… À un moment donné, j’ai même fait équipe avec des Français qui trippaient sur le même auteur! Heureusement, j’ai fini par me lasser et à me mettre à faire des choses de mon âge… (J’ai récemment passé quelques heures à essayer de retracer ce site Web du passé sur Wayback Machine, sans succès… C’est sûrement mieux comme ça!)

Mais plusieurs années plus tard, le HTML m’a rattrapée. Alors que j’étais à la maîtrise en littérature comparée, des comparatistes étudiant au doctorat, qui avaient créé une revue en ligne, achevaient leurs études et cherchaient des « jeunes » pour prendre la relève. Tout le comité graduait en même temps ou presque, cela pressait de passer le flambeau. Une réunion fut donc organisée par la vieille garde qui avait rameuté le plus de gens possible. Je me souviens que je m’y étais présentée après avoir subi un pénible traitement de canal, la gueule encore un peu gelée. C’est peut-être pour ça que quand j’ai répondu « pas vraiment, non » à la question de l’ancien webmestre « Veux-tu t’occuper de refaire le site Web et de mettre les articles en ligne? », il a interprété ça comme un « oui »… J’avais ensuite objecté que je connaissais seulement un peu de HTML, alors que le site avait une interface assez complexe (pour l’époque) en Javascript, un langage qui m’était complètement étranger. Comme ça ne se bousculait pas au portillon pour s’occuper de tout ça, et que j’étais de toute évidence la plus nerd du groupe, en tout cas la seule qui avait passé des heures dans le sous-sol dans son adolescence à apprendre le HTML, j’ai finalement dû m’en occuper. Une refonte complète en HTML a été faite pour simplifier la mise en ligne parce que je n’étais pas volontaire au point d’apprendre le Javascript (j’aurais dû, j’aurais peut-être compris 15 ans plus tôt que j’aime ça la programmation). Ce qui m’a surtout marquée de cette expérience, c’est la dizaine d’heures que j’ai passées, un jour, à essayer de déboguer la patente, avant de réaliser l’erreur que j’avais faite : une simple majuscule inopportune… En tout cas, la revue existe encore à ce jour (mais le site a connu une autre refonte), alors cela n’a pas été en vain.

Un peu plus tard, pour aider un ami artiste qui n’avait pas un gros budget pour son site Web, j’avais accepté de m’en occuper. Le défi, cette fois, était de faire quelque chose d’esthétique pour mettre en valeur ses magnifiques œuvres… L’esthétique, c’est pas tellement ma force, mais en grappillant des idées un peu partout sur le Web et en faisant beaucoup d’essais-erreurs, j’avais fini par monter quelque chose de crédible. Ça aidait que ses photos soient incroyables, quand même. (Vous pouvez en voir , mais sachez que ce site aussi a été refait depuis.)

On remarque ici une tendance : comme dit le proverbe, « la nécessité est la mère de l’invention ». Souvent, j’ai acquis des compétences sur le tas, en gossant, soit parce que je n’avais rien à faire, soit parce que celles-ci étaient en demande dans mon entourage (c’est aussi vrai pour mes capacités de troubleshooting que ma mère a beaucoup mises à l’épreuve à l’époque où elle découvrait l’informatique). Je pense que c’est une façon d’apprendre que je trouve particulièrement gratifiante, pas nécessairement à cause de la gratitude des gens dans le besoin (quoique ça ne nuit pas, c’est sûr), mais plutôt parce que c’est très satisfaisant de résoudre des problèmes, tout simplement.

Je constate que le débogage, c’est vraiment une partie cruciale de la programmation. Rien ne fonctionne du premier coup. Il y a toujours une variable mal nommée, une virgule mal placée, une parenthèse oubliée, ou des étapes exécutées dans le mauvais ordre. Mais quand tout finit par fonctionner après d’innombrables messages d’erreur, le sentiment de satisfaction est intense et profond! Ce n’est pas du tout le même feeling que d’avoir fait une bonne traduction, mettons. Je dirais plutôt que la satisfaction est directement proportionnelle à la quantité de gossage requise.

Les langages de programmation ont passablement évolué depuis le temps (et ils se sont multipliés), même si les principes de base restent pas mal toujours les mêmes. De nos jours, programmer, ça prend pas la tête à Papineau. Par exemple, pour Python, le langage que j’utilise principalement, une fois comprise la syntaxe de base, il n’est pas nécessaire de réinventer la roue constamment : pour chaque idée de génie que j’ai ou presque, je peux accéder librement sur Internet à un module qui fait déjà ce que je veux faire. Il suffit ensuite d’importer le module dans mon environnement de programmation et de consulter la documentation pour comprendre comment ça fonctionne. Ça prend plus de débrouillardise que d’intelligence, je dirais. C’est comme du surf : il faut savoir profiter de la puissance de la vague.

Évidemment, derrière tout ça, il y a des gens qui ont programmé patiemment tous ces modules, des gens même qui ont inventé des langages de programmation pour communiquer avec les ordinateurs, parce qu’à la base, les ordis, ça parle juste en 0 et en 1. Il y a vraiment beaucoup de travail intermédiaire entre 00010101000001010100101001 et le travail que je fais comme aspirante programmeuse. Mais je suis bien contente de simplement tirer le meilleur parti de ce que d’autres ont déjà fait avant moi.

Par exemple, la semaine dernière, j’ai entendu parler de Plotly, un module pour créer des graphiques interactifs qui est vraiment supérieur à ce que j’utilisais jusqu’à maintenant. Ça s’est passé à peu près comme suit :

  • 15 minutes pour lire sur le sujet
  • 1/2 h à gosser pour configurer le module dans mon environnement de programmation. Des fois, cette étape prend plus de temps et implique des messages d’erreur de 250 lignes en rouge que je ne comprends qu’à moitié mais que je finis par interpréter tant bien que mal; j’ai souvent perdu beaucoup de temps à cette étape, mais à date, je suis toujours parvenue à mes fins, notamment grâce aux nombreux forums de programmation où des quidams apportent réponse à toutes les questions ou presque.
  • 15 minutes pour inventer des données de toutes pièces
  • 5 minutes pour générer (avec très peu de lignes de code, puis dans une interface ultra intuitive) un graphique 1000 fois plus intéressant et évocateur que celui du précédent que j’avais créé avec l’autre module

Vous pouvez voir le résultat en cliquant sur l’image ci-dessous. Je ne ferai pas une montée de lait sur les nombreux défauts de WordPress (qui me font parfois perdre beaucoup de temps aussi…), mais disons seulement que je ne peux pas afficher mon incroyable graphique interactif sur la page du blogue, ni par courriel. Cliquez (puis survolez le graphique avec votre souris pour voir les messages cachés!) si le cœur vous en dit : la version interactive est vraiment mieux.

niveau_musical_1999-2019 https://plot.ly/embed.js

Soudainement, ça devient incroyablement simple de créer des graphiques qui parlent d’eux-mêmes. Je suis quand même un peu « mi-figue mi-raisin » en ce qui concerne les graphiques qui parlent d’eux-mêmes, parce que comme vous avez pu le remarquer, j’aime ça écrire et j’ai tendance à interpréter les choses en long et en large. 😊 Un graphique éloquent enlève toute leur pertinence à mes digressions! Qu’ai-je à faire d’un graphique qui m’enlève les mots de la bouche (ou du clavier)?

Je vais donc seulement faire quelques constats :

  • N’importe quel prétexte est bon pour se pratiquer à jouer avec des données, même des chiffres complètement arbitraires qui n’ont aucune valeur absolue. C’est toujours plus facile d’interpréter des données dont on connaît assez bien la nature, et nul besoin de creuser très loin pour en trouver.
  • Le graphique illustre le niveau relatif « perçu », qui n’a probablement rien à voir avec le niveau réel… J’ai revu dernièrement une vidéo d’une époque où j’aurais cru être à mon peak au violon, seulement pour constater que je n’étais vraiment pas très bonne : je jouais très mal une pièce beaucoup trop difficile!
  • J’avais tendance à croire que lorsque mon niveau dans un instrument augmentait, mon niveau de l’autre instrument diminuait, parce que souvent, je trouve ça difficile de maintenir un bon niveau dans les deux en même temps. Mais ce que j’observe finalement, c’est que les occasions de rehausser le niveau se présentent en même temps pour les deux instruments. Au final, jouer mieux d’un instrument semble me motiver à jouer mieux de l’autre aussi, même si je manque de temps pour tout pratiquer… En tout cas, c’est ce que semble indiquer la régression linéaire de ma série à deux variables (que je ne vous mets pas ici, parce qu’à un moment donné, ça va faire, les graphiques; c’est quand même pas si passionnant que ça comme analyse…)!

C’est assez pour aujourd’hui… Dans un prochain billet, je vous parlerai de Natural Language Processing, un sous-domaine de la science des données où mes compétences et mon intérêt pour les langues ne sont pas perdus!

2 réflexions sur “Programmer, gosser

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s