nouvelles

oncle bob, le maître mondial de la programmation : la « crise des 35 ans » est une illusion, et nous, les « vieux programmeurs », sommes toujours là

2024-10-03

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

bob répondla « crise des 35 ans » du programmeur :

pensel’idée selon laquelle la programmation est réservée aux jeunes est en réalité une illusion, mais c'est effectivement une illusion très influente. cette illusion existe parce que la demande de programmeurs a explosé comme une fusée au cours des 70 dernières années.

en fait, nous, les « vieux programmeurs », sommes toujours là, mais le nombre n'est pas si visible.

auteur | wang qilong

produit par |nouveau programmeur》département éditorial

imaginez si vous aviez écrit du code pendant plus de cinquante ans dans votre vie et que vous étiez encore en train de programmer jusqu'à l'âge de 71 ans. comment verriez-vous l'ère actuelle de programmation explosive de l'ia ?

robert c. martin est connu comme le gourou de la programmation de renommée mondiale. cet homme s'appelle ".oncle boble vieil homme (oncle bob) est un pionnier du développement agile et des modèles de conception. il est engagé dans un travail professionnel dans le domaine des logiciels depuis 1970 et est engagé dans des travaux connexes depuis plus de 50 ans. les fameux « solid five principles » sont les cinq. principes de conception dans le domaine de la programmation orientée objet, sont issus de son travail. l'attitude de l'oncle bob à l'égard de l'ia est très ambiguë : d'un point de vue pratique, il s'est plaint clairement que «l'ia d'aujourd'hui n'est qu'un programmeur junior doté d'un demi-cerveau seulement et ne grandira jamais vraiment.", car les tâches que l'ia peut accomplir sont assez limitées ; mais même s'il a plus de 60 ans, il a encore de grandes attentes pour l'avenir : "au moment où nous créerons des machines capables de penser comme des humains dans le futur, les compétences en programmation deviendront obsolètes.

en tant que gourou du développement de logiciels de renommée mondiale, le chef-d'œuvre d'oncle bob, « clean code », a un jour défini ce qu'est un « code propre » et décrit une série de pratiques d'exploitation efficaces.

récemment, la version chinoise du dernier livre d'oncle bob « functional design : principes, patterns and practices » a été publiée. beaucoup de gens se demandent pourquoi ce leader de la programmation orientée objet a « trahi » le « camp ennemi », et oncle bob he a également affiché. son caractère toujours franc et directement « réfuté » : «ces dernières années, certains articles ont affirmé que la programmation fonctionnelle s’opposait à la programmation orientée objet et que la programmation orientée objet était dépassée. je n'étais pas d'accord avec ce point de vue et j'ai décidé d'écrire ce livre.

la programmation fonctionnelle est bien plus qu'une simple « programmation avec des fonctions ». la programmation fonctionnelle est une programmation sans instructions d'affectation.

une fois que vous essayez de programmer sans instructions d'affectation, toutes les autres fonctionnalités de la programmation fonctionnelle se mettent en place. si vous souhaitez gérer des fonctions, vous devez utiliser la récursion. toutes ces choses viennent naturellement au moment où vous décidez de ne pas attribuer de valeurs. c’est donc à cela que sert la programmation fonctionnelle.

——"conception fonctionnelle", robert c. martin

les remarques ci-dessus sont toutes tirées de l'interview d'oncle bob par csdn "new programmer". nous avons eu un échange approfondi avec ce « fossile vivant du développement agile » et écouté son récit personnel sur la manière dont lui, l'un des 17 leaders de l'industrie du logiciel, a co-publié le « manifeste agile » il y a 23 ans (2001).détails historiques, et a également appris les dernières opinions sur la programmation de l'ia auprès de ce programmeur senior avec plus de 50 ans d'expérience en développement, ce qui a rafraîchi les opinions passées de nombreuses personnes sur oncle bob.impression historique. l'article suivant commencera par les souvenirs d'oncle bob de 1970, ramenant les lecteurs à « l'ère ancienne des programmeurs », alors que même le world wide web n'était pas encore né.

plus de 50 ans de codage

"nouveau programmeur": avant le début de l’entretien, pourriez-vous s’il vous plaît faire une brève présentation ?

oncle bob:d'accord, je m'appelle bob martin. certaines personnes m'appellent oncle bob. je suis programmeur depuis longtemps.plus de cinquante ans.lorsque j’ai commencé à programmer, les ordinateurs étaient suffisamment gros pour remplir une grande pièce et coûtaient plusieurs millions de dollars.

j'ai travaillé avec une variété de langages de programmation, notammentlangage assembleur, cobol, fortran, pl/i, c, c++, pascal, java, c#attendez. au fil des années, j'ai participé au développement d'une variété de systèmes allant des systèmes financiers aux systèmes embarqués en temps réel et aux systèmes de contrôle de processus. par conséquent, vous pouvez dire que j’ai une vaste expérience dans ce secteur.

de plus, j'ai écrit plusieurs livres, dont clean code (code propre), "la voie d'une architecture propre" (architecture propre), et le livre dont nous discutons aujourd'hui s'intitule "conception fonctionnelle》(conception fonctionnelle)。

"nouveau programmeur"à part écrire des livres, que faites-vous pendant votre temps libre ? à propos, je lis souvent votre twitter et j'ai découvert qu'environ 50 % de vos tweets sont des informations sociales sur les élections américaines et trump, et les 50 % restants concernent le contenu technique, la programmation et votre point de vue sur le code.

oncle boben effet. les années sans élections, environ 90 % de mes tweets concernent des logiciels. mais comme c’est une année électorale, il y a davantage de contenu couvrant d’autres sujets. quand je n'écris pas de livres ou que je ne programme pas, je fais beaucoup de choses. j'aime faire du vélo et voyager beaucoup. je suis également pilote et j'ai beaucoup de plaisir à voler dans mon propre avion. j'ai une grande famille avecquatre enfants et dix petits-enfants., je leur rends généralement visite autant que possible, donc mon temps est très bien organisé.

"nouveau programmeur": s'il vous plaît, ramenez-nous au point de départ de votre carrière de programmeur et racontez-nous l'histoire de vos débuts en tant que programmeur en 1970. vous aviez 18 ans à l’époque et les premiers langages que vous avez appris étaient l’assembleur et le cobol. pouvez-vous parler de votre expérience à vos débuts ?

