Je lance un site web pour me prouver que je suis informaticien

Publié le 12/02/2024 à 15h33

À présent que mes études sont finies et que j'ai commencé à travailler, je me rends compte que je ne sais pas grand chose et qu'il me reste tout à apprendre – et c'est le sentiment le plus grisant qui soit. J'ai aussi décidé de créer un site web.

Que sais-je ?

Je pense pas avoir raté le coche à un moment particulier de ma formation. Certes, dans mon parcours bien classique, type "voie royale", je n'ai pas toujours atteint les hauteurs les plus prestigieuses ; il y aura eu quelques embûches, quelques renoncements. Une fin de prépa à bout de souffle, avec une place heureuse attrapée à Télécom Paris ; l'École Polytechnique était trop haut au-dessus de moi, et l'ENS, à cette époque je n'osais même pas l'envisager, je n'ai même pas passé le concours. Une fois en école, je n'ai pas travaillé autant que je l'aurais pu : des années particulières, vécues à moitié en dedans et en dehors d'établissements envers lesquels j'accumulais petit à petit un ressentiment larvé. Il me faudrait plus de quatre ans pour venir à bout des exigences, de plus en plus ubuesques, requises par un diplôme dont j'avais besoin comme on doit mettre un point à la fin d'une phrase : ponctuation de forme, sans valeur de sens ajoutée.

Et malgré tout cela, s'il y a bien quelque chose que je n'ai pas, ce sont des regrets. Mon travail, mon entourage et le système bienveillant dans lequel j'ai évolué depuis mon enfance m'ont amené à une position favorable dans la société, à un niveau intellectuel bien au-dessus de la moyenne, et grâce auquel je peux gagner ma vie en enseignant quelque chose qui me plaît, vivre dans ma ville de cœur, tout en ayant (pour le moment) assez de temps pour me consacrer à des projets personnels, comme la création d'un site web – un blog, en 2024. La dernière année, que j'ai principalement consacrée à la préparation de l'agrégation d'informatique, est objectivement l'une des meilleures qu'il m'ait été donné de vivre : pour la première fois peut-être, j'avais l'impression d'apprendre pour mon simple plaisir, de faire chaque jour d'heureuses connexions entre des domaines jusque-là simplement effleurés, enfin d'abattre une quantité de travail (de bachotage) dont je ne me soupçonnais plus capable. Tout cela avec, certes, la pression de la réussite et les assauts ponctuels du doute, mais avec la conviction que le résultat serait à la fois ma porte vers le monde du travail, et surtout un certificat vis-à-vis de moi-même, m'indiquant que ça y est, j'ai réussi, je suis capable et légitime.

Il m'a ensuite fallu quelques mois pour découvrir (mais je le savais déjà) que je ne connaissais pas grand chose de l'informatique. Pas de fausse modestie ici : j'étais arrivé à mes résultats sans avoir jamais construit de réel projet logiciel, même d'envergure restreinte. Il y avait bien eu mon SAT-solver pour la logique linéaire temporelle, que j'avais écrit durant mon stage de recherche à l'IRIF [^1], mais cela restait légèrement artificiel. [^2] Ma formation est restée grandement théorique : ma connaissance des algorithmes et structures de données classiques est solide, j'ai goûté avec plaisir aux automates et aux logiques formelles, en passant par les délices de la calculabilité. On m'a appris à programmer, en plusieurs langages d'ailleurs. En revanche, on ne m'a jamais appris à développer, et je me suis donc rendu compte assez rapidement après ma prise de poste, lorsque j'ai décidé de mettre la main à la pâte et de construire des trucs, du champ infini d'outils pratiques et de concepts dont j'ignorais sinon l'existence, du moins le fonctionnement ou la portée. Docker, JSON, Full-stack, async, Django (je cite au hasard ...) Dès le moment où j'ai mis le pied dans la porte, le constat était clair : je ne maîtriserai jamais tout ça.

[^1]: (Ajout) Avec le recul, ce stage a sans doute été l'un des déclics qui m'ont poussé à approfondir mon étude de l'informatique dans le champ pratique ; d'un domaine théorique que j'avais étudié pendant trois ans avec intérêt, mais sans jamais expérimenter et faire miens les savoirs académiques, je me suis retrouvé, grâce à mon tuteur, à jouer avec le logiciel Coq, à produire des Read Me pour des petits projets, et même simplement à installer Linux (enfin) sur mon ordinateur ; petites choses futiles mais qui m'ont mis le pied à l'étrier.

[^2]: Si j'avais le temps et l'envie, je pourrais revenir sur ce projet, venir à bout des limitations qu'il présente, car il y a là de la matière pour quelque chose de satisfaisant.

Non, je n'ai jamais raté le coche. Peu importent les choix et résultats des six dernières années, ce n'aurait pu être que maintenant que mon réel apprentissage de l'informatique aurait commencé. Avec la meilleure formation théorique du monde, on est bien sûr aidé pour assimiler de nouveaux concepts et bibliothèques. Mais la réalité du monde logiciel actuel est assourdissante : chaque jour naissent de nouveaux projets open-source qui auront peut-être leur chance de devenir la next big thing du Web, ou des systèmes embarqués, ou que sais-je. Et si je souhaite aujourd'hui débuter un projet de tout type, je dois faire face à la FOBO [^3] devant l'étendue des frameworks, etc. disponibles. Une fois une option choisie après avoir fait une moyenne de trois commentaires sur Reddit, il faut apprendre l'API du projet (les fonctionnalités et comment les utiliser), il faut suivre des tutoriels pour l'installation, faire des recherches Google avec des messages d'erreur...

