Qu’est-ce que la phase Challenge ?
La phase Challenge se déroule sous la forme d’une combinaison entre un apprentissage centré sur les bases de l’informatique et des missions quotidiennes.
- analyser un problème dans un temps limité,
- décider soi-même de la répartition entre apprentissage, conception et implémentation,
- documenter et partager ce processus,
- et échanger des retours avec ses pairs.
La devise principale du Challenge est Learning by Doing : il ne s’agit pas simplement de mémoriser la théorie, mais d’apprendre en construisant réellement des choses.
Cependant, la méthode optimale varie selon les personnes. Certains préfèrent parcourir rapidement les concepts recommandés dans la Challenge, puis commencer immédiatement à coder et apprendre en cherchant les réponses au moment où ils rencontrent un blocage. Personnellement, je pense aussi que cette méthode peut être très efficace.
Mais pour quelqu’un comme moi, qui manquait de connaissances de base au point de ne pas toujours comprendre entièrement les problèmes, il était parfois plus adapté de se concentrer d’abord sur l’apprentissage, puis de consolider cet apprentissage en implémentant.
En réalité, mes connaissances théoriques se résumaient pratiquement à ce que je savais le premier jour. Ainsi, même si la proportion entre apprentissage et implémentation variait d’un jour à l’autre, j’ai essayé d’aborder les missions de la manière suivante.
Scanner les concepts → établir une base minimale
Je commence par parcourir rapidement les mots-clés du jour.
L’objectif est simplement de comprendre :
« Ah, aujourd’hui nous allons traiter ce type de sujet. »
Temps dédié à l’apprentissage
Pendant la période de travail principale (de 12 h à 19 h), je consacrais une grande partie de mon temps à l’étude.
Selon la mission, il m’arrivait même de passer presque toute la journée à apprendre. Je passais moins de temps que d’autres à implémenter, mais pour moi il était plus utile de renforcer mes bases que de produire rapidement quelque chose avec l’aide de l’IA.
Passer à la phase de conception
Je définis le plus précisément possible les structures de données et la modularisation.
Dans la phase Basic, je rédigeais souvent la conception tout en implémentant les éléments demandés. Mais dans la Challenge, l’ampleur des missions était bien plus grande et il n’y avait pas assez de temps pour modifier constamment la conception pendant le développement.
J’ai donc essayé de décider autant que possible à l’avance comment chaque partie devait être implémentée.
Bien sûr, même avec cette préparation, de nombreuses modifications ont été nécessaires.
Vérifier par l’implémentation
En implémentant, je complétais la conception et revenais parfois à l’apprentissage.
Surtout dans les dernières semaines, les idées obtenues grâce aux retours de mes pairs m’ont parfois amenée à recommencer la conception depuis le début. J’utilisais aussi l’IA pour revoir mon code et organiser ce que j’avais appris.
Ce qui a été le plus important dans tout cela, c’est que je n’ai pas décidé seule du niveau de “yak-shaving”.
Pour quelqu’un comme moi qui ne savait même pas jusqu’où approfondir un sujet, la question la plus difficile était toujours :
« Jusqu’où dois-je étudier aujourd’hui ? »
J’ai donc ajusté cela avec l’aide de l’IA. Lorsque l’IA me proposait un plan minimal d’apprentissage, j’ajustais moi-même la profondeur et l’ordre pour que cela reste faisable dans le temps imparti.
Je pense que l’une des plus grandes leçons que la Challenge veut nous transmettre est d’apprendre à trouver la méthode d’apprentissage qui nous convient le mieux et à l’appliquer à notre propre progression.
Chaque jour était un véritable challenge
La Challenge a été honnêtement très difficile.
Certaines personnes disaient que c’était comme résoudre en une seule journée un projet universitaire qui prend normalement deux ou trois semaines. Pour moi, c’était parfois encore plus difficile.
Les étudiants ayant une formation en informatique avaient au moins des bases pour commencer. Moi, j’avais l’impression de me heurter à un mur tous les jours.
Cependant, même certains étudiants spécialisés disaient que la Challenge demandait d’implémenter les choses à un niveau plus profond et plus bas niveau que ce qu’ils avaient fait à l’université. Cela montre à quel point la Challenge était exigeante.
La plupart du temps, je passais toute la période de travail principale (12 h – 19 h) à étudier, et je ne commençais l’implémentation que plus tard dans la soirée, souvent avec l’aide de l’IA.
Parfois il était déjà 19 h, et d’autres fois c’était même le lendemain matin lorsque je me disais enfin :
« Bon, il est temps de commencer à implémenter. »
Le véritable challenge consistait à décider :
- combien de temps consacrer à l’apprentissage,
- jusqu’où pousser l’implémentation,
- et comment préserver suffisamment d’énergie pour continuer le lendemain.
Pendant la première semaine, j’ai essayé de tenir en dormant très peu, simplement avec l’idée :
« Je dois absolument terminer. »
Mais cette stratégie a fini par provoquer des problèmes. Un jour, j’ai même manqué la rétrospective du vendredi soir parce que j’étais trop épuisée.
Après cela, j’ai changé de stratégie.
Je dormais toujours peu, mais j’ai essayé de garantir au moins le minimum de sommeil nécessaire pour pouvoir donner des retours à mes pairs avec un esprit clair. J’ai compris que travailler dans un état d’épuisement complet était en réalité inefficace.
Travail d’équipe
Pendant la Challenge, il y avait trois types d’activités en équipe.
Évaluer le code des autres
Jusqu’alors, j’avais tendance à parcourir rapidement le code des autres sans vraiment l’analyser en profondeur.
Mais dans cette activité, nous devions évaluer le code des autres selon plusieurs critères : lisibilité, structure, commentaires, etc.
Cela m’a obligée à lire attentivement le code des autres jusqu’au bout.
Au début, même suivre quelques lignes était difficile. Mais peu à peu, j’ai commencé à comprendre la manière dont les autres réfléchissaient.
Je pouvais observer des choses comme :
- « Cette personne a abordé le problème de cette façon. »
- « Elle a traité un cas limite auquel je n’avais même pas pensé. »
Comme les autres membres de l’équipe devaient également lire mon code, j’ai commencé à faire plus attention aux noms de variables, à la structure des dossiers et à la rédaction du README.
Vers la fin du programme, un coéquipier m’a dit que lire mon README était intéressant parce qu’on pouvait suivre mon raisonnement. Cette phrase est restée longtemps dans ma mémoire.
Feedback d’équipe
Même sur les parties que je n’avais pas implémentées moi-même, j’ai pu apprendre beaucoup.
Je me suis souvent dit :
- « Ah, cette partie pourrait être abordée autrement. »
- « Cette fonctionnalité rendrait l’implémentation plus efficace. »
J’ai également découvert des façons d’écrire du code orienté objet que je ne connaissais pas encore.
Personnellement, je me concentrais surtout sur la lisibilité plutôt que sur l’efficacité. Mais voir comment d’autres participants amélioraient les performances grâce aux algorithmes et à l’optimisation m’a beaucoup appris.
Projet relais
Dans le projet relais, j’ai essayé de guider le rythme de la discussion, de partager les conversations de la semaine précédente et de proposer activement de nouvelles idées.
Beaucoup de participants ont dit que je ne semblais absolument pas introvertie.
En réalité, je suis très introvertie. Mais pendant la Challenge, j’ai simplement essayé de faire de mon mieux pour créer une dynamique positive et encourager le partage d’idées et d’insights entre les membres de l’équipe.
Grandir avec l’IA
Avant même de commencer la phase Challenge, j’utilisais déjà l’IA de manière assez variée, probablement plus que beaucoup d’autres participants. Par exemple, j’avais créé un petit bot de recommandation musicale pour me suggérer des chansons correspondant à mes goûts, ou encore un bot d’apprentissage de l’anglais pour pratiquer la conversation.
Cependant, en traversant la phase Challenge, l’étendue et la profondeur de mon utilisation de l’IA ont considérablement évolué. J’ai mieux compris les forces et les limites de différents outils d’IA, et j’ai eu l’occasion d’en tester plusieurs nouveaux.
Par exemple, j’ai découvert des outils comme NotebookLM, qui réduit la contamination de l’information en ne répondant qu’à partir des documents fournis, ou Lilly, capable d’analyser des vidéos YouTube. C’était la première fois que je les utilisais, et je les ai trouvés extrêmement utiles.
J’ai également diversifié ma manière d’interagir avec l’IA. Grâce à certaines tâches qui nous encourageaient à expérimenter différents usages de l’IA, j’ai commencé à réfléchir à des méthodes plus efficaces que le simple fait de poser une question et d’attendre une réponse.
Par exemple :
- des conversations en jeu de rôle avec l’IA
- créer des quiz à partir de mes notes d’apprentissage
- revoir ce que j’avais appris en utilisant le code que j’avais écrit
Ces méthodes m’ont particulièrement marqué. Avant cela, je pensais parfois naïvement que si j’avais étudié quelque chose une fois, je m’en souviendrais naturellement. Mais revoir mes apprentissages en m’appuyant sur mon propre code et avec l’aide de l’IA m’a permis de consolider bien plus efficacement mes bases.
À une époque où l’IA est omniprésente, je ne pense pas que devenir un développeur « différent de l’IA » signifie apprendre ou programmer sans elle. Au contraire, il est bien plus important d’apprendre à utiliser l’IA de manière intelligente et efficace pour continuer à progresser. De ce point de vue, cette période a été extrêmement précieuse.
Difficultés rencontrées et pistes d’amélioration
Le manque de bases en informatique
Le point le plus regrettable est que mon manque de connaissances fondamentales en informatique rendait parfois difficile la compréhension de certaines discussions lors des peer feedback ou sur Slack.
En particulier, lorsqu’il était question d’optimisation des performances ou d’algorithmes, je me retrouvais souvent à simplement hocher la tête en me disant : « Je devrai regarder ça plus tard. »
Pour pouvoir participer à de véritables discussions techniques avec mes collègues dans le futur, j’ai réalisé qu’il était indispensable de renforcer mes bases en informatique.
La gestion de l’énergie et la durabilité
Pour être honnête, plutôt que de « profiter » du Challenge comme certains semblaient le faire, j’ai surtout eu l’impression de tenir bon jour après jour.
Pendant quatre semaines, je dormais généralement entre deux et quatre heures par nuit. Je travaillais tard pour terminer les missions, puis je recommençais la journée suivante dès le matin.
Même si l’intensité fait partie de la nature du Challenge, j’ai compris que pour un apprentissage durable, il est important de trouver un meilleur équilibre entre travail et santé physique.
La documentation
Au début du programme, je prenais beaucoup de temps pour écrire des README détaillés. Mais plus les semaines passaient, plus je me concentrais sur l’implémentation du code, et mes explications devenaient plus courtes, laissant parfois de côté mon raisonnement.
Le type de développeur que je souhaite devenir est quelqu’un qui facilite la collaboration grâce à un code lisible et une documentation claire et bien structurée.
Les compétences techniques sont évidemment importantes, mais la capacité à partager ses connaissances et à travailler efficacement avec d’autres l’est tout autant. J’aimerais revenir à cet état d’esprit pour la suite.
Les enseignements tirés du Challenge
Avant même le Challenge, je savais déjà que la phase de conception était importante. Pourtant, dans la pratique, j’avais souvent tendance à commencer directement à coder, puis à modifier la conception en cours de route.
En affrontant des tâches plus complexes pendant le Challenge, j’ai réalisé une fois de plus à quel point la conception et la décomposition d’un problème en petites étapes sont essentielles.
Clarifier la direction avant de coder
Plutôt que de commencer immédiatement à coder, j’essaie désormais de clarifier d’abord :
- quel est exactement le problème que je veux résoudre
- quelles sont les contraintes de temps et de ressources
- quels tests devront être écrits au cours du processus
Diviser l’implémentation en étapes plus petites
Pour mieux identifier les blocages, gérer le temps et maintenir la motivation, j’essaie de diviser les étapes d’implémentation en tâches très petites et détaillées.
Dans la phase Basic, une checklist était fournie, ce qui faisait que je n’y faisais pas particulièrement attention. Mais pendant le Challenge, comme je devais écrire moi-même ces étapes, j’ai réalisé à quel point cela était important.
Utiliser l’IA de manière plus active
Au lieu d’utiliser l’IA simplement comme un moteur de recherche, j’ai commencé à l’utiliser pour :
- proposer des étapes de développement
- vérifier des conceptions
- visualiser certaines idées
- revoir ce que j’avais appris
Bien sûr, pour devenir un développeur capable de penser de manière autonome, il est important de rester maître de ses décisions de conception. Mais dans ce processus, j’ai appris de nombreuses façons différentes d’utiliser l’IA comme partenaire d’apprentissage.
Épilogue
Le jour de la cérémonie de fin du Challenge, nous avons tous écouté la chanson Butterfly ensemble.
Ces derniers temps, j’écoutais aussi souvent d’anciennes chansons d’animation comme Grip! ou Notre rêve. En y réfléchissant, je pense que ces chansons me donnaient simplement la force de continuer et de ne pas abandonner.
Pendant quatre semaines, je travaillais tard la nuit pour terminer les missions, puis je me réveillais le matin pour continuer à étudier. Chaque jour, je me répétais simplement : « Aujourd’hui encore, il faut tenir. »
Il y a eu des moments où j’ai voulu abandonner. J’avais souvent l’impression que les autres étaient bien meilleurs que moi, ce qui me faisait douter de mes capacités.
Mon ordinateur est même tombé en panne pendant le programme, ce qui m’a fait manquer une mission entière. Une autre fois, en alternant entre mon ordinateur portable et mon ordinateur de bureau, j’ai perdu du code parce que j’avais oublié de faire un push.
Malgré tout, même si tout n’était pas parfait, j’ai fait de mon mieux chaque jour sans abandonner. C’est pourquoi je pense que cette expérience restera pour moi un souvenir dont je serai vraiment fière.
Je souhaite appliquer les enseignements tirés de ces quatre semaines à mon apprentissage tout au long de la vie.
À partir de maintenant, j’espère continuer à progresser comme développeuse à mon propre rythme et à ma manière, mais de façon constante.
Merci d’avoir lu cet article.
Et dès demain, la phase Membership commence.