oncle bob: eh bien, il n’y avait pas beaucoup de cours au collège à cette époque. je n’avais aucun intérêt pour l’école à l’époque. a cette époque, la guerre du vietnam faisait rage et il y avait beaucoup d'émeutes et de troubles sur le campus. et,j'ai beaucoup appris sur la programmation informatique et j'ai appris le cobol et le fortran, et même plusieurs langages d'assemblage informatique. donc je ne pense pas qu'il soit nécessaire d'aller à l'université

quant à l'endroit où ma carrière de programmeur a commencé, tout a commencé lorsque ma mère m'a acheté un petit ordinateur en plastique quand j'avais 12 ans. ce jouet a trois tongs et six portes et, et vous devez tourner un petit levier pour le faire fonctionner. certains élastiques et leviers à l'intérieur déplacent les pièces, lui permettant d'effectuer des calculs simples, comme compter de 0 à 7, ou. en comptant de 7 à 7. le compte revient à 0. de plus, vous pouvez également le programmer pour ajouter deux bits afin de générer un bit de somme et un bit de retenue. j'ai même écrit beaucoup de programmes intéressants dessus - le processus de programmation consiste à ajouter un petit tube inséré sur le loquet, ces tubes se bloquent. la tige d'entrer dans la fente, modifiant ainsi l'état de la gâchette.

j’ai donc passé quelques semaines à apprendre à faire fonctionner cet ordinateur jouet et, grâce à ce processus, je suis devenu programmeur.depuis, je suis programmeur

c'était mon point de départ, puis mon père a acheté beaucoup de livres sur les ordinateurs et les langages de programmation pour me donner le plus d'informations possible. puis, à 16 ans, j'ai obtenu un poste de programmeur en écrivant des programmes pour le honeywell 200. le travail durait deux ou trois semaines, quand jeencore juste un garçon, je l'ai fait pendant les vacances d'été et c'était tellement amusant.

environ deux ans plus tard, à l'âge de 18 ans, j'ai trouvé un emploi à temps plein pour écrire du langage assembleur et du cobol pour ibm 360. peu de temps après, j’ai commencé à programmer de nombreux micro-ordinateurs en langage assembleur. à l'époque où ces ordinateurs étaient produits par varian corporation, de nombreuses entreprises fabriquaient des micro-ordinateurs, mais peu d'entre elles réussissaient, et c'était digital equipment corporation (dec) qui dominait le domaine. je suis ensuite devenu très compétent dans la programmation des pdp 8 et pdp 11, des appareils produits au début des années 1970.

"nouveau programmeur": les années 1970 étaient une époque vraiment intéressante. le world wide web n’avait pas encore été inventé et usenet venait juste d’être inventé.apparaître. vous êtes l'un des premiers utilisateurs d'usenet au monde et j'ai également appris que le surnom « oncle bob » vous a été initialement donné par un collègue de l'entreprise. plus tard, vous avez utilisé par erreur ce surnom comme signature sur usenet, et finalement le nom a réussi à passer d'un surnom à votre vrai nom. pouvez-vous partager l'histoire?

oncle bob: je travaillais dans une startup appelée clear communication, ce qui a été le début de ma carrièrequatrième arrêt, entre 1987 et 1989. là, un collègue a donné un surnom à tout le monde, le mien était « oncle bob ». c'était un peu ennuyeux au début parce qu'il se promenait toujours en m'appelant par ce surnom : "oncle bob, et ça ?"

j'ai quitté cette entreprise et je suis devenu consultant, et plus personne ne m'appelait « oncle bob ». il s'avère que j'ai un peu raté le titre, alors j'ai commis l'erreur de l'ajouter à ma signature électronique.

j'étais très actif sur usenet à l'époque, publiant souvent des articles sur des groupes de discussion tels que comp.object et comp.lang.c++, et les gens ont commencé à remarquer "oncle bob" dans ma signature. j'étais à une conférence c++, probablement vers 1990, et quelqu'un m'a pointé du doigt de l'autre côté du couloir et m'a dit : « écoute, c'est oncle bob. j'ai pensé : oh mon dieu, j'ai fait une erreur, je devrais vraiment changer de mon ! signature. - mais ensuite j'ai réalisé que "oncle bob" serait en fait une bonne marque, alors je l'ai gardée.

"nouveau programmeur": usenet peut être considéré comme le premier média social auquel vous participez. comme beaucoup de développeurs légendaires, vous aimez participer à différentes communautés ou forums. je vous ai vu un jour publier sur hash. remarque : "je m'appelle robert martin. à cette époque, de nombreux développeurs vous demandaient activement de poser des questions et de vous joindre." la conversation. désormais, cette communication semble se faire principalement sur twitter.

oncle bob:droite,gazouillementmaintenant mon principal média social. j'utilise également facebook, mais principalement pour rester en contact avec ma famille et mes amis.

"nouveau programmeur": vous avez d'abord été attiré par le c et le c++, mais vous avez également mentionné avoir essayé des langages tels que snobol, focal, alcom et basic par intérêt. selon vous, quels autres langages de programmation peuvent être qualifiés d'« intéressants » ? surtout parmi les nouveaux langages de programmation apparus ces dernières années, lesquels trouvez-vous intéressants ?

oncle bob: la langue que je trouve la plus intéressante en ce moment estclojure, une langue dans laquelle j'ai investi beaucoup de temps. cela m'a surpris car clojure est en faitzézayerun dialecte de lisp que je n’aurais jamais pensé apprendre.

pendant les trente premières années de ma carrière, je n'ai jamais envisagé d'apprendre le lisp parce que je pensais que c'était un langage épouvantable – parce que, bien sûr, je ne le comprenais pas du tout. jusqu'au jour où j'ai lu un livre intitulé "la structure et l'interprétation des programmes informatiques". le langage utilisé dans le livre était lisp, ce qui m'a immédiatement attiré. tout d’un coup, je suis devenu un grand fan de lisp. je veux trouver unfaçons d’utiliser lisp dans votre vie quotidienne, alors j'ai rencontré clojure.