[^3]: Fear of Better Options, ou la fatigue morale d'un utilisateur devant une liste pléthorique de choix exclusifs.

Si ce framework me plaît, je pourrai le réutiliser et gagner progressivement en familiarité avec lui. De plus, des compétences acquises pourront être réutilisées pour accélérer ma prise en main d'autres bibliothèques. Mais il est indéniable que l'ensemble des solutions logicielles est si vaste, et en si constante évolution, que je vois mal quelle quantité d'expérience (5, 10 ans ? 20 ans ?) garantirait un certain sentiment de confort. On dirait une méta d'un jeu en ligne. C'est absolument formidable de se trouver dans un domaine si vivant, où l'apprentissage est quotidien, mais cela doit être aussi, par moments, épuisant.

C'est le moment où mes commentaires sur le monde logiciel eux-mêmes commencent à devenir vagues à cause de ma connaissance encore superficielle du sujet. Quoiqu'il en soit, depuis novembre, j'ai pu m'essayer à divers projets :

La création du site

Je n'avais jamais vraiment programmé de site web. Je connaissais bien sûr mes bases de HTML et de CSS (assez pour expliquer à des élèves de Seconde comment produire un site minimal), j'ai déjà pratiqué quelques rudiments de Javascript, et je connais les principes essentiels d'Internet, de HTTP et du modèle client / serveur. Soit, en résumé, tous les principes théoriques du web, plus un petit peu de pratique. Mais j'ai dû, pour la première fois, vraiment créer un site : écrire le HTML et le CSS, acheter un nom de domaine, installer un serveur web, et héberger le site pour le rendre disponible.

Il me fallait un framework back-end pour construire le site, i.e. une bibliothèque gérant la génération de pages HTML et les interactions avec une base de données, pour rendre le site dynamique (par opposition avec un site statique qui renvoie toujours les mêmes pages). En réalité, je n'avais pas absolument besoin d'un framework, mais une partie de l'exercice résidait dans son apprentissage ; qui plus est, rétrospectivement cela a fortement accéléré le développement. Je me suis dirigé vers Flask, qui promettait une approche minimaliste, exactement ce que je voulais (car je voulais apprendre un framework mais pas non plus y passer des heures ; or Django ou Ruby on Rails me paraissaient trop compliqués). Flask est un framework en Python, un langage que je connais bien et que mon travail m'amène à utiliser quotidiennement. J'ai, pour commencer, bêtement suivi le tutoriel en ligne, qui faisait construire un blog minimal (pas loin de ce que je cherchais à produire) ; puis j'ai fait évoluer le site vers ce que je voulais. La base de données est du SQLite, et il faudra longtemps avant que cela pose un problème d'échelle. Enfin, je voulais héberger le site moi-même ; j'ai récupéré une vieille Raspberry Pi chez mon père, téléchargé Nginx, et après m'être plus ou moins assuré que la solution était assez sécurisée, j'ai ouvert les ports de mon routeur.

Le site était publiable, j'ai décidé de me lancer. Les nombreuses améliorations possibles seraient faites plus tard, car si j'attends de perfectionner mon site, je ne publierai simplement jamais le moindre article. Le site est donc minimal et un peu bâclé. Outre les commentaires et un peu de style, j'ai implémenté paresseusement une commande de traduction de fichiers markdown en HTML (avec python markdown) ; il me resterait, minimalement, à permettre l'affichage des – Ô combien nombreux – articles sur plusieurs pages, à améliorer l'affichage sur mobile, à produire un style CSS plus moderne (donc avec un framework à apprendre, sans doute), à permettre une modération (censure ?) facile des commentaires, et surtout, à automatiser la publication de mes fichiers markdown. En effet, comme le but était de gérer moi-même cette partie sans faire appel à un outil de génération parmi les nombreux disponibles, j'ai pour le moment besoin de faire appel à une commande qui met à jour la base de données ; je dois donc envoyer mes fichiers markdown sur le serveur avec ssh, puis utiliser la commande, et la base de données est évidemment sujette à des suppressions accidentelles, etc. Une solution plus pérenne pour l'avenir sera de faire charger les articles autrement (reste à voir comment). Enfin, le site serait plus complet, comme ce beau blog, avec des outils de recherche par thème / tag, une prise en charge de tableaux, morceaux de LaTeX, portions de code colorées, et quelques sections additionnelles, comme une page de présentation et un lien Paypal.

Et voilà, l'aventure de ce site commence. J'espère avant tout trouver le temps d'écrire pour garnir le site, pendant de longues années. Je n'ai aucune attente en termes de lectorat, même si cela me ferait déjà le plus grand plaisir d'être suivi par quelques amis, de ne pas être embarrassé le jour où des lycéens découvriront des choses sur moi, et peut-être un jour (si je le mérite) d'attirer la curiosité d'internautes inconnus.


Commentaires (1)