2 points par GN⁺ 2025-07-18 | 1 commentaires | Partager sur WhatsApp
  • La formation formelle est utile pour transmettre efficacement des compétences, mais elle a ses limites quand il s’agit de développer l’intuition nécessaire pour résoudre des problèmes imprévus
  • Les essais-erreurs itératifs et intentionnels (algorithme) sont le facteur qui fait le plus progresser la maîtrise, grâce aux échecs sur le terrain et aux corrections qui s’ensuivent
  • Dans des exemples concrets, diverses figures comme Linus Torvalds et Margaret Hamilton ont développé des capacités exceptionnelles en affrontant l’échec puis en le surmontant
  • Le mentorat est un catalyseur important, mais l’expérimentation autonome et l’expérience directe restent au cœur de la progression réelle
  • L’expérimentation orientée objectif, qui consiste à se heurter aux problèmes et à les résoudre soi-même, est le véritable socle de l’amélioration des compétences

La force qui façonne les meilleurs ingénieurs logiciel : les essais-erreurs intentionnels

Le mythe de la salle de classe

  • La formation formelle est efficace pour transmettre des connaissances précieuses, mais il s’agit d’un processus optimisé pour l’échelle
  • Elle condense des expériences professionnelles complexes en procédures bien raffinées, transmises dans un format pouvant être achevé en un semestre
  • Ce processus permet d’acquérir les compétences de base nécessaires au travail réel, mais il atteint ses limites lorsqu’il faut développer la capacité à résoudre intuitivement un problème dans une crise imprévue
  • En particulier, quand un incident survient sur un vrai service à 3 heures du matin, les seules recettes apprises en classe ne suffisent pas

La vraie progression : apprendre en se confrontant directement aux problèmes

Cas exemplaires

  • Linus Torvalds a créé Linux en réécrivant MINIX
  • Margaret Hamilton a façonné les concepts modernes de fiabilité en corrigeant directement, en temps réel, des problèmes de code sur le projet Apollo
  • D’innombrables mainteneurs open source ont eux aussi progressé en cassant leur propre laptop puis en le réparant
  • Ils n’ont pas d’abord suivi des cours séquentiels ; ils ont acquis une expertise profonde grâce à l’échec et à ses conséquences réelles

Pourquoi les essais-erreurs dépassent les recettes

  1. La boucle de feedback est immédiate. Analyser un crash dans les logs permet d’apprendre bien plus vite qu’un quiz
  2. Les cas limites apparaissent naturellement dans des environnements réels, avec des usages qu’aucun manuel n’aurait imaginés
  3. Un problème résolu dans la douleur reste profondément en mémoire. Il s’inscrit comme une mémoire musculaire
  4. Quand aucun guide existant n’est disponible, la créativité se déploie de manière explosive

Repenser le mentorat : un complément, pas un substitut

  • Un bon mentor donne un feedback rapide et élargit la perspective, mais au final, c’est toujours la personne elle-même qui mène les expériences et accumule l’expérience
  • La revue de code a de la valeur parce qu’elle partage les résultats de l’expérimentation, mais elle ne remplace pas l’expérience directe

Développer une habitude d’expérimentation autonome

  • Se lancer dans des side projects qui mettent soi-même légèrement mal à l’aise
  • Tout instrumenter afin de disposer de données exploitables pour l’analyse en cas d’échec
  • S’imposer des contraintes comme l’interdiction d’un framework ou une livraison en 48 heures pour stimuler la résolution créative de problèmes
  • Publier son code afin d’obtenir une validation externe
  • Faire chaque semaine une rétrospective pour consigner les causes des échecs et les leçons apprises

En résumé

  • Le mentorat, les cours, les blogs, etc. jouent un rôle de catalyseur, mais les vraies compétences se construisent dans la confrontation intense au terrain
  • Les meilleurs ingénieurs progressent concrètement en résolution de problèmes et en développement personnel grâce à des essais-erreurs libres et intentionnels répétés
  • L’expérience acquise dans ce processus devient le plus grand atout pour son futur soi