équivalent clojureun dialecte lisp pouvant s'exécuter sur la jvm (java virtual machine), c'était parfait pour moi, alors j'ai commencé à apprendre à coder clojure et à m'amuser en le faisant, c'était un super passe-temps pour moi.

de plus, il existe d'autres langages intéressants tels queen avant, un langage de pile basé sur des expressions postfix qui est différent de tous les langages que j'ai jamais utilisés et très intéressant.prologuec'est aussi un langage très intéressant. vous n'avez pas besoin de dire directement à la machine ce qui est correct, mais laissez-la obtenir le résultat correct en le résolvant. dans l’ensemble, ce sont des langues très intéressantes que tout le monde devrait découvrir car elles sont très uniques.une fois que vous apprenez un langage très différent, cela change toute votre vision du code

lorsque les machines penseront comme les humains, les compétences en programmation deviendront obsolètes

"nouveau programmeur": je comprends certains de vos commentaires précédents sur le code de l'ia. à votre avis, les grands modèles de langage sont parfois bons et parfois stupides. bien que l'explication du code de l'ia ait un peu aidé, vous avez quand même déclaré qu'il ne fallait pas lui faire aveuglément confiance.

oncle bob: oui, programmeuril est facile de devenir trop dépendant d'outils comme copilot et d'accepter sans réserve le code qu'ils génèrent lorsque vous le voyez, et c'est dangereux. vous devez être critique, et même si une partie de ce code est correcte, la plupart du temps, vous devez être très prudent avec le code généré par l'ia. donc ma suggestion est,soyez prudent, utilisez-le comme un outil et rappelez-vous toujours que les outils peuvent vous nuire s'ils sont mal utilisés.

"nouveau programmeur": alors, pour les programmeurs qui commencent tout juste à apprendre, comment devraient-ils utiliser l’ia pour se développer ? j'ai entendu deux points de vue complètement différents dans les entretiens : l'un est que les programmeurs débutants devraient pleinement adopter l'ia ; l'autre est que l'ia détruira les programmeurs débutants parce que ces personnes n'ont pas la capacité de juger de la qualité du code de l'ia.

oncle bob: tout comme les pilotes juniors ne devraient pas utiliser le pilote automatique.veuillez d'abord apprendre à piloter un avion, puis utiliser le pilote automatique lorsque vous n'avez pas besoin de prêter attention aux détails. il en va de même pour l’ia.les programmeurs débutants ne devraient pas s’appuyer sur l’ia au début car ils ne savent pas encore juger de la qualité du code de sortie. souvent, ce code n’est pas seulement mauvais, il est tout simplement faux et ne fonctionne pas du tout.

ce qui m'inquiète vraiment, c'est lorsque des programmeurs juniors se voient confier une tâche et choisissent d'utiliser l'ia pour la mettre en œuvre. une fois que l'ia a donné le code, ces novices penseront toujours : « eh bien, cela a été donné par l'ia, ça doit aller », et perdront ensuite leur emploi. donc ma suggestion est,vous devriez même réduire votre utilisation de l’ia au cours des premières années de votre carrière.

"nouveau programmeur": de nos jours, de plus en plus de codes générés par l'ia sont utilisés dans différents projets. comment équilibrez-vous la qualité du code et l’efficacité de la génération ?

oncle bob: ma façon d'équilibrer estutilisez l'ia pour générer d'abord du code, puis nettoyez-le. je ne le laisserai pas insérer du mauvais code dans le projet. donc, si le code généré par l’ia fonctionne et réussit mes tests, alors je reviendrai le refactoriser, le nettoyer et l’améliorer sans hésitation. comme changer le nom, extraire certaines fonctions, ajuster la structure, etc.

parce que je ne m'attends pas à ce que l'ia génère du bon code. je vais donc le nettoyer et le transformer en mon propre code. de cette façon, c'est mon projet et le code que j'ai écrit.

"nouveau programmeur": il y a environ cinq ans, quelqu'un vous a demandé « quelles tendances en matière d'ingénierie logicielle sont surfaites ? » et vous avez maudit les microservices.dans cinq ans, y a-t-il d’autres tendances qui seront surévaluées ?

oncle bobla tendance surfaite du moment est bien sûr à l’ia générative, cela ne fait aucun doute. c'est nouveau et tout ce qui est nouveau est surfait. dans cinq ans, tout le monde regardera en arrière et dira : « nous l’avons probablement surestimé. »

"nouveau programmeur": votre vieille connaissance kent beck a dit quelque chose alors que la vague de l'ia montait. il a déclaré qu'il avait utilisé chatgpt à contrecœur et avait constaté que 90 % de ses compétences ne valaient plus rien, tandis que la valeur des 10 % restants avait été multipliée par mille. dans quelle mesure l’ia générative peut-elle être utile ?

oncle bob: pour être honnête, je ne pense pas que l’ia soit particulièrement utile. dans les cas les plus simples, cela peut être quelque peu utile. par exemple, lorsque je faisais un travail de codage très basique, l'ia me donnait du code, je l'examinais et je pensais que tout allait bien, alors je continuais à travailler dessus. ensuite, l'ia continuera souvent à fonctionner en fonction du contexte, jusqu'à ce qu'une fois que les choses deviennent intéressantes, l'ia devienne de moins en moins fiable——plus quelque chose est complexe, moins c’est utile

l'ia peut gérer de petites choses, mais pas du tout si je veux qu'elle refactorise et améliore la conception. de plus, l’ia ne peut pas beaucoup aider lorsqu’il s’agit de rédiger des tests.

"nouveau programmeur": vous avez déjà dit qu’il faudra beaucoup de temps avant que les écoles de codage ne deviennent obsolètes. y aura-t-il un moment précis qui identifiera ce moment ? y a-t-il une fin à la technologie ?

oncle bob: c'est une question intéressante, mais j'y penserais dans une perspective de science-fiction.au moment où nous créerons des machines capables de penser comme des humains dans le futur, les compétences en programmation deviendront obsolètes. mais soyons honnêtes, c’est à ce moment-là que toutes les compétences deviennent obsolètes.je ne suis donc pas sûr que ce soit quelque chose à espérer. si cela doit se produire, je pense que ce sera dans un avenir très, très lointain. vous savez, le cerveau humain est bien plus complexe que l’ensemble d’internet.

"nouveau programmeur": en effet, cela me rappelle que vous aviez aussi dit que tout le monde devrait retourner chez asimovtrois lois de la robotique, même si cela risquait de créer une race d'« esclaves robotiques ». comment comprenez-vous l’intelligence artificielle générale (agi) d’un point de vue philosophique ?

oncle bob: oui, même si je pense que cela ne sera probablement pas possible à court terme, nous disposons déjà de la technologie génétique. si jamais nous créons des machines conscientes pour notre propre survie, je pense que quelque chose comme les trois lois d’asimov sera absolument nécessaire.

"nouveau programmeur": sur cette base, l’ia devrait êtresource ouvertepour éviter que cela se produise ? les humains ont-ils besoin d’une ia ouverte ou d’une ia fermée ?

oncle bob: différentes entreprises veulent absolument garder leurs propres secrets, et je ne pense pas qu’il y ait quelque chose de mal à cela en soi.le vrai problème de l’ia est la consommation d’énergie.elle consomme beaucoup d’énergie et continuera d’augmenter à mesure que la technologie deviendra plus sophistiquée. cela rend son coût assez élevé. nous devons donc voir jusqu’où l’ia peut se développer aujourd’hui et voir dans quelle mesure ces grands modèles de langage peuvent fonctionner. elles consomment cependant beaucoup d’énergie, tout comme les centrales nucléaires.

l'"esprit artisan" des programmeurs

"nouveau programmeur": laissons de côté l’ia et parlons de sujets interhumains.

quelqu'un a demandé un jour "qui est votre mentor dans la vie ?" et votre réponse a été "les livres sont mon mentor". grâce aux livres, vous avez rencontré des personnalités marquantes telles que martin fowler et kent beck, et vous avez même travaillé avec ces deux-là plus tard. donc, comme cette année-làl'une des 17 personnes qui ont créé le manifeste agile, pouvez-vous révéler à quoi ressemble votre relation ?

oncle bob: dans le passé, nous avions souvent de nombreuses réunions liées aux logiciels, mais aujourd'hui, il y en a beaucoup moins. j'assiste à divers types de conférences, telles que des conférences sur le langage c, des conférences sur les modèles de conception et certaines conférences générales sur le développement de logiciels. grâce à ces activités, j'ai rencontré beaucoup de gens.

par exemple, j'ai rencontré lors d'une conférence sur les modèles de conceptionkent beck, rencontré lors d'une première conférence extreme programmingmartin fowler. j'ai rencontré la plupart de ces personnes face à face. ils étaient à la fois mes partenaires et mes mentors. j'ai beaucoup appris d'eux. ce sont aussi mes pairs, et nous apprenons et progressons ensemble. une grande partie de ce que j'ai appris est venue de livres de programmation des années 1960 et 1970, tels que the art of computer programming de donald knuth, et les livres de cette époque ont été pour moi des sources d'informations très importantes.

ainsi, vers 30 ans de carrière, j'ai commencé à assister à des conférences et à rencontrer des gens face à face, et c'est dans cet environnement que nous avons fondéréunion agile. la plupart des personnes qui ont assisté à des conférences agile, je les connaissais auparavant, soit par correspondance, soit après s'être rencontrées lors de conférences.

"nouveau programmeur": on peut souvent voir un point de vue, à savoir : « le développement agile est-il vraiment applicable ?

il fut un temps où de nombreux développeurs recherchaient une livraison rapide et ignoraient la qualité des logiciels. il s'agit peut-être d'une mauvaise compréhension de l'agilité.

oncle bob: c'est en effet un malentendu sur agile. agile ne consiste pas à être plus rapide, il s'agit de comprendre où vous en êtes. vous faites du développement agile afin de savoir exactement quels progrès vous faites, à quelle vitesse vous les faites et si vous respectez vos délais. en d’autres termes, agile est un excellent moyen de vous aider à comprendre à quel point vous vous trouvez en difficulté. cela garantit que vous ne serez pas surpris lorsque les délais dépassent, et cela donne à chacun une idée claire des progrès car nous ne serons peut-être pas aussi rapides que nous le pensions.

beaucoup de gens croient à tort qu’agile est une méthode rapide, et certains la commercialisent également comme une méthode rapide, mais c’est toujours un malentendu.l'agilité n'est pas un moyen de vous rendre plus rapide, c'est un moyen de vous faire savoir à quelle vitesse vous êtes.agile n’est donc pas obsolète ; ce n’est pas une technologie obsolète. si vous souhaitez connaître l’avancement réel et la date d’achèvement de votre projet, agile est un excellent moyen de le faire.

"nouveau programmeur": un de vos tweets m’a profondément frappé, à savoir : « l’agilité a été fondée à l’origine parpromoteurinitié, maischef de projetintervenir dès les premiers stades du mouvement agile a détruit la relation de collaboration originale. « pouvez-vous me raconter l'histoire ?

oncle bob: en effet, le mouvement agile a été lancé à l'origine par un groupe deprogrammeurinitié. dix-sept participants se sont réunis au snowbird resort pour créer le manifeste agile. nous sommes tous des programmeurs, ou du moins avons de solides connaissances techniques. ce mouvement n'a pas commencé dans une perspective de gestion de projet, mais l'un des fondateurs, ken schwaber, a décidé de lancer un cours appelé certification.maître scrum(scrum master)". ce cours est conçu pour former les personnes souhaitant devenir scrum masters et leur apprendre à aider l'équipe à utiliserméthode scrum——il s'agit d'un modèle de développement agile.

les chefs de projet ont manifesté un vif intérêt et se sont inscrits à de tels cours. étant donné que la plupart des participants étaient des chefs de projet plutôt que des programmeurs, cela a abouti à l'originalle mouvement initié par les développeurs s'est progressivement transformé en un mouvement mené par les chefs de projets.les programmeurs étaient mécontents car ils se sentaient exclus de cette initiative.

pour résoudre ce problème, un groupe d'entre nous a commencémouvement de l'artisanat logiciel(software craftsmanship) et a publié le manifeste de l'artisanat dans le but de reconnecter les chefs de projet et les développeurs. cependant, cela n’a pas abouti à des résultats significatifs.