1 commentaires

 
GN⁺ 2025-07-18
Commentaires sur Hacker News
  • Moi-même, en tant que développeur autodidacte, j’ai passé l’essentiel de ma carrière dans de grandes entreprises aux côtés de collègues diplômés en informatique
    D’après mon expérience, les développeurs autodidactes, s’ils sont suffisamment intelligents, finissent par résoudre le problème qu’on leur confie
    Les diplômés en informatique, eux, dans un domaine totalement inconnu, sont souvent nombreux à ne même pas essayer au départ (bien sûr, cela varie selon les tempéraments, mais j’estime que cela concerne environ 85 % d’entre eux)
    Face à une forte incertitude, ils n’avancent pas
    Au final, les diplômés en informatique s’intègrent mieux dans l’environnement des grandes entreprises, où ils travaillent selon des schémas établis comme des rouages remplaçables
    Les développeurs autodidactes, eux, innovent en permanence, travaillent à réduire les répétitions inefficaces, et cette attitude originale rend leur entourage nerveux
    Pourtant, ce sont souvent ces autodidactes qui produisent de bien meilleurs résultats
    J’ai l’impression que la plupart des développeurs accordent plus d’importance à la sécurité de leur emploi et à la réduction de l’anxiété qu’à l’excellence du code en elle-même

    • Beaucoup d’ingénieurs issus d’une formation classique s’attaquent eux aussi activement à des problèmes nouveaux
      À mon avis, ce n’est pas vraiment une question d’autodidaxie ou de formation formelle, mais plutôt de tempérament : curiosité, assiduité, créativité, intelligence, etc.
      Les autodidactes doivent forcément avoir ces qualités pour réussir, donc elles sont peut-être simplement plus visibles dans ce groupe
      Et lorsqu’un ingénieur formé de manière classique possède aussi ces qualités, il a souvent tendance à surpasser tout le monde, quel que soit le groupe

    • Je pense que la plus grande différence vient probablement de la personnalité
      Moi, en tant que développeur autodidacte, j’ai mis en avant ma conscience professionnelle
      Je n’avais pas forcément une grande vision d’ensemble sur le plan technique, mais en échange j’essayais d’être celui qui livrait le plus dans l’équipe
      Il m’est arrivé de construire trois prototypes en quelques jours pour les tester en conditions réelles
      Mes collègues diplômés en informatique faisaient la conception une seule fois au tableau blanc, puis n’écrivaient le vrai code qu’une seule fois
      Les deux approches n’ont jamais été testées sur exactement la même tâche, donc il est difficile de dire laquelle donne les meilleurs résultats
      Dans ma tête, mon approche me semble plus « validée par le terrain »
      Il est vrai que l’approche informatique était perçue comme l’idéale
      Mais je pense avoir énormément appris grâce au mentorat d’ingénieurs diplômés en informatique
      Après une dizaine d’années dans l’industrie, quel que soit le point de départ, tout finit par se ressembler, et l’intuition de la « bonne réponse » devient comparable
      J’ai peut-être un peu embelli ou généralisé les choses, donc j’aimerais bien que d’autres complètent en réponse

    • Je reconnais cela
      La plupart des cursus en informatique sont assez éloignés de la pratique quotidienne, donc un diplôme n’est pas un indicateur immédiat de compétence
      En revanche, je ne peux absolument pas être d’accord avec l’idée que 85 % des diplômés en informatique seraient incapables de résoudre un problème inconnu
      S’il y a une vertu au diplôme de CS, c’est bien que le parcours d’ingénierie comprend des matières extrêmement exigeantes sur le plan intellectuel
      Il est difficile d’imaginer qu’une personne capable de valider toutes ces matières soit soudain incapable en développement concret
      Quand on va vers des domaines de développement vraiment difficiles, on constate même qu’une part importante des gens ont des diplômes avancés en informatique
      J’ai l’impression que ce trait vient surtout d’un intérêt profond pour le logiciel, et qu’on en trouve beaucoup aussi chez les diplômés en informatique

    • Les diplômés en informatique ne tentent même pas de s’attaquer à des problèmes inconnus
      Je suis fortement en désaccord avec ça
      Je suis moi-même passé de l’autodidaxie à l’obtention d’un diplôme en informatique
      Il m’est déjà arrivé de perdre une journée entière à implémenter à la main du parcours de graphe et de la détection de boucle à partir de zéro
      Après avoir suivi un cours de structures de données et d’algorithmes, une telle décision ne m’aurait pas pris deux secondes
      Les diplômés en informatique savent structurer l’information et disposent aussi du langage nécessaire quand il faut approfondir un sujet
      En pratique, est-ce que les collègues ne font vraiment rien et passent simplement un ticket en disant « impossible » ?
      D’après mon expérience, l’évitement des responsabilités dépend bien davantage du niveau junior/intermédiaire/senior
      Plus on devient senior, plus on prend possession des problèmes
      (L’analyseur de pile en C que j’ai construit incluait l’analyse du code C, la génération du graphe d’appels et le calcul de la pire consommation mémoire de pile)

    • D’après mon expérience, les autodidactes se filtrent naturellement
      Autrement dit, un autodidacte incapable de résoudre des problèmes inconnus n’est même pas embauché
      Les personnes issues d’une formation classique sont en général moyennes ou meilleures, mais rarement écrasantes
      Une personne qui a tout compris par elle-même et qui a en plus validé une formation universitaire montre une puissance redoutable dans le travail concret

  • À mon avis, l’essentiel n’est pas la manière d’apprendre, mais la « passion »
    Si la motivation est faible, quelle que soit la méthode d’apprentissage, les limites deviennent vite évidentes
    Ce sujet a aussi des aspects difficiles à discuter de manière chiffrée
    La formation formelle permet de solidifier des concepts fondamentaux comme les mathématiques, le hardware, les OS, les compilateurs, etc.
    L’autodidaxie est orientée objectifs, ce qui peut conduire à négliger les bases
    Quand on ne sait même pas ce qu’on ignore, avoir un bon mentor (un professeur, un excellent livre) fait gagner énormément de temps
    Beaucoup d’ingénieurs, moi compris, passent à la fois par un apprentissage formel et informel
    Quand on a de la passion, on continue naturellement à construire des choses soi-même et à expérimenter au-delà de l’apprentissage formel
    Ce qui distingue vraiment un excellent ingénieur, ce n’est pas le mode de formation, mais une passion évidente
    Des exemples comme Linus ou Margaret étaient eux aussi, au fond, des personnes animées par une immense soif d’apprendre

    • En tant que programmeur autodidacte, je suis tout à fait d’accord
      J’ai appris seul depuis l’époque des ordinateurs 8 bits dans les années 80, et je ne suis jamais allé à l’université
      Quand j’ai obtenu mon premier poste officiel de programmation à 19 ans, cela faisait déjà 9 ans que je programmais
      Au moment où la plupart des gens obtenaient leur diplôme universitaire, moi, cela faisait déjà près de 15 ans que je codais
      Une telle passion et une telle force de propulsion sont difficiles à ignorer
      Aujourd’hui encore, presque 40 ans plus tard, je prends toujours autant de plaisir à faire du logiciel
      J’aime tout simplement construire des choses, je continue à lire des articles de recherche, à suivre l’évolution du secteur, et j’écris encore énormément de code
      En revanche, je trouve un peu regrettable cette idée selon laquelle les autodidactes manqueraient forcément de bases
      En réalité, beaucoup d’autodidactes explorent aussi très sérieusement les aspects académiques — cela dépend sans doute du domaine
      Il est possible qu’ils aient moins de temps pour étudier en profondeur, mais après plusieurs décennies d’expérience, leurs fondamentaux peuvent être plus solides que ceux de certaines personnes qui ne sont passées que par l’école
      J’ai aussi beaucoup recruté et licencié, et j’ai souvent vu des autodidactes produire de meilleurs résultats
      Au bout du compte, ils ont tout simplement beaucoup plus « pratiqué » — la passion pousse le volume d’apprentissage

    • Je suis vraiment d’accord avec l’idée que « quand on ne sait pas ce qu’on ne sait pas, être guidé efficacement par quelqu’un aide énormément »
      Je suis un cas intermédiaire entre formation formelle et informelle
      Je n’ai pas suivi de cours avancés de mathématiques discrètes ni d’algèbre linéaire, et j’ai donc beaucoup de lacunes de fond
      Je ne sais même pas quels mots-clés chercher
      Dans certains domaines, on a vraiment besoin d’être guidé par quelqu’un
      Trouver, à la fin de la trentaine, un tuteur capable de valider un programme de mathématiques vectorielles, c’est vraiment difficile

    • La passion pousse l’autodidaxie, alors qu’en classe quelqu’un vous maintient en permanence sur les rails, donc elle y est peut-être un peu moins indispensable
      Et puis, il y a l’autodidaxie « orientée but », mais aussi des autodidactes dont l’objectif est de comprendre les principes mêmes du système

    • Même si quelqu’un vous force à aller au bord de l’eau, cela ne signifie pas que vous n’y seriez jamais allé par vous-même
      La différence constante, à mon avis, c’est que les autodidactes sont tous des gens qui, au moins une fois, sont allés seuls jusqu’au bord de l’eau

    • Je suis un profil hybride, formation formelle + autodidaxie
      J’ai suivi beaucoup de cours à l’université, mais je n’ai pas réussi les examens au point d’obtenir le diplôme
      Si j’ai pu apprendre le reste en autodidacte, c’est justement parce que ces cours m’avaient donné les bases

  • Je trouve les cours universitaires vraiment excellents
    Quand on ne sait rien, on n’irait jamais de soi-même explorer l’API sockets de C, un projet bash, les systèmes distribués, les structures de données ou les algorithmes
    En pratique, j’ai beaucoup interviewé d’autodidactes ou de diplômés de bootcamp, et ils ont tendance à ne creuser que les domaines qui leur sont familiers, ou à s’effondrer dès qu’on pose des questions académiques
    À l’inverse, ceux qui n’ont pas vraiment codé à l’université ont souvent un niveau très faible, et même en étant encore étudiants, ils oublient tout ce qu’ils ont appris auparavant
    Je pense que la meilleure combinaison consiste à avoir déjà un peu codé avant d’entrer à l’université
    Il faut avoir connu les difficultés du terrain par soi-même pour vraiment s’approprier les solutions théoriques et élégantes présentées en cours
    Plus on s’est fait piéger par des erreurs de gestion mémoire comme RAII, plus on ressent profondément l’intérêt de tels concepts

    • Il faut distinguer les diplômés de bootcamp des autodidactes
      On peut trouver des gens compétents dans les bootcamps, mais parmi ceux que je connais, beaucoup n’arrivaient pas à apprendre seuls et envisageaient l’université ou une autre voie ; ils ont choisi le bootcamp parce que c’était l’alternative la moins chère
      À l’époque, il n’y avait pas de bootcamps, et je restais aussi à distance des cours en ligne ou des méthodes d’apprentissage traditionnelles
      Je voulais construire quelque chose de génial, et il m’était bien plus excitant de résoudre les problèmes de manière indépendante que de recommencer en suivant un manuel
      Si j’ai appris le C seul quand j’étais jeune, c’est parce qu’il y avait des choses impossibles à faire avec les ressources ou le code déjà existants, et que je voulais absolument obtenir un résultat formidable, donc je n’avais pas d’autre choix que de fouiller les forums, lire la documentation et avancer par essais et erreurs
      À mon avis, le plus important n’est pas la méthode d’étude, mais le désir puissant d’apprendre

    • Avant même d’aller à l’université, j’étais déjà très à l’aise en C et avec l’API sockets, et j’avais déjà livré du logiciel
      Un ami à moi gagnait déjà de l’argent au lycée en vendant des jeux pour C64
      Tous les deux, nous étions largement au-dessus du niveau d’un débutant en codage concret
      Ce qui me manquait, c’était surtout le calcul, l’algèbre linéaire, les mathématiques discrètes et la théorie ; j’avais aussi parfois des lacunes en structures de données et en algorithmes
      Le cursus en informatique a bien comblé ces trous, mais il n’a pas amélioré mes compétences de codage à proprement parler
      Les matières liées à la programmation n’étaient pas du tout difficiles ; ce qui me posait problème, c’étaient au contraire les maths et les cours théoriques
      Le programme informatique a fait de moi un ingénieur plus équilibré, mais pas un meilleur développeur

    • À l’époque où j’étais à l’université, l’ambiance du département d’informatique était exactement l’inverse des avantages qu’on attribue aujourd’hui à l’université

      • des cours conçus intentionnellement pour faire échouer des étudiants
      • des enseignements théoriques peu pratiques, choisis et donnés au gré des intérêts des professeurs
      • une discipline elle-même organisée pour rester difficilement accessible
        C’est d’ailleurs pour ces raisons que je n’ai pas choisi l’informatique à l’université (je suis aujourd’hui développeur senior dans une entreprise technologique américaine), et à l’époque, même dans cette université prestigieuse où seuls les meilleurs dossiers entraient, le taux d’échec, le chômage des diplômés et l’ambiance professorale étaient tous catastrophiques
        Bien sûr, certains ont beaucoup tiré de l’université, mais ce n’est pas la réalité partout
        Beaucoup de diplômés en informatique que j’ai rencontrés en entreprise avaient de grandes difficultés en communication, en compréhension du business et en priorisation du travail
        Il arrive souvent qu’ils sachent seulement coder (et encore, pas toujours très bien), et il est en réalité rare qu’un cursus universitaire en informatique prépare à lui seul pleinement au travail concret
        À mes yeux, c’est même la manière dont on enseigne à l’université qui représente le mieux le fait de rester dans sa zone de confort
    • Il faut aussi reconnaître que l’accès aux cours universitaires et leur coût relèvent de questions de classe sociale et de situation économique
      Et certains autodidactes ont très bien pu pratiquer l’API sockets, des projets bash, etc.
      Au passage, les autodidactes et les profils issus de bootcamp sont des types complètement différents
      Je peux m’effondrer dans des situations imposées comme les entretiens de type audition, mais quand je suis seul, je résous très bien de vrais problèmes

    • Ça va peut-être sonner un peu boomer, mais j’appartiens moi aussi à une génération où l’université était vraiment excellente
      Nous construisions des compilateurs, des OS jouets, des interfaces GPS, etc.
      J’ai été invité il y a quelques années à enseigner dans un autre établissement, et j’ai été très déçu
      Le cursus donnait l’impression d’avoir étiré les bootcamps actuels sur plusieurs années en y ajoutant quelques matières sans grand rapport
      Il y avait très peu de fondamentaux, et à part un cours d’algorithmes, c’était surtout React et les frameworks populaires dans les startups locales
      (Édit : en regardant le cursus, on y trouvait effectivement des cours de business, management, humanités, chimie, environnement, entrepreneuriat et e-sport)

  • On dirait qu’ils investissent beaucoup d’efforts à accepter eux-mêmes l’absence de formation dans leur parcours
    Il existe d’excellents autodidactes et des diplômés peu brillants, mais d’après ma propre expérience, avoir eu un diplôme en informatique m’aurait davantage aidé dans mon cheminement
    L’informatique, dans son essence, ne se résume pas au code, et comme en ME (génie mécanique), les attentes et les rôles diffèrent selon les métiers
    Les ingénieurs mécaniciens aussi sont souvent moins bons que les mécaniciens pour régler de petits problèmes comme une fuite d’huile ou un pneu crevé
    Pourtant, on ne dénigre pas pour autant un diplôme d’ingénieur
    Moi aussi, au départ, sur le terrain en production, je me salissais les mains pour résoudre des problèmes que les techniciens ne savaient pas corriger, mais cela relevait surtout de mes goûts personnels et de ma curiosité

  • Si les autodidactes obtiennent d’excellents résultats, c’est précisément parce qu’ils ont la motivation, la passion et l’autonomie nécessaires pour devenir autodidactes
    Au bout du compte, si on a la curiosité, la concentration et la discipline, on finit au-dessus de la moyenne, que l’apprentissage soit formel ou non
    Il y a aussi un biais du survivant — on ne voit en pratique que les autodidactes qui ont réussi à survivre sur le terrain
    À l’inverse, ceux qui ont échoué en autodidacte s’en seraient peut-être mieux sortis avec un véritable enseignement
    J’ai apprécié aussi bien mes études en informatique et en mathématiques, mais en termes de cadre personnel, j’ai plutôt l’impression que l’auto-apprentissage me convient mieux

    • En l’absence totale de statistiques, je pense qu’il ne faut pas trop s’inquiéter d’erreurs statistiques
      Le mot « souvent » n’est qu’une manière d’habiller le flou
  • Je suis à la fois développeur logiciel et enseignant en informatique à l’université
    Le point commun des ingénieurs qui réussissent vraiment, c’est toujours l’« intérêt » et la « passion »
    Les autodidactes sont naturellement très intéressés par leur domaine, donc leur motivation est en quelque sorte déjà validée
    Les diplômés forment un ensemble plus hétérogène — certains ne visent que le diplôme, connaissent seulement le vocabulaire théorique, et il devient alors difficile de distinguer le vrai niveau

    • C’est exactement ça
      Un autodidacte est, par définition, quelqu’un qui a une motivation et un intérêt suffisamment forts pour sortir du cadre existant et étudier seul
  • On peut voir le savoir comme un cercle sur un tableau
    https://matt.might.net/articles/phd-school-in-pictures/
    Le cercle que l’on apprend à l’université est étonnamment étroit, et correspond en grande partie au même cursus pour tout le monde
    Par exemple, il n’y a pas le temps d’enseigner des choses comme l’algorithme dmc (utilisé dans l’un des meilleurs algorithmes de compression)
    À la place, tout le monde répète simplement un cursus généraliste
    Pourtant, certaines personnes sont allées au-delà de ce cercle
    Ce sont elles les meilleurs programmeurs de l’industrie — elles connaissent même des algorithmes rares qu’on ne voit normalement que dans les articles de recherche, et cela leur donne un niveau à part
    C’est pareil pour les autodidactes : comme ils peuvent avoir des lacunes sur le socle commun que tout le monde apprend, ils partent souvent de leur propre motivation et de leur humilité
    Mais le cercle de connaissances qu’ils possèdent s’est construit organiquement sous l’effet de leur passion
    Et je pense que cette passion est le meilleur signal prédictif de performance chez un ingénieur

  • Autrement dit : « une personne qui a déjà montré qu’elle savait juger par elle-même ce qu’il fallait apprendre, puis l’apprendre réellement, excellera dans les travaux qui exigent précisément cette capacité »

  • Linus Torvalds a entièrement réécrit MINIX en créant Linux Margaret Hamilton a forgé les concepts modernes de fiabilité logicielle dans le projet Apollo
    Ces deux personnes sont des ingénieurs ayant reçu une formation formelle
    La formation formelle offre l’occasion d’acquérir une maturité mathématique et d’ingénierie, y compris dans la capacité à « faire » concrètement

    • Torvalds n’avait presque pas reçu d’enseignement spécifique en informatique lorsque la première version de Linux a été publiée en 1991

    • Je suis d’accord moi aussi
      Dans notre cursus de licence, nous avions également un projet où nous devions écrire nous-mêmes un OS multiprocessus en assembleur 68K
      Grâce à ce type d’expérience, il nous a été beaucoup plus facile d’aborder la structure et le fonctionnement du noyau Linux
      Si nous n’avions même pas su ce qu’était un noyau, nous n’aurions jamais pu commencer

  • Récemment, j’essaie d’apprendre seul un problème de calcul numérique dans lequel je n’avais aucune expérience (écrire un solveur LU creux)
    Les ressources les plus utiles n’ont pas été l’implémentation directe ni le démontage du code d’un solveur existant, mais des notes de cours couvrant le sujet
    En parcourant l’ensemble du cours, j’ai aussi découvert des concepts liés que j’ignorais
    Dans d’autres domaines aussi, les supports de cours universitaires ont souvent été les ressources de meilleure qualité
    Si l’on affirme que les cours universitaires sont inutiles, il devient difficile d’expliquer pourquoi les meilleures ressources sont justement issues de l’université
    On dit aussi parfois que construire soi-même est ce qu’il y a de mieux pour progresser, mais les projets universitaires eux-mêmes intègrent presque toujours fortement la « construction réelle » dans l’évaluation

    • Je suis entièrement d’accord
      Les livres techniques approfondis sont excellents eux aussi, mais la valeur qu’on en tire change complètement selon la manière dont on les aborde
      Si l’on n’apprend que de la théorie sans aucune mise en pratique, on perd vite l’intérêt et on oublie tout presque aussitôt
      En revanche, si l’on étudie une théorie liée à un besoin concret ou à un travail réel, elle se transforme instantanément en savoir pratique indispensable
      Si quelqu’un a déjà accumulé suffisamment d’expérience en autodidacte au début, puis entre à l’université en gardant sa passion, il peut accomplir des choses extraordinaires en très peu de temps

    • En conclusion, bien sûr que la théorie est importante
      Mais si l’on commence par construire quelque chose avant d’étudier la théorie, on perçoit beaucoup plus clairement ce qu’est un véritable insight