en fin de compte, nous avons séparé un « mouvement agile officiel » centré sur la gestion de projet et un véritable mouvement agile dirigé par les développeurs. cette dernière s'engage toujours à travailler de manière concise et ordonnée et à clarifier sa position et son orientation de développement.

"nouveau programmeur": alors, quelle est la signification du rôle de scrum master ? en quoi ce rôle est-il important ? comment cultiver un excellent scrum master ?

oncle bob: le scrum master a été conçu à l'origine pour être un membre de l'équipe chargé de rappeler aux autres membres les engagements pris lors de l'utilisation des méthodes scrum ou agile. les responsabilités comprennent des contrôles hebdomadaires des progrès de l'équipe, comme la confirmation que le code du test a été écrit comme prévu et que les méthodes d'estimation prédéterminées ont été suivies. ce rôle est alterné au sein de l'équipe, généralement entre différents membres. dans les équipes matures, après plusieurs semaines de pratique, il n’est pas nécessaire de superviser un scrum master dédié car les membres de l’équipe sont déjà capables d’exécuter consciemment le processus établi.cependant, avec l’implication du chef de projet, ce rôle a progressivement évolué vers une fonction de gestion de projet, ce qui est loin de l’intention initiale du scrum master.en conséquence, le rôle du scrum master a aujourd’hui considérablement changé.

"nouveau programmeur": vous venez de mentionner l'histoire de l'artisanat logiciel, ce qui m'a rappelé que votre signature sur twitter dit également "artisanat" (artisanat), c'est un mot très ancien, aujourd'hui il faudrait le traduire par "esprit d'artisan”。

comment faut-il comprendre ce mot ? dans le secteur en croissance rapide d’aujourd’hui, n’est-il vraiment pas temps de se concentrer sur la qualité ? à mesure que l’ia progresse, la livraison de logiciels semble s’accélérer. je pense que l’ia va aider, n’est-ce pas ?

oncle bob: ces grands modèles de langage sont des outils vraiment intéressants et je pense qu'ils seront utiles aux programmeurs. mais ils ne remplaceront pas les programmeurs et ne feront pas tout le codage. ils ne sont pas doués pour écrire du code, mais ils peuvent proposer des suggestions intéressantes. donc je penseils seront utiles, mais pas suffisants pour que nous n’ayons plus besoin de programmeurs.

quant à l'artisanat, c'est une attitude, une attitude envers le travail. la meilleure façon de l'expliquer est la suivante : lorsque vous rentrez d'une longue journée de travail et que vous vous regardez dans le miroir, vous pouvez vous dire : « j'ai fait un excellent travail aujourd'hui et je suis fier de mon travail.la façon dont se comporte un artisan.les artisans sont satisfaits de la qualité de leur travail. ils sont diligents et disciplinés pour produire un travail de haute qualité. c'est le cœur de l'artisanat logiciel.

bien entendu, nous pouvons discuter de nombreuses technologies et méthodes, telles que le développement piloté par les tests (tdd), la conception simple, les principes solid, etc. il existe de nombreuses technologies et concepts. mais l'idée fondamentale est qu'à la fin de chaque journée, vous pouvez vous dire : « j'ai fait un excellent travail aujourd'hui. » malheureusement, de nombreux programmeurs rentrent chez eux, se regardent dans le miroir et ressentent le besoin de prendre un bain. parce qu'ils ont l'impression d'avoir passé une mauvaise journée. ils ont écrit un tas de mauvais codes juste pour respecter un délai, et ils doivent se débarrasser de ces mauvais sentiments. c'est ça l'artisanat : rentrer chez soi en sachant que l'on a fait du bon travail et en étant fier de son travail.

"nouveau programmeur": votre livre "the way to clean code" (code propre) reflète également le principe de l'artisanat. le soi-disant « tao » du code propre se concentre-t-il davantage sur la mise en œuvre de la logique métier plutôt que sur la programmation système ? ou n'y a-t-il aucune différence entre les deux ?

oncle boble code propre est un ensemble de concepts et de techniques qui vous aident à travailler comme un artisan afin que vous puissiez rentrer chez vous fier de votre travail.peu importe que vous implémentiez une logique métier ou que vous fassiez de la programmation système. il s'agit simplement d'un ensemble de techniques et de concepts qui vous aident à bien faire votre travail et à vous sentir satisfait.

"nouveau programmeur": j'ai déjà découvert que, qu'il s'agisse de la communauté des développeurs en chine ou aux états-unis, beaucoup de gens pensent qu'un code propre signifie beaucoup deabstrait. alors, comment éviter d’écrire du code trop conçu et trop abstrait ?

oncle bob: oui, c'est un phénomène très étrange, car mon livre lui-même ne recommande pas une abstraction excessive, ni une grande abstraction. ce que suggère le livre, c'estutilisez les abstractions avec parcimonie et de manière appropriée, mais une conception excessive n'est pas recommandée. apparemment, certains programmeurs pensent que toute forme deindirectsont tous mauvais, ils pensent que la seule façon d'écrire du bon code est d'essayer dedirect. je ne suis pas d'accord avec ce point de vue, je pense qu'une quantité modérée d'indirection et d'abstraction peut être utile, mais vous devez être très prudent car l'abstraction a un coût. utilisez donc l’abstraction lorsqu’elle aide à résoudre un problème, mais soyez conscient de son coût et utilisez-la avec parcimonie.

"nouveau programmeur": c'est probablement la raison pour laquelle vous avez dit il y a quelque temps que vous lanceriez une nouvelle version de "code cleanliness". puis-je comprendre cela comme une effacement des sources ? mais puisque vous avez décidé de repenser et de réécrire complètement le livre, pourquoi ne pas lui donner un nouveau nom ?

oncle bob: le titre du livre a été décidé par l'éditeur. je voulais principalement réitérer le concept de base du "clean code", mais j'ai utilisé différentes expressions et développé le thème sous différents angles.

le livre original a été écrit il y a 16 ou 17 ans pour le public de l’époque. et maintenant, j'écris ce livre pour les lecteurs d'aujourd'hui. ça va essayerrésolvez les problèmes les plus courants dès aujourd'hui. j'utiliserais un langage différent et adopterais des approches différentes, le rendant moins directif et plus informatif, en essayant de transmettre le même point de différentes manières. le message est le même, mais exprimé différemment. je pense que ces deux livres seront finalement complémentaires et que les lecteurs devraient les lire tous les deux.

l'ia est un programmeur junior avec seulement un demi-cerveau

et ne grandit jamais vraiment

"nouveau programmeur": parlons de votre nouveau livre « functional design ». tout d’abord, pourquoi avez-vous voulu écrire ce livre ?

oncle bobla programmation fonctionnelle a gagné en importance au cours de la dernière décennie. bien que les gens aient commencé à s'intéresser à la programmation fonctionnelle vers 2005, il s'agit en fait d'un concept plus ancien, existant en tant que langage mathématique depuis 1936, et l'un des premiers langages de programmation était fonctionnel.

au début, les langages fonctionnels étaient coûteux à exécuter, lents et nécessitaient de grandes quantités de mémoire. mais aujourd’hui, les progrès de la puissance de calcul et des ressources mémoire ont rendu le coût de la programmation fonctionnelle presque négligeable. cela apporte les avantages de la programmation fonctionnelle, notamment lorsqu'il s'agit de programmation multithread. la programmation fonctionnelle vous permet d'écrire du code multithread sans vous soucier des conditions de concurrence ou des mises à jour simultanées. en effet, la programmation fonctionnelle n'a pas d'instructions d'affectation et ne modifie pas l'état des variables.

en apprenant clojure, j'ai trouvé que c'était une façon amusante de coder et de résoudre des problèmes. je pense qu'il devrait être combiné avec d'autres outils comme la programmation orientée objet et la programmation structurée.cependant, ces dernières années, certains articles ont affirmé que la programmation fonctionnelle s'opposait à la programmation orientée objet et que la programmation orientée objet était dépassée. je n'étais pas d'accord avec ce point de vue et j'ai décidé d'écrire ce livre.

couverture du livre « conception fonctionnelle : principes, modèles et pratiques »

ce livre explique comment la programmation fonctionnelle, la programmation orientée objet et la programmation structurée fonctionnent ensemble pour créer de meilleurs systèmes. il commence par des concepts de base, construit progressivement des principes et des modèles de conception, et enfin les combine dans une petite application complète. j'espère que les lecteurs comprendrontla programmation fonctionnelle n'existe pas de manière isolée, qui fonctionne avec tout ce que nous avons appris au cours des 50 dernières années.

"nouveau programmeur": j'ai également recueilli de nombreuses questions sur le nouveau livre de la part de la communauté des développeurs csdn, et la plupart des gens sont très curieux de savoir pourquoi vous avez choisiclojureau lieu de scala pour écrire le code dans le livre ? est-ce parce que vous souhaitez utiliser un langage plus fonctionnel qui ne prend pas en charge les classes et l'héritage, pour prouver que vos principes solid s'appliquent également à la conception fonctionnelle ?

oncle bob: une partie de la raisonen effet. bien que clojure ne soit pas un langage fonctionnel « pur », il est très propice à l’écriture de programmes fonctionnels. cependant, il y a une autre raison, peut-être plus importante, pour laquelle j'ai choisi clojure, et c'estclojure est très simple

ce que je veux transmettre dans ce livre, c'est l'idée de programmation fonctionnelle, et non enseigner un langage de programmation fonctionnelle complexe. je ne veux surtout pas enseigner une langue avec une grammaire complexe. la syntaxe de clojure est très simple et n'a presque aucune syntaxe complexe. apprendre clojure est facile et vous pouvez le maîtriser en lisant le code clojure.

ainsi, lorsque je montre du code dans le livre, je n'entre pas dans les détails du fonctionnement de clojure, j'explique plutôt quelques concepts de base et laisse le lecteur comprendre la plupart du reste. je recommande également d'autres documents auxquels les lecteurs intéressés pourront se référer. mais dans l’ensemble, clojure est très simple à comprendre, doncpour les lecteurs qui ne connaissent pas grand-chose à clojure ou à la programmation fonctionnelle, ils peuvent se concentrer davantage sur le concept de programmation fonctionnelle sans être dérangés par le langage lui-même.

"nouveau programmeur": je me souviens que vous avez dit un jour sur twitter que si quelqu'un souhaite être mentionné dans votre prochain livre, il peut soumettre un morceau de code qu'il juge le plus intéressant. est-ce que cela arrive souvent ? combien de personnes soumettent généralement du code ? les développeurs chinois peuvent-ils également soumettre leur candidature ?

oncle boboui, j'ai tweeté cela et j'ai reçu pas mal de réponses. certaines personnes envoient des extraits de code via des liens github ou directement. j'utiliserai probablement une partie de ce code dans un prochain livre.si les développeurs chinois souhaitent soumettre du code qu'ils jugent très intéressant, je serais heureux de l'examiner.mais je ne peux pas promettre d'utiliser le code de tout le monde, car la longueur d'un livre est limitée et je ne peux pas y mettre le code de tout le monde.

"nouveau programmeur": avez-vous des idées innovantes en matière de manuels numériques et de plateformes d'apprentissage en ligne ? de nos jours, les gens semblent moins enclins à lire des livres papier. comment ces nouveaux formats vont-ils révolutionner la manière dont la programmation est enseignée et apprise ? comment comptez-vous enseigner la programmation à la prochaine génération ?

oncle bob:en effet,nous sommes désormais à l’ère du numérique, où la capacité d’attention est tombée à moins de 20 minutes. mais si vous voulez vraiment apprendre quelque chose, vous devez ralentir et vous concentrer sur vos études. plusieurs de mes livres récents sont accompagnésvidéocontenu, les lecteurs peuvent regarder des démonstrations en direct de sessions de programmation via l'url figurant dans le livre. cette combinaison de texte et de vidéo est très efficace.

de plus, il existe une manière très intéressanteconférence en ligne. par exemple, après avoir lu le document imprimé, le livre vous invitera à visiter une url spécifique pour regarder la conférence concernée. je pense que ces méthodes sont très utiles.

je ne pense pas que l’époque des livres papier soit révolue. ils peuvent être convertis en livres électroniques, en pdf ou en versions de lecture en ligne, mais les manuels scolaires ne disparaîtront pas. le texte est un support à très haute densité d'informations, plus dense que les vidéos ou les cours magistraux, et il est également plus pratique de contrôler la progression de l'apprentissage. par conséquent, je pense qu’une combinaison de divers formats d’apprentissage peut être plus efficace, en utilisant à la fois le texte et la vidéo.

"nouveau programmeur": votre livre s'adresse à des lecteurs de tous niveaux d'expertise, du débutant au professionnel chevronné. cela présente certainement différents défis lorsqu'il s'agit d'équilibrer la profondeur et l'étendue du contenu.

oncle bob: mon livre s'adresse vraiment à un groupe diversifié de personnes, qu'il s'agisse de programmeurs débutants ou professionnels. la clé est d’apporter de la valeur aux deux types de lecteurs sans rendre le contenu trop difficile à digérer pour l’un ou sans trop simplifier pour l’autre.

lorsque j'enseigne et que j'écris, je suppose que mes auditeurs ou lecteurs sont aussi intelligents que moi et peuvent comprendre mon contenu. cela leur demandera peut-être un petit effort, mais je suis sûr qu’ils comprendront. je n'ajuste pas le contenu en fonction de mon jugement sur les capacités du lecteur. je transmets simplement mon message directement, comme si je parlais à un pair.

peut-être que j’ai plus d’expérience, peut-être que j’ai vécu plus de choses et commis plus d’erreurs. je peux ainsi partager mes expériences et mes histoires. mais je ne vais pas le ralentir ni le simplifier à l’excès.

"nouveau programmeur": comment avez-vous changé votre façon d’enseigner la programmation au fil des années ? quelles nouvelles approches et leçons avez-vous adoptées pour suivre l’évolution du paysage technologique ?

oncle bob: au début, j'utilisais habituellementtransparents, et affichez le contenu du cours via un projecteur, en préparant généralement une grande pile de films pour afficher le contenu page par page. au fil du temps, j'utilise maintenantipadc'est très amusant de faire une présentation, de la connecter à un projecteur et de dessiner sur l'écran de l'ipad avec l'apple pencil, et tout sera affiché sur grand écran en temps réel.

pendant la pandémie de covid-19, nous avons commencé à enseigner via des outils de formation à distance tels que zoom. désormais, la majeure partie de mon enseignement se fait à distance. j'utilise toujours des présentations de diapositives et des dessins sur écran, et ces méthodes fonctionnent toujours. la seule différence est que dans l'enseignement à distance, je ne peux pas voir directement la réaction du public, ce qui est moins une expérience.la moitié du plaisir

"nouveau programmeur": un autre changement provoqué par l'épidémie est que de nombreux programmeurs craignent d'être remplacés par l'ia. j'ai déjà vu une déclaration selon laquelle l'apprentissage de la conception fonctionnelle peut les aider à conserver leur emploi, pouvez-vous développer cela ?

oncle bob: la conception fonctionnelle et les concepts des livres de conception fonctionnelle sont en fait conçus pour vous aider à devenir un programmeur plus mature.ajoutez de nouveaux outils à votre « boîte à outils ». la programmation fonctionnelle est un bon outil, la programmation orientée objet est un bon outil et la programmation structurée est également un bon outil. celles-ci devraient être dans votre boîte à outils. le développement piloté par les tests est un excellent outil, et il est préférable de l’avoir sous la main. les principes solid sont également bons et devraient absolument figurer dans votre boîte à outils. le but de ce livre est donc d'élargir la boîte à outils du développeur, ce qui vous aidera certainement à conserver votre emploi.mais je ne pense pas que vous ayez trop à vous inquiéter d’être remplacé par l’ia. il est peu probable que cela se produise de mon vivant, et cela n’arrivera peut-être pas de votre vivant, ou cela n’arrivera peut-être jamais. j’ai le sentiment que nous ne verrons pas de machines capables d’une intelligence au niveau humain.

"nouveau programmeur": concernant la conception fonctionnelle et la programmation orientée objet, je pense que beaucoup de gens ont dû vous demander lequel est le meilleur. mais ce que je veux demander c'est, pensez-vousdans lequel l’ia actuelle est-elle meilleure ?par exemple, la programmation fonctionnelle est-elle mieux adaptée à la génération de code ia ? il n'a pas d'état, une fonction peut être générée lorsqu'elle est utilisée, et chaque fonction peut également être automatiquement générée et vérifiée par l'ia. ainsi, si l’ia est meilleure en matière de conception fonctionnelle, les programmeurs qui ne connaissent que la programmation fonctionnelle seront-ils confrontés à une crise plus grave ?

oncle bobce n’est pas grave, car l’ia ne peut rien faire, et il n'est pas meilleur pour générer du code fonctionnel que du code orienté objet ou structuré.vous pouvez considérer l’ia comme undes programmeurs juniors avec un demi-cerveau et qui ne grandissent jamais vraiment. il vous donnera quelques suggestions, dont la plupart ne sont pas très bonnes, et certaines d'entre elles peuvent convenir, mais elles doivent être modifiées, car le code écrit par l'ia est toujours compliqué.

l'ia est ce qu'elle est, et elle peut être utile, mais vous ne devriez pas ajuster votre orientation professionnelle pour s'adapter à l'ia. l'ia est un outil et vous pouvez apprendre à l'utiliser, mais vous ne devriez pas modifier vos projets de carrière uniquement pour un certain outil d'ia.

que faire si vous ne savez pas quoi faire face à la programmation de l'ia

puis éteignez-le

"nouveau programmeur": si une nouvelle personne venait vers vous et vous demandait : « quel langage dois-je choisir comme premier langage de programmation ? », quelle serait votre réponse habituelle ?

oncle bob: eh bien, vous pouvez choisir java. cela dit, c# est aussi un très bon langage. clojure est également bon. le langage c est également disponible. le c++ est un peu difficile et complexe, mais c'est aussi une option. le langage go est également très bon, c'est un bon langage...

en fait, celui que vous choisissez n’est pas si important. la programmation reste la programmation, peu importe le langage avec lequel vous commencez. plus important encore, vous devez apprendre la langue suivante. ne vous arrêtez pas à une seule langue.apprenez-en une, passez quelques mois jusqu'à ce que vous maîtrisiez quelque peu, puis apprenez-en une autre, et ainsi de suite, en apprenant une nouvelle langue chaque année. considérez l’apprentissage d’une langue comme amusant et trouvez une langue que vous n’avez pas encore apprise. vous ne l’utiliserez peut-être jamais au travail, et vous ne l’utiliserez peut-être plus jamais, mais prenez l’habitude d’apprendre une nouvelle langue tous les ans ou tous les deux ans.peu importe par où vous commencez, ce qui compte c’est que vous continuiez à apprendre.

"nouveau programmeur": recommanderiez-vous aux programmeurs juniors de participer à des projets open source ? dans quels projets open source impressionnants avez-vous participé vous-même et pouvez-vous partager l’histoire ?

oncle bob: mon fils et moi avons commencé un projet il y a 20 ans et il est toujours en cours et c'est un super projet. même si je ne suis plus impliqué, beaucoup d’autres continuent.

si vous êtes un programmeur junior ou un jeune programmeur et que vous souhaitez apprendre de nouvelles idées, je vous recommande de rejoindre un projet open source. essayez de soumettre des demandes de tirage et contribuez autant que vous pouvez. c'est d'une part une excellente manière d'aider les autres et d'autre part une formidable opportunité d'apprentissage. quoi qu'il en soit, vous avez raison, je recommande fortement aux gens de s'impliquer dans des projets open source, c'est un excellent moyen de développer votre carrière.

"nouveau programmeur": connaissez-vous la « crise des 35 » ? de nombreux programmeurs sont confrontés à deux voies une fois qu'ils atteignent un certain âge : soit passer à la direction, soit prendre leur retraite.

oncle bob: c’est un vrai problème étant donné la préférence de l’industrie technologique pour les jeunes. en fait, un développeur m'a posé une question similaire, et je m'en souviens très bien. ses mots exacts étaient : « oncle bob, pourquoi programmez-vous encore à 70 ans ? » il a raison, j'ai 71 ans maintenant et j'écris toujours du code.

cette idée selon laquelle la programmation est réservée aux jeunes est en réalité une illusion, mais c’est en effet une illusion très influente. cette illusion existe parce que la demande de programmeurs a explosé comme une fusée au cours des 70 dernières années.

pensez-y de cette façon : tous les cinq ans, le nombre de programmeurs dans le monde double. cela signifie que nous devons doubler le nombre de programmeurs tous les cinq ans, ce qui signifie que la moitié des programmeurs dans le monde ont moins de cinq ans d'expérience et que les trois quarts des programmeurs ont moins de dix ans d'expérience. autrement dit, les trois quarts des programmeurs dans le monde ont moins de 35 ans. alors quand on regarde autour de soi, on ne voit que des jeunes. vous vous demandez peut-être où sont tous ces vieux programmeurs ?en fait, nous sommes tous toujours là, mais moins nombreux.

cela crée l’illusion que les programmes ne conviennent qu’aux jeunes, mais c’est en réalité complètement faux. pour devenir un programmeur vraiment puissant, il faut beaucoup de temps pour l'accumuler. il y a peut-être des programmeurs expérimentés qui pensent que c'est formidable d'avoir dix ans d'expérience. c'est effectivement bien, mais dans cinq ans, il pourra devenir un meilleur programmeur.

donc, si vous aimez vraiment écrire du code, pensez que c'est votre favori et que vous voulez continuer à le faire, alors n'abandonnez pas. vous n’êtes pas obligé d’être manager. s’il y a des gens qui sont bons en gestion, laissez-les faire. si vous voulez continuer à écrire du code, continuez. vous n'êtes pas obligé de changer de carrière ou de prendre une retraite anticipée. cela ne veut pas dire que votre cerveau ne fonctionnera pas bien à 36 ans. en effet, de nombreuses nouvelles personnes affluent désormais dans cette industrie, et pas seulement des jeunes, mais des personnes de tous âges apprennent la programmation.cela ne veut pas dire que vous n'avez aucune chance.

"nouveau programmeur": cela me rappelle que de nombreux programmeurs doutent désormais d'eux-mêmes face à l'ia. mais en réalité, le doute de soi n’a rien de nouveau, et de nombreux anciens programmeurs auraient eu le même problème à des époques précédentes. avez-vous déjà eu des sentiments de doute de vous-même auparavant ?

oncle bob: quand j'ai commencé à programmer, j'étais encore un jeune enfant, j'ai toujours senti que je pouvais me faire un nom. je n’ai jamais douté de moi à cette époque.

au lieu de cela, j'ai commencé à faire des erreurs, à me faire virer et à connaître d'autres revers. le doute de soi en ce moment est en fait une bonne chose.un doute modéré de soi est en fait assez sain. parce qu’au bout d’un moment, on apprend à y faire face.vous pensez : « d'accord, je sais comment éviter ces erreurs. je sais que je ne suis pas parfait, mais tant que je me concentre, que je fais attention et que je parle aux autres, je devrais être capable de résoudre ces problèmes lentement. will va surmonter ces doutes. en fait, traverser une période de doute n’est pas nécessairement une mauvaise chose. cela permet de grandir et de devenir plus fort.

"nouveau programmeur":pour finir, pouvez-vous donner quelques conseils aux développeurs actuels ? surtout les programmeurs qui se sentent confus ou perdus en matière de programmation d'ia.

oncle bobsi vous ne savez pas quoi faire face à la programmation de l'ia, désactivez l'ia. ignorez-le simplement.passez encore un mois à écrire du code vous-même, puis activez l'ia. peut-être qu'alors il examinera votre code et verra ce que vous voulez faire, puis il pourra vous donner de meilleures suggestions.

par exemple, imaginez que vous êtes un débutant qui apprend à conduire. vous n'avez jamais touché au volant et vous souhaitez utiliser la conduite automatique dès le démarrage. dès que vous appuyez sur autopilot, la voiture commence à bouger. vous pourriez être mort de peur en pensant : « je dois d'abord éteindre cette chose. laissez-moi acquérir de l'expérience. en attendant d'apprendre à conduire, essayez à nouveau autopilot. pensez : « oh, maintenant je comprends comment cette chose fonctionne. » vous pourrez alors en faire un meilleur usage.il en va de même pour l’ia. ce n’est peut-être pas fluide au début, mais au fur et à mesure, vous deviendrez de plus en plus compétent.