Une conversation avec Jon Skeet : Le Chuck Norris de la programmation, sur le podcast de Yellow Duck

Publié : Dernière mise à jour :

Saviez-vous que lorsque le code de Jon Skeet ne compile pas, le compilateur s'excuse? Et le fait que lorsque Jon fait une recherche sur Google, le seul résultat est "Je reviens tout de suite" ? Source : Débordement de cheminée

Pour ceux d'entre vous qui ne le savent pas, Jon Skeet est ingénieur logiciel senior chez Google à Londres, au Royaume-Uni. Si certaines des affirmations les plus folles à son sujet doivent encore être vérifiées, ce qui est certain, c'est qu'il est le seul utilisateur de Stack Overflow dont la réputation dépasse 1 000 000.

Depuis 1998, ce type a contribué à plus de 34 000 réponses sur le site, générant plus de 230 000 000 de visites ! Que demander au type qui a déjà répondu à toutes les questions imaginables ?

Découvrez-le en écoutant notre conversation avec Jon Skeet.

Marcin Kraszewski a pu s'asseoir avec Jon et lui demander quelque chose de nouveau. Il s'avère qu'il a plus de réponses à donner, dont certaines que vous n'avez pas entendues ailleurs.

Avez-vous entendu l'histoire de Jon qui s'est lancé dans le développement de logiciels en créant un jeu vidéo ? Quel est le problème le plus difficile que Jon a dû résoudre en tant qu'ingénieur ?

Notre conversation couvre tout cela ainsi que les plus grands changements dans l'industrie du logiciel au cours de la dernière décennie, ce que les développeurs utilisaient avant Stack Overflow, combien de temps encore Jon prévoit de contribuer à Stack Overflow, une comparaison de C# et Java, et les conférences préférées de Jon.

Il s'agit d'une occasion unique de prendre part à une exploration décontractée du parcours personnel de l'un des plus grands noms du logiciel.

Vous pouvez suivre Jon ici :

Mais tout d'abord, écoutez notre conversation avec Jon sur le Yellow Duck Podcast

Vous trouverez ci-dessous la transcription écrite de notre conversation.

MARCIN: Ok tout le monde bienvenue au Yellow Duck Podcast j'ai un invité très spécial avec moi aujourd'hui. Je vais parler avec Jon Skeet si vous ne savez pas qui est Jon Skeet et bien il est l'un des principaux contributeurs à Stack Overflow il pourrait même être le principal contributeur à Stack Overflow qui est, si vous ne connaissez pas Stack Overflow, c'est incroyable. C'est essentiellement un site web où vous pouvez obtenir des réponses à presque toutes les questions, pas seulement celles liées au développement de logiciels et à la technologie, mais il y a aussi Stack Exchange, qui est en quelque sorte le site parent de Stack Exchange, et vous pouvez obtenir des réponses à des questions sur n'importe quoi, de la comédie improvisée à la science et à l'astronomie, tout ça. Alors Jon, bienvenue.

JON: Merci beaucoup. C'est un plaisir d'être ici.

MARCIN: Merci de me rejoindre ici sur le podcast du Canard Jaune. J'ai un tas de choses à vous demander. Mais tout d'abord, je veux, bien sûr, arriver à la question numéro un qui est en quelque sorte dans mon esprit. J'ai fait un peu de recherche sur votre activité sur StackOverflow qui est mondialement connu et très étendu. Et ma question est que vous avez répondu à votre première question sur Stack Overflow le 26 septembre 2008, à 12:11 selon les informations que j'ai pu obtenir. Racontez-moi en quelque sorte les circonstances entourant cette première réponse et nous savons comment vous avez fait. Comment avez-vous commencé à utiliser Stack Overflow. Comment avez-vous obtenu cette réponse. Comment avez-vous répondu à cette question ? Vous savez, où tout a commencé, OK ?

JON: Donc c'était vraiment un exercice de narcissisme dans une certaine mesure. J'ai entendu parler de Stack Overflow pour la première fois sur le blog de Sara Chip. Elle avait écrit une critique de la première édition de C# en 2008, ce qui semble être une époque très lointaine. J'ai lu sa critique, puis j'ai lu d'autres articles de son blog et ils mentionnaient Stack Overflow. Je me suis donc dit que j'allais jeter un coup d'œil et j'ai cherché sur Stack Overflow des questions auxquelles répondre. Je n'avais pas vraiment d'idée de ce qu'était le site et j'ai cherché des questions sur le C# en profondeur, en particulier s'il y en avait. Il y avait quelques mentions ici ou là et il y avait des questions sur le C# et je me suis dit que je pouvais y répondre, alors je vais y répondre et, en quelque sorte, tout est parti de là. Auparavant, j'avais écrit beaucoup de newsgroups, à la fois pour C# et pour Java Newsgroups, au cours de la dernière décennie, et cela semblait être une étape dans l'évolution de ces newsgroups. Je n'avais jamais aimé les logiciels de forum en HTML. Pour diverses raisons, mais rien n'était aussi utile que les newsgroups pour moi, alors que Stack Overflow a complètement changé cela.

MARCIN: Génial et nous sommes tous très reconnaissants pour votre contribution. Je pense que vous avez répondu à plus de 35 000 questions, ce qui est une contribution incroyable à la communauté. Donc on est évidemment tous très reconnaissants pour ça. Et je pense que c'est vraiment intéressant que vous avez en quelque sorte commencé comme, dans un sens comme vous l'avez dit juste comme un utilisateur général, vous avez juste découvert son site Web et décidé de répondre aux questions, pouvez-vous aller en quelque sorte à la prochaine que ce qui vous a fait répondre vous savez la deuxième, la troisième, la quatrième que les centaines de questions plus tard, quand avez-vous senti que c'est vraiment quelque chose que vous voulez faire. Peut-être un focus spécifique sur Stack Overflow mais en général. Quand avez-vous ressenti cette sorte de passion pour vraiment répondre à un grand nombre de ces questions, comme si vous aviez cette énergie.

JONJ'ai commencé à répondre à des questions sur Java sur des newsgroups bien avant que C# n'existe et à participer à des discussions qui ne sont pas aussi pertinentes pour Stack Overflow, mais j'ai posté énormément de messages sur les newsgroups Java et j'aime aider les gens et ce n'est pas purement altruiste. J'aime aider les gens parce que ça m'améliore en tant que programmeur, ça m'améliore définitivement en tant que communicateur, ce qui est, je pense, incroyablement important en génie logiciel, et puis il y a l'effet d'aider non seulement la personne qui a posé la question mais aussi, espérons-le, d'aider les gens plus tard, ce pour quoi Stack Overflow est vraiment optimisé. Et je pense que certains des problèmes où les gens posent de mauvaises questions est qu'ils pensent juste à leur besoin immédiat plutôt que de penser comment je peux poser une question qui va m'aider mais aussi aider les gens à venir plus tard. Et si vous commencez à partir de cette perspective, alors c'est ce que la communauté de Stack Overflow est en quelque sorte construite autour et le nombre d'impressions que les bonnes questions peuvent obtenir est énorme, donc vous pouvez aider la communauté mondiale entière de programmeurs, ce que je trouve incroyable.

MARCIN: Tout à fait. C'est une grande idée qui était, je pense, quelque chose qui devait être créé. Vous savez les gens étaient prêts à commencer à partager leurs connaissances et Stack Exchange et Stack Overflow ont été créés vraiment juste à temps comme vous l'avez dit il y avait d'autres moyens de partager les connaissances. Mais je pense que c'est peut-être le plus accessible pour tout utilisateur qui veut obtenir des réponses à ses questions. C'est un moyen très efficace et je pense que c'est aussi très bien modéré, du moins pour les adeptes locaux.

JON : oui. Le degré de modération est certainement un point sensible pour beaucoup d'utilisateurs, pas seulement quelques uns, qui ont essayé de poser la question et l'ont mal posée, sans donner assez de détails ou en donnant beaucoup trop de détails. Il y a des tas de façons différentes de mal poser une question et je pense que la modération est l'un des points forts du site, elle essaie de maintenir la qualité du site et de le rendre aussi utile qu'il peut l'être, mais c'est certainement un point sensible et je pense qu'il y a du travail à faire en termes de communication des objectifs du site pour que tout le monde puisse tirer dans la même direction. Ce n'est pas que tout le monde. Eh bien, je suis sûr qu'il y a quelques personnes qui posent délibérément de mauvaises questions ou qui modèrent méchamment juste pour le plaisir. Il y aura toujours quelques abrutis, mais j'ai tendance à penser que la plupart des gens ne sont pas des abrutis. Ils sont gentils, ils donnent de leur temps et ils veulent un site de qualité.

Et si nous pouvons juste nous assurer que tout le monde est aligné, alors cela conduira à une meilleure expérience pour tout le monde. Donc il y a encore un peu de travail à faire en termes de communication et toutes sortes de choses qui peuvent être très difficiles parce que si vous êtes coincé sur un problème immédiatement et vous n'avez pas enregistré ou posé une question ou quoi que ce soit sur Stack Overflow avant votre première tentation est de voir un mur de texte disant que c'est le genre de question que vous devriez poser et comment vous devriez aborder les choses et vous vous dites : " Je m'en fous, je veux poser ma question tout de suite ", alors qu'en fait, si vous prenez cinq, dix minutes, voire une demi-heure pour parcourir le site, parcourir les différentes ressources d'aide, j'ai écrit un très long article de blog sur ce que je recherche dans une question, qui est censé aider les gens à poser des questions, mais je peux comprendre la frustration et la raison pour laquelle les gens sautent tout ça et disent tout droit. Permettez-moi de poser ma question maintenant. Je vais supposer que je sais ce que je fais et c'est très malheureux que cela leur donne à propos de l'expérience et si les gens ne lisent pas l'aide qui leur a été donnée alors aucune amélioration de cette aide ne peut vraiment surmonter le fait qu'ils ne la lisent pas. Donc c'est, c'est délicat

MARCIN: La chose intéressante à propos de Stack Overflow semble être que je sais au moins maintenant que Stack Overflow toutes les données sont disponibles. Tu peux télécharger l'ensemble des données et tu penses que c'est important.

JON: Absolument. Oui et c'est un objectif depuis le premier jour.

MARCIN: Vous pensez que c'est une partie importante du fait que Stack Overflow continue d'être populaire.

JON : Je ne sais pas, c'est définitivement une fonctionnalité. Par exemple, je pense que toutes les questions de Stack Overflow ont été importées dans Google BigQuery, ce qui signifie que les gens peuvent lancer des requêtes sur toutes sortes de données et il y a un Stack Overflow. Des outils d'analyse de données sont également disponibles par ce biais, ce qui permet d'effectuer toutes sortes d'explorations de données sur les questions de Stack Overflow, et c'est exactement ce qu'ont fait divers spécialistes des données. C'est donc très cool de ce point de vue. Ça crée aussi une sorte de sentiment de confiance que Stack Overflow ne possède pas vos contributions. Tout le monde le fait, elles sont toutes sous licence appropriée, donc même si Stack Overflow lui-même en tant qu'entreprise faisait faillite, l'information ne serait pas perdue, mais je ne sais pas vraiment à quel point c'est important, je pense que l'importance varie en fonction de qui vous demandez, mais l'importance pour la communauté de la science des données. Je pense que, n'étant pas membre de cette communauté, je pense que c'est un véritable trésor.

MARCIN: Je veux dire que j'ai entendu parler de certains projets où ils essaient d'utiliser Stack Overflow pour former un algorithme d'apprentissage automatique pour en fait comme écrire des logiciels ou au moins vous savez déboguer des logiciels ou c'est une sorte d'utilisation intéressante des données pour sûr. Maintenant, en ce qui concerne Stack Overflow, par exemple, il y a probablement beaucoup de questions qui sont vraiment très similaires et presque la même question, mais pas tout à fait. Voyez-vous une solution dans un avenir proche, peut-être en utilisant l'apprentissage automatique ou quelque chose pour réduire la quantité de contenu dupliqué ou proche du contenu dupliqué ?

JON: Bon, alors Stack Overflow essaie déjà de trouver des questions similaires et les suggère pendant que vous posez la question est, vous savez : "Avez-vous regardé ces choses. Nous pensons qu'elles sont similaires." Et même après que vous ayez posé la question. Il y a une liste sur le côté droit qui vous montre les doublons potentiels ou les questions connexes et il est relativement facile pour une question d'être fermée comme un doublon parce que si vous avez un tag d'or, il y a un badge d'or dans un tag particulier, alors vous pouvez fermer les choses regarder très facilement ce qu'on appelle le marteau de doublon. Cela permet de fermer les questions très rapidement s'il s'agit de doublons, et de savoir s'il est possible de rationaliser encore plus... C'est difficile, car l'apprentissage automatique ne sera jamais précis à 100 %, et vous ne voulez pas empêcher les gens de poser des questions. Même si vous soupçonnez fortement qu'il s'agit d'un doublon. Vous avez presque besoin d'un "êtes-vous vraiment vraiment sûr". Avez-vous vraiment regardé toutes ces choses, mais je ne sais pas, j'ai l'impression que c'est un peu moins un problème. L'aspect duplicata que les gens posent des questions et ne fournissent même pas assez d'informations ou le bon type d'informations pour pouvoir dire si c'est un duplicata ou non. Et j'espère que. Je sais que Stack Overflow est passé par quelques itérations d'une sorte d'assistants pour poser des questions disant, "A quoi ressemble votre code, quels langages utilisez-vous. Avez-vous trouvé un exemple court mais complet qui démontre le problème ?". Ce genre de choses. On ne sait pas exactement ce qui va fonctionner, mais je sais que l'équipe travaille dur pour essayer d'améliorer l'expérience de pose de questions, car fondamentalement, Stack Overflow repose sur le fait que de bonnes questions sont posées.

MARCIN: Sans aucun doute et parce que je suppose qu'il y aura toujours des questions à poser, quelle que soit la technologie, depuis combien de temps elle existe. Quelle est la raison principale. Qu'est-ce qui motive le fait qu'il y aura toujours de nouvelles questions à poser, même sur le C#. Comme je l'ai dit, vous avez répondu à cette question et à d'autres sujets, vous savez, 35 000 réponses, mais il y en a toujours plus. Je suppose que cela va à la nature de l'ingénierie logicielle ou juste que vous ne pouvez pas tout abstraire.

JON: C'est multiple, en partie parce que le langage change, donc j'écris actuellement sur C# 7.2 et je dois apprendre de nouvelles choses moi-même pour pouvoir ensuite écrire à leur sujet. Il serait donc tout à fait naturel que les gens posent des questions sur C# 7.2 ou sur d'autres choses qui sont relativement nouvelles - C# 7.0 est encore relativement nouveau. Donc, au fur et à mesure que les langages évoluent et que de nouveaux frameworks et de nouvelles bibliothèques apparaissent, et toutes sortes de choses. Il y aura toujours de nouveaux domaines sur lesquels les gens pourront poser des questions. Et puis il y a des gens qui posent des questions sur des domaines existants et certaines de ces questions seront nouvelles, d'autres ne le seront pas et certaines pourront être de nouvelles questions déguisées. Ainsi, par exemple, dans C#, la manière exacte dont les expressions lambda capturent les variables, en particulier pour chaque itération, les variables changent dans C# 5 et cela a suscité une foule de questions avant C# 5 lorsque la manière dont cela fonctionnait n'était pas idéale. Et beaucoup de ces questions sont en fait des doublons les unes des autres, mais en fait j'ai répondu à un certain nombre d'entre elles parce qu'il y en a beaucoup qui ne semblent pas avoir de lien évident. C'est seulement quand vous connaissez la réponse que vous pouvez voir que ces deux choses sont le même problème, juste déguisé. Il y aura donc toujours des questions pour lesquelles seul le répondant sait que vous êtes en fait confronté au même problème que quelqu'un d'autre, et la question de savoir si ces questions doivent être fermées en tant que doublons est probablement un sujet de débat. Mais oui, il y aura toujours de nouvelles personnes qui viendront au génie logiciel, ce qui est une chose fantastique, et je pense que certains d'entre eux traitent Stack Overflow comme une ressource d'apprentissage. Je les encourage à le faire. Je pense que Stack Overflow est une excellente ressource de dépannage. Ce n'est pas un bon moyen d'apprendre un langage à partir de zéro, vous ne pouvez pas prendre un compilateur Java ou même un IDE et Stack Overflow et apprendre Java à partir de zéro de cette façon. Ce n'est pas un moyen efficace d'apprendre le langage. Alors qu'un livre ou un tutoriel est une approche beaucoup plus structurée et Stack Overflow est génial pour ça. Eh bien, il y avait cet exemple et je m'attendais à ce qu'il fasse ceci et il a fait autre chose à la place. Et voici pourquoi je pense qu'il devrait se comporter de cette façon et il se comporte en fait d'une manière différente. Quelqu'un pourrait-il m'expliquer exactement ce qui se passe ici ? Ce genre de questions est très bien pour Stack Overflow donc c'est définitivement une sorte d'adjuvant à d'autres outils d'apprentissage mais je ne pense pas que ce soit génial comme outil d'apprentissage initial. Ou comme le seul moyen d'apprendre une langue, mais il y aura toujours des gens qui apprennent des choses pour la première fois. Et comme je l'ai dit, si vous êtes relativement nouveau dans une langue ou une technologie, vous aurez beaucoup plus de mal à trouver. Des questions connexes parce que vous ne savez même pas nécessairement à quoi votre question se rapporte à ce moment-là, donc je ne m'attends pas à ce que l'ensemble ou le flux de questions se tarisse de sitôt. Et c'est en partie à cause des nouvelles personnes, en partie à cause des nouvelles technologies et en partie à cause des anciens qui font des choses qu'ils n'ont jamais faites auparavant. Je pourrais toujours écrire en C# et poser une nouvelle question sur le C# et je pense qu'environ la moitié de mes questions concernent le C# lui-même, ce qui peut surprendre les gens. Il n'y a rien de tel que de connaître un langage raisonnablement bien pour être conscient des choses qui vont mal ou qui sont vraiment inattendues et alors c'est vraiment utile de demander sur Stack Overflow et de dire hé, je m'attendais vraiment à ce que cela se produise et j'ai de bonnes raisons de m'y attendre en raison de toute mon expérience antérieure, mais cela signifie qu'ici vous finissez par poser des questions sur des technologies que vous ne vous attendriez pas à voir apparaître normalement.

MARCIN: Et sur Stack Overflow l'idée de vous savez trouver une réponse en ligne est que depuis combien de temps c'est une sorte de partie intégrante du génie logiciel. Parce qu'avant on était un peu coincé avec disons que disons que vous aviez de la documentation peut-être un couple un couple de tableaux de messages un couple de groupes de discussion. Mais il semble que beaucoup de professionnels utilisent Stack Overflow sur une base régulière et beaucoup de leurs projets et c'est probablement pourquoi Stack Overflow a fini par aborder cette question avec leur licence et dire que vous devez essentiellement mentionner que c'est à partir de cycles où vous avez pris le code. Donc je suppose qu'à votre avis comment le génie logiciel et Stack Overflow ont changé au fil des ans.

JON: Donc je pense que le génie logiciel a changé en partie parce que nous utilisons tous plus de technologies et moins de technologies bien documentées donc tout le monde utilise des bibliothèques tierces à gauche et à droite ces jours-ci ou la plupart des gens le font et les bibliothèques viennent avec une variété de degrés de documentation et dans une certaine mesure Stack Overflow a presque pris le relais de la documentation dans certaines situations. Et il y a eu le projet de documentation de Stack Overflow qui a fini par être annulé parce qu'il ne fonctionnait pas tout à fait pour la situation, mais il est certain que Stack Overflow fait de plus en plus partie de la boîte à outils quotidienne d'un ingénieur logiciel. Et c'est en partie parce que Stack Overflow réagit si rapidement. Je me souviens qu'en 2008 2009, alors que Stack Overflow était encore très jeune. Jeff Atwood disant que vous savez parfois vous devez poster une question et attendre 20 minutes pour obtenir une réponse. Et j'étais tout simplement époustouflé en pensant que 20 minutes, c'est un temps incroyablement court. Et il a raison de dire que si vous posez une bonne question, vous obtiendrez une réponse dans les 20 minutes. Et ce n'était pas le cas sur les newsgroups. Je ne sais pas si c'est dû au nombre de personnes qui lisent ou à la rapidité du monde, mais il est certain que l'on attendait souvent une journée entière avant d'obtenir une réponse dans un groupe de discussion, alors que de nos jours, j'ai tendance à prendre plus de temps pour écrire une question que pour obtenir une réponse. Il est rare que je mette moins d'une demi-heure à rédiger une question, car je fais des recherches, je construis un exemple complet et je pose la question de la manière la plus claire possible, ce qui prend du temps. Mais certainement en moins d'une demi-heure, donc s'il m'a fallu une demi-heure pour écrire la question, moins d'une demi-heure plus tard, j'ai au moins des commentaires disant " Oui, ça a l'air bizarre. C'est nouveau. Je ne suis pas sûr de ce qui se passe ici ou une réponse réelle expliquant la solution du problème. Donc oui, le fait que la latence soit si faible la rend effectivement beaucoup plus viable. Et ça, c'est si vous devez poser une nouvelle question. Dans 90 % des cas, lorsque je suis confronté à un problème pour lequel Stack Overflow m'aide, je n'ai pas besoin de poser la question, car quelqu'un l'a déjà posée. Je constate que, surtout dans les domaines qui me sont moins familiers, comme Python ou les scripts Bash, je fais très souvent des recherches sur Stack Overflow et je trouve la réponse à la question que je voulais poser. C'est génial.

MARCIN: Est-ce que vous trouvez que les gens qui ont en quelque sorte découvert le développement de l'offre et qui veulent en savoir plus, apprennent juste la première langue. Est-ce que vous trouvez qu'ils n'investissent pas assez de temps pour apprendre le noyau. Comme je l'ai dit la documentation de base et vraiment apprendre à connaître le langage avant de se diriger vers quelque chose comme Stack Overflow ?

JON: Je pense qu'il est difficile de dire quelle proportion de personnes font cela, mais je vois certainement des gens qui font cela et qui n'ont même pas appris à connaître le langage et les outils. Mais j'ai l'impression qu'il y a un manque d'enseignement dans les écoles, les universités, du processus de diagnostic et c'est pourquoi j'ai une sorte de coup de gueule sur le fait qu'au Royaume-Uni il y a beaucoup plus de cours d'informatique que de cours de génie logiciel et pour tout le fait que je suis très reconnaissant qu'il y ait des cours d'informatique et nous avons définitivement besoin d'informaticiens. Il y a probablement plus besoin d'ingénieurs en logiciel qui n'ont pas vraiment besoin de connaître les détails du fonctionnement d'un compilateur mais qui auraient vraiment besoin d'un cours sur la façon de résoudre un problème et de l'approfondir. Et si vous ne parvenez pas à le résoudre, voici comment vous le demandez. Qu'il s'agisse de demander à vos collègues, de demander sur Stack Overflow, de trouver un bogue ou autre, ce sont des aspects si simples du processus de diagnostic qu'il ne faut pas essayer de mordre plus que ce que l'on peut mâcher. Si vous êtes nouveau dans un langage, commencez par faire des choses simples. J'ai tendance à utiliser des applications en console plutôt que de plonger immédiatement dans les applications web et mobiles, ce qui dépend entièrement du langage. Bien sûr, si vous utilisez un langage entièrement destiné au développement web, une console sera peut-être impossible, mais utilisez l'environnement le plus simple possible. L'environnement où le débogage va vous aider autant que possible, où vous n'avez pas besoin de 100 lignes de texte passe-partout juste pour que deux lignes de code s'exécutent, ce genre de chose est vraiment utile pour vous préparer à réussir efficacement, de sorte que vous puissiez apprendre un aspect d'un langage, un aspect d'une bibliothèque à la fois, plutôt que de vous noyer dans une mer de OK. J'ai 100 lignes de code et je n'en comprends aucune, on me donne un message d'erreur que je ne comprends pas non plus et je ne sais pas par où commencer. Le problème est que vous commencez quelque part où il y a trop de choses que vous ne comprenez pas. Alors oui, dans un monde qui évolue rapidement, et je suis coupable de cela comme tout le monde, si j'essaie d'apprendre une nouvelle technologie, même si je dis que j'aimerais commencer simplement. Je pense souvent que je n'ai qu'une seule chose à faire, alors je vais m'y plonger. Alors je fais la mauvaise chose, mais je sais que si je suis bloqué, je vais reculer et essayer de faire quelque chose de plus simple, mais dans un monde en mouvement rapide, il est tentant d'essayer de se plonger dans l'action parce que je dois faire quelque chose tout de suite, mais je trouve que c'est beaucoup plus productif et à long terme si vous prenez du recul et essayez vraiment de marcher avant de courir.

MARCIN: Avez-vous déjà été dans une situation, peut-être au début de votre carrière, où vous commencez à résoudre un problème qui a déjà été résolu et où vous réalisez plus tard qu'en fait, c'est comme un problème résolu, c'est quelque chose qui est résolu, vous pouvez simplement utiliser une API ou une bibliothèque de confiance.

JONOui, et il semble y avoir une sorte d'aversion pour les bibliothèques tierces parfois. Un exemple classique est la manipulation du XML. On voit des gens qui disent : " Je n'ai besoin que d'échapper les esperluettes, je vais donc utiliser des chaînes de caractères et construire le XML directement ", puis ils se rendent compte qu'il y a autre chose qui pose problème et, tôt ou tard, ils se retrouvent avec des centaines de lignes de code qui pourraient être complètement évitées si on utilisait une bibliothèque XML pour commencer, ce qui serait beaucoup plus robuste et sûr pour toutes sortes de choses. Donc oui, les gens devraient utiliser des bibliothèques tierces. Il faut les choisir avec soin, mais il existe aussi un grand nombre de bibliothèques de mauvaise qualité. Mais choisir une bonne bibliothèque peut faire toute la différence dans un projet.

MARCIN: Et diriez-vous que c'est quelque chose qui s'acquiert avec l'expérience, ce que je veux dire, c'est que le genre de sagesse qui permet de dire si j'ai vraiment besoin d'écrire du code pour résoudre ce problème spécifique.

JON: Dans une certaine mesure. C'est en partie une question d'expérience et en partie une question de se retenir parce que si vous voyez que vous pouvez faire quelque chose et que cela signifie écrire du code et que vous pensez que ce serait un code amusant à écrire. Alors il y a toujours la tentation d'écrire ce code même si vous n'en avez pas vraiment besoin. Et je suis certainement tenté par cette tentation. Même quand je ne devrais vraiment pas et parfois j'écris un outil rapide en C# même si ce n'est pas le langage le plus approprié pour l'utiliser parce que c'est le langage que je connais le mieux et donc peut-être que cela me rend plus efficace à court terme. Peut-être au détriment de la productivité à long terme. Je ne pense pas qu'il faille s'en inquiéter outre mesure. Ne nous culpabilisons pas trop pour ce genre de choses, mais gardons l'œil ouvert. Il y a beaucoup à apprendre en prenant du recul par rapport à soi-même et en se regardant travailler et en se disant où j'utilise beaucoup de temps d'une manière qui n'est pas productive et comment je peux réduire un peu ça au fil du temps sans essayer de penser oh ça doit vouloir dire que je suis un mauvais développeur et que je devrais abandonner complètement le génie logiciel. Essayez simplement de vous améliorer au fil du temps, tout le temps.

MARCIN: Super. Bien. Maintenant, je pense que ce que je veux faire, c'est essayer d'avoir un peu d'histoire, comme si vous pouviez nous dire que tout le monde a une histoire sur le moment où ils ont commencé à programmer. Alors quelle est votre histoire, quand avez-vous commencé à programmer ? Quand avez-vous commencé à vous intéresser à quelque chose comme le génie logiciel ou la programmation ou le codage ou tout ce que vous voulez appeler à ce moment-là ?

JON: Donc c'était très tôt. Nous avons acheté des Aztec's spectrum 48 K Sinclair's au Spectrum quand j'avais je crois que c'était en 1984 donc j'avais huit ans. Le Spectrum était sorti deux ans plus tôt, en 1982, et au début, je jouais juste à des jeux, puis j'ai assez rapidement commencé à faire du codage très simple. Le spectrum était livré avec un interpréteur BASIC intégré. Ainsi, lorsque vous démarrez l'ordinateur, vous pouvez immédiatement commencer à taper du code et le manuel du spectrum qui l'accompagnait était très bon pour enseigner la programmation, du moins pour enseigner les bases. Et je me souviens d'un jour où mon père était à la maison parce qu'il était malade pour une raison quelconque et je me souviens avoir écrit un stupide petit jeu de tir qui consistait juste à mettre en place un vaisseau spatial probablement composé de quelques caractères ASCII et un extraterrestre apparaissait à un endroit aléatoire et vous déplaciez votre vaisseau spatial de haut en bas et vous appuyiez sur face au feu ou autre, c'était tellement trivial et pas vraiment amusant à jouer. Mais c'était la première fois que j'écrivais quelque chose d'interactif et c'était incroyable, le sentiment que cela me procurait était stupéfiant. Je pense que c'est en partie parce que tous les jeux étaient assez rudimentaires à l'époque, j'ai apprécié Jetpack et Lunar Jet Man, etc. Mais c'était des jeux assez simples, donc le fait d'écrire quelque chose de simple ne m'a pas rebuté. Je me sens un peu désolé pour les enfants d'aujourd'hui qui, s'ils suivent mes conseils et font quelque chose de très simple pour commencer, se retrouveront avec un petit jeu textuel qui vous demande peut-être de deviner un nombre aléatoire et qui vous dira si vous êtes trop haut ou trop bas, etc. Eh bien, si vous comparez cela avec Overwatch ou tout autre jeu auquel vous jouez pour le plaisir. C'est assez difficile de voir comment ils se connectent parce qu'il y a un million d'années-lumière entre un simple texte et des graphiques en 3D, en passant par la mise en réseau et toutes sortes de choses. Mais à l'époque, c'était génial. J'écrivais donc mon propre code de cette façon. Il y avait aussi des magazines qui proposaient des listes à taper. Donc vous achetez un livre et au lieu d'avoir une bande sur le devant avec du code que vous pouviez juste charger, vous deviez tout taper et les avantages de cela sont que ça semblait immensément fastidieux mais vous appreniez tout le temps. Eh bien, c'est ainsi que vous pouvez écrire du code sans que cela soit particulièrement souligné. Je pense que j'ai beaucoup appris de cela et je me souviens qu'un de mes premiers projets significatifs était d'écrire un interpréteur Logo, nous avions les ordinateurs BBC Micro à l'école. Nous avions un interpréteur Logo où il y a une sorte de faux robot et vous pouvez dire avancez de 100, tournez à droite de 90 degrés, etc. et il dessine des feuilles sur l'écran. J'adore ça mais nous ne l'avions pas sur le spectre alors j'ai implémenté le mien parce que je ne savais pas que c'était une chose difficile qui prendrait beaucoup de temps et ça l'a fait mais c'était incroyablement satisfaisant et je pense que c'est un témoignage de la qualité du manuel du spectre que j'ai effectivement appris la trigonométrie à partir du manuel du spectre parce que nous ne l'avons pas encore fait en maths, je n'avais que 10, 11 ou 12 ans. Donc je n'ai pas du tout regardé la trigonométrie à l'école, mais le manuel du spectre était suffisamment clair pour que j'en apprenne assez pour faire un interprète de logo à partir de ça. Et en regardant en arrière, j'aimerais bien voir le code maintenant. Je soupçonne qu'il est absolument immonde. Et bien sûr, il est perdu dans la nuit des temps. Mais rétrospectivement, je suis toujours immensément fier de l'horreur de ce code. Vous pouviez écrire votre liste de logos. Vous pouviez le sauvegarder sur bande, vous pouviez le recharger, vous pouviez l'exécuter, c'était extrêmement cool.

MARCIN: Et au fur et à mesure que vous progressez dans cette compétence, avez-vous toujours pensé que vous alliez travailler en tant qu'ingénieur logiciel ou étiez-vous intéressé par d'autres choses et puis vous avez en quelque sorte été dirigé ou vous savez quel a été le processus pour que vous entriez réellement dans le domaine ?

JON: Je pense qu'à l'âge de 13 ou 14 ans, je me suis dit que ce serait ma carrière. Donc oui. Je n'ai pas fait d'informatique à l'université, j'ai fait une licence de maths et je pensais que peut-être je finirais par faire de la recherche en maths. Il s'avère que je suis loin d'être assez bon en maths pour faire un doctorat ou autre. Mais je savais que ce serait quelque chose impliquant l'informatique. Je m'intéressais à la vie artificielle quand j'étais à l'école, j'ai donc fait une licence de maths puis un équivalent de master en informatique pendant un an et pendant les vacances, j'ai fini par travailler avec un ami chez Digital Electronics et c'est parti de là. J'ai toujours été nul pour diriger ma carrière, je l'ai juste laissée aller d'un endroit à l'autre au gré de mes envies. J'ai toujours considéré que le plaisir était bien plus important pour moi que l'argent, et la reconnaissance que j'obtiens de Stack Overflow et en écrivant est très agréable. Ça n'a jamais été un but délibéré dans la vie de devenir célèbre ou autre. Mais le statut de micro-célébrité bizarre que j'obtiens via Stack Overflow est assez amusant et un peu bizarre, mais faire des choses amusantes dans son travail est toujours beaucoup plus important pour moi, alors je m'assure d'avoir une bonne qualité d'équilibre entre le travail et la vie privée et je peux voir ma famille souvent. Ma famille est incroyablement importante pour moi, mais je n'ai pas prêté autant d'attention à ma carrière que des personnes probablement plus réfléchies pourraient le faire.

MARCIN: Comment les parents peuvent-ils développer l'intérêt de leurs enfants pour la programmation ?

JON: J'ai donc trois enfants dont l'un s'intéresse aux choses Arduino et fait des bouts de codage et aime aussi Python. Un autre a commencé à utiliser Python plus récemment mais faisait auparavant du scratch, ce qui est intéressant, c'est un environnement plus visuel et je ne connais pas grand chose à la science ou à l'enseignement de la programmation aux enfants. J'ai essayé d'apprendre à mes enfants à programmer en Python en adoptant une approche très progressive et je pense que c'est très bien pour les adultes mais je ne suis pas sûr que cela retienne suffisamment l'intérêt des enfants. En tout cas, pas le pas à pas que j'ai été formé à faire. Soit ça, soit je ne suis pas un très bon professeur, ce qui est tout à fait plausible, mais je pense que la chose la plus importante est de s'assurer que c'est quelque chose qu'ils veulent faire. Ce n'est que lorsque j'ai cessé d'essayer d'enseigner la programmation à mes enfants qu'ils ont commencé à le faire par eux-mêmes et à apprendre beaucoup plus. Mon fils aîné a fait un tas de choses avec des Arduinos et des Raspberry Pi. Je suis sûr qu'il y a des choses que je n'ai jamais vues parce qu'il dit de temps en temps : "Est-ce que je peux avoir ces pièces, s'il vous plaît ? Et puis il construit des choses au hasard et c'est comme ça que j'ai appris aussi. Mes parents n'ont jamais veillé sur moi, pour autant que je sache, en termes de programmation. Ils étaient juste heureux que je sois heureux et m'encourageaient à sortir dans le monde extérieur. De temps en temps, mais ils étaient heureux que je fasse quelque chose de créatif et que j'apprenne de moi-même. Donc, si vous pouvez encourager suffisamment les enfants pour qu'ils trouvent quelque chose qu'ils aiment faire par eux-mêmes et leur faire comprendre que vous êtes heureux de les aider quand ils le souhaitent, mais que vous n'allez pas les forcer à le faire. Pour l'instant, c'est l'heure d'une demi-heure de programmation. Alors je pense que c'est la recette du succès. Les enfants aiment apprendre. Ils n'aiment peut-être pas l'école mais ils aiment apprendre et ils aiment faire des choses créatives. Vous les laissez donc libérer cette créativité comme ils l'entendent et ils vous étonneront par ce qu'ils peuvent faire.

MARCIN: Pensez-vous que l'idée que tout le monde devrait apprendre à coder surtout vous savez qu'ils essaient d'introduire plus dans les programmes scolaires. Est-ce une bonne idée ou est-ce que cela force inutilement les gens à apprendre quelque chose qu'ils ne veulent pas vraiment.

JON: Je pense qu'il y a deux aspects : le premier est qu'il est bon d'exposer tout le monde au codage parce que nous avons ce stéréotype malsain de ce à quoi ressemble un programmeur informatique qui nuit vraiment à notre industrie. Donc, si nous pouvons exposer les gens et leur dire ce qu'est réellement le codage et si nous pouvons leur donner une expérience positive, alors les gens qui n'auraient jamais dit naturellement que c'est quelque chose que je vais prendre pour moi peuvent le découvrir. En fait, ils adorent ça. Donc je pense que c'est très bénéfique. Et l'autre aspect est que le logiciel fait fonctionner une si grande partie du monde maintenant que je pense qu'avoir une idée de ce qui est impliqué, même au niveau le plus grossier, est très bénéfique. De la même manière que je pense que les gens devraient avoir des leçons de planification financière, juste les bases de ce que sont les pensions et ce que sont les prêts et comment fonctionne le marché boursier. Je ne veux pas dire pour qu'ils deviennent banquiers, mais pour qu'ils puissent manoeuvrer dans un monde qui est tellement axé sur la finance, en ayant juste une idée que oui, c'est la même chose pour la politique et toutes sortes de choses, le genre de parties de la réalité qui vont affecter votre monde. C'est bien d'en avoir une compréhension de base. Je ne dis pas que je connais beaucoup de choses sur la politique ou la finance mais je suis très heureux de ce que je sais parce que cela aide à façonner la façon dont je vois le reste du monde. Je pense donc que les logiciels ont un rôle certain à jouer dans la mesure où aucun enfant de nos jours n'est issu de la classe moyenne dans les pays développés. Nous pouvons avoir d'autres discussions sur les zones où les enfants n'entreront pas en contact avec les ordinateurs à cause de la pauvreté, etc. Donc, s'ils les voient comme un ordinateur qui exécute du code, il exécute du code très compliqué, mais j'ai une idée de ce à quoi ressemble un code. Et l'idée de savoir ce qu'est le nuage dans la mesure où il s'agit d'ordinateurs fonctionnant ailleurs dans un centre de données géré par Google, Amazon, Microsoft ou autre, et d'en avoir les bases peut vous aider à faire tout ce que vous voulez, vous n'avez pas besoin de coder vous-même pour bénéficier des idées de base sur le fonctionnement des ordinateurs.

MARCIN: Et maintenant avec quelque chose comme Chrome par exemple, avec sa barre d'outils pour développeur. Vous pouvez prendre n'importe quelle personne qui utilise l'Internet et lui dire : "Avez-vous réalisé que tout ceci se passe pendant que vous utilisez ce site Web ?", "Toute cette activité", et ils ne le comprennent peut-être même pas. Mais ça révèle en quelque sorte ce qui se trouve derrière le rideau. Et je pense que c'est parfois un bon moyen de montrer à quelqu'un qui n'est pas intéressé par le sujet et vous dites OK. Laissez-moi juste vous montrer, laissez-moi juste vous montrer ce qui se passe réellement sur ce site Web pendant que vous l'utilisez. Je pense que c'est incroyable que nous puissions en quelque sorte, je veux dire que vous pouvez même ouvrir la console et commencer à pirater du javascript sans avoir à faire quoi que ce soit.

JON: Absolument oui et l'appliquer à l'autre. Il y a beaucoup d'autres façons de faire des bouts de code de base juste pour un navigateur, y compris dans C#, maintenant il y a ce Tray.net qui vous permet de commencer à écrire tout ça juste dans votre navigateur et bien sûr, en coulisse, il y a un conteneur de nuage qui tourne quelque part. Mais vous pouvez certainement commencer à voir du code dans une myriade de langues juste à partir de votre navigateur. Et je pense qu'il y a quelque chose à dire pour l'informatique ayant aussi cette exposition. J'ai certainement donné des conférences aux Cubs et aux guides, et même à la guilde de mon église méthodiste locale, qui sont pour la plupart des personnes à la retraite ou proches de l'âge de la retraite, qui n'auraient jamais fait d'informatique pour la plupart, et j'ai donné une conférence qui leur a montré un peu d'informatique sans qu'aucun ordinateur ne soit impliqué du tout. Des choses comme : vous avez une pile de bouts de papier, comment pouvez-vous les trier efficacement, et j'ai entendu quelques algorithmes différents que vous pouvez utiliser. Et qu'est-ce que cela signifie si vous avez une personne qui essaie de les trier, alors vous pouvez utiliser un algorithme. Si vous avez 10 personnes différentes, est-ce que la méthode que vous avez choisie peut s'adapter à l'aide d'un grand nombre de personnes différentes ? On se retrouve donc avec un tri par fusion ou autre et des choses comme la complexité algorithmique, qui donne des exemples concrets du temps qu'il faut pour faire différentes choses. Si vous avez plus d'entrées pour accrocher des chemises sur une corde à linge ou autre, je pense que les gens peuvent trouver ce genre de choses intéressantes si elles ne les effraient pas. Mais dès que vous commencez à parler d'informatique, beaucoup de gens se détournent immédiatement. Il y a donc beaucoup à dire pour rendre les choses disponibles d'une manière non menaçante et non condescendante et cela demande des compétences importantes dans des domaines que je n'ai pas. J'ai fait ce que j'ai pu, mais je suis sûr que de meilleurs éducateurs seraient capables de faire beaucoup mieux. Je pense que c'est très important.

MARCIN: Continuons ici. Que diriez-vous d'être en plus de Stack Overflow. Y a-t-il des ressources que vous aimez vraiment ? Je veux dire que je suis un fan des livres d'O'Reilly, mais de quoi es-tu fan en ce qui concerne les ressources que tu utilises quand tu veux apprendre un nouveau langage ou autre chose.

JONLes livres sont parfaits pour l'apprentissage des langues parce qu'ils vous y emmènent dans un ordre particulier et de nos jours, bien sûr, cela vaut aussi pour les tutoriels en ligne, à condition qu'ils aient été écrits de manière appropriée et il faut beaucoup d'efforts, je le sais par expérience, pour écrire des ressources qui vous enseignent toutes les caractéristiques d'une langue dans un ordre spécifique qui vous aidera à apprendre. Ainsi, quelqu'un pourrait écrire un tutoriel C# qui n'est en fait pas très bon du tout parce qu'il ne fait qu'un vidage de cerveau. Vous devez donc choisir, mais quelque chose qui est structuré pour vous fait une grande différence Une bonne documentation sur les API est toujours la bienvenue. Ainsi, .NET a tendance à être assez bien documenté et le nouveau navigateur API facilite la recherche de la documentation, etc. J'encourage les gens qui écrivent des bibliothèques à faire des efforts pour rédiger une bonne documentation pour accompagner ces bibliothèques. Il ne sert à rien d'avoir le sérialiseur JSON le plus rapide et le plus performant du monde. si personne ne peut comprendre comment l'utiliser. Mais soit j'utilise les mêmes ressources que les autres, qu'il s'agisse de tutoriels, de livres ou simplement de la recherche des bons résultats lorsque je suis formé à l'écriture, comment puis-je faire ce que je veux. Mettre quelque chose dans un PDF ou n'importe quelle tâche que j'ai sous la main. Oui, je cherche sur internet, j'utilise Stack Overflow, j'utilise des livres, j'utilise des tutoriels, j'utilise des bibliothèques et leur documentation. Oui, c'est à peu près tout je pense.

MARCIN: Et que dites-vous de cette idée que c'est parce que nous sommes en fait des groupes d'âge presque similaires. L'idée qu'à un certain âge, les gens deviennent simplement des managers. Avez-vous vu cela se produire. Est-ce que c'est vrai ou êtes-vous en quelque sorte unique à cet égard que vous développez encore des logiciels ou êtes-vous. Je suppose que vous répondriez quoi à cela.

JON: Je ne suis certainement pas unique. Je dirais que j'ai activement dit que je n'ai pas vraiment géré ma carrière. Le fait que je sois optimisé pour avoir du plaisir, j'ai activement résisté à la gestion pendant un certain temps. J'ai été manager pendant six mois et j'ai découvert qu'il y avait beaucoup de choses à dire à ce sujet. En particulier, j'aimerais penser que je suis empathique et j'essaie consciemment de l'être, car je pense que c'est une compétence importante pour un ingénieur logiciel. J'ai donc pensé qu'il serait intéressant d'essayer de gérer et j'ai essayé, mais il était alors approprié pour moi de revenir à un rôle de contributeur plus individuel. Il y a beaucoup de choses que vous pouvez faire en termes de leadership en tant qu'ingénieur logiciel sans avoir à gérer. J'écris probablement plus de code que la plupart des gens à un niveau d'ancienneté équivalent parce que j'ai choisi de le faire et j'ai activement résisté à des choses qui pourraient avoir un impact plus large mais sans être aussi amusantes pour moi. Vous pouvez souvent passer beaucoup de temps à écrire des documents de conception et oui, j'écris encore des documents assez fréquemment, généralement de manière informelle. Je préfère de loin aller à l'essentiel rapidement. Mais écrire des documents pour contribuer à de multiples équipes en disant Ok, je pense que nous avons tous ce problème. Voyons si nous pouvons trouver une solution ensemble qui aura un impact plus large que si j'écrivais moi-même du code pour résoudre ce problème. Je pense que l'une des choses que vous devriez probablement viser à mesure que vous gagnez en expérience est de voir où cette expérience peut aider d'autres personnes. Mais dans une certaine mesure, il s'agira toujours de coder, dans une certaine mesure, il s'agira de partager vos connaissances avec des groupes d'utilisateurs, des conférences et autres. Et en résolvant des problèmes internes au sein d'une entreprise que vous pouvez voir plus clairement que d'autres personnes qui sont peut-être moins expérimentées, qui viennent de rejoindre une équipe ou autre. Mais pour ce qui est de savoir si les gens devraient devenir des managers ou non, je pense personnellement qu'il serait tout à fait correct pour quelqu'un de venir et de commencer à manager immédiatement sans avoir nécessairement fait le travail lui-même. Si c'est quelque chose dans lequel ils sont bons, par empathie et apprentissage, vous pouvez apprendre ce qu'un travail implique sans le faire, tant que vous êtes conscient que vous ne l'avez pas fait et que vous n'avez pas d'expérience directe. Je ne pense donc pas qu'il devrait y avoir une corrélation directe entre l'âge et la proportion de travailleurs qui sont des managers. J'espère certainement continuer à écrire du code jusqu'à la retraite et probablement ne pas faire beaucoup de gestion. Si je dois être manager à un moment donné, je le ferai du mieux que je peux, mais je ne pense pas que cela doive être une obligation et je pense que beaucoup d'entreprises font l'erreur de promouvoir des personnes à des postes de management alors qu'elles seraient bien plus heureuses et productives en tant que codeurs.

MARCIN: En ce qui concerne l'idée que oui, c'est probablement une sorte d'idée erronée que vous savez après 15 ans d'écriture de logiciels vous allez juste devenir un gestionnaire et c'est juste ce que tout le monde fait. Je sais juste qu'il y a une certaine pression au moins dans la Silicon Valley en Californie où les gens sont vraiment inquiets qu'ils aient 29 ans par exemple et qu'ils soient trop vieux pour être embauchés par certaines entreprises qui sont en quelque sorte obsédées par l'embauche de personnes de 22, 23 ou 24 ans.

JON: Eh bien, je ne voudrais pas être embauché par une entreprise qui est obsédée par l'embauche de jeunes de 22 ans. Je préférerais de loin travailler pour une entreprise qui valorise les gens pour ce qu'ils sont, ce qu'ils peuvent accomplir et ce qu'ils peuvent accomplir ensemble. Donc non seulement leurs compétences actuelles mais aussi leur potentiel. Je n'ai donc pas connu ce genre d'agisme moi-même. Excusez-moi, mais je suis conscient que c'est une préoccupation. Je dirais certainement que je n'ai pas connu de dégradation, à ma connaissance, de mes compétences en codage. Je continue à coder de manière aussi heureuse et productive que jamais. Pour autant que je sache. J'espère donc que les entreprises prendront note de ce genre de choses et embaucheront des personnes capables de faire ce travail.

MARCIN: Pensez-vous qu'il y a du bon. Par exemple, nous parlons de si nous parlons de toutes les autres professions. On a tendance à considérer que si quelqu'un fait de la physique depuis 30 ans, il n'y a personne qui va dire que vous ne savez plus ce que vous faites. Est-ce que c'est quelque chose que le génie logiciel est si étroitement lié à la technologie et à la technologie qui se développe si rapidement que les gens supposent juste que si vous l'avez fait pendant tant d'années alors vous êtes en quelque sorte déconnecté ou y a-t-il quelque chose qui différencie le génie logiciel de toutes les autres disciplines qui fait que les gens ont cette idée que quelqu'un a un certain âge et qu'ils ont certaines idées sur cette personne.

JON: C'est peut-être de là que vient l'impression, mais je dirais que c'est probablement inexact. Vous devez être prêt à apprendre de nouvelles choses. Du moins si vous voulez être capable de continuer à avancer dans des domaines nouveaux et passionnants. Si vous faites du COBOL depuis 30 ans et que vous avez décidé de ne rien apprendre d'autre que le COBOL, je suis sûr que vous pouvez encore être productif et c'est bien. Mais vous ne devez pas vous attendre à obtenir un emploi en JavaScript ou autre sans avoir montré un quelconque intérêt à continuer à apprendre. D'un autre côté, je ne connais vraiment que le C# et Java à un niveau professionnel parce que j'ai trouvé qu'il y avait suffisamment de nouvelles choses à apprendre dans le C# et que je n'avais pas assez de temps pour apprendre le F# et le D et le Rust et le Go et toutes sortes de choses que d'autres personnes vont plus loin et moins profondément. Mais c'est à chacun de décider de ce qu'il veut apprendre et vous devez être conscient que si vous décidez de ne pas apprendre, si vous décidez d'arrêter d'apprendre, vous perdrez de votre valeur avec le temps. Mais pour être honnête, je pense qu'il y a suffisamment d'anciens systèmes pour que, pour la plupart des langues, vous puissiez encore être raisonnablement utile même si vous décidez d'arrêter d'apprendre. Franchement, je ne vois pas pourquoi vous voudriez arrêter d'apprendre, car il est toujours intéressant de faire de nouvelles choses. Mais cela prend beaucoup de temps et je pense que les entreprises devraient être prêtes à investir ce temps dans leurs ingénieurs afin que ceux-ci n'aient pas l'impression qu'ils doivent apprendre des choses pendant le temps qu'ils consacrent à leur famille, par exemple. Il y a donc une bonne dose de développement actif qui devrait faire partie de votre travail. Pour être un bon ingénieur Sopher dans sa vie professionnelle, il faut apprendre de nouvelles choses. Pour la plupart des développeurs, comme je l'ai dit, il y a des domaines plus anciens où ce n'est pas aussi pertinent, bien que je dirais que même les développeurs Cobol qui continuent à apprendre de nouvelles choses sont susceptibles de voir comment ils peuvent appliquer leurs compétences Cobol dans d'autres environnements. Peut-être qu'il y a des conteneurs qui tournent en COBOL de nos jours et tout à coup, vous avez des systèmes de conteneurs basés sur le cloud qui peuvent tourner en COBOL et tout à coup, vous pouvez déplacer toutes vos machines sur site vers l'extérieur du site. Il y a donc de la place pour toutes sortes de personnes, celles qui veulent toujours apprendre le nouveau langage. Les personnes qui veulent appliquer toutes les compétences technologiques à de nouveaux environnements et les personnes qui ne voient pas l'intérêt d'apprendre de nouvelles choses. Oui, je peux dire que je n'ai pas d'empathie particulière avec cela, mais le génie logiciel est un domaine tellement vaste que je suis sûr qu'il y a des vies productives utiles qui peuvent être passées à faire. Appliquer toutes vos compétences existantes à de nouveaux défis tout le temps. Je pourrais utiliser C# 7 pour le reste de ma vie et continuer à faire de nouvelles choses, même si je n'apprends pas de nouveaux domaines linguistiques. Ce n'est pas ce que je veux faire, mais je suis sûr que c'est le cas pour d'autres personnes. C'est peut-être la voie qu'ils veulent suivre.

MARCIN: Et c'est tout ça parce que le fait que la plupart des langages sont complets de Turing et donc vous pouvez faire n'importe quoi avec n'importe quel langage que vous connaissez. Je veux dire que c'est très largement parlant

JON: probablement, je ne suis pas vraiment sûr. Certaines des fonctionnalités ajoutées aujourd'hui n'auraient pas eu autant de sens il y a 10 ans, avant que le cloud computing ne devienne très répandu, et nous voyons d'autres domaines, comme les jeux, où le C# domine de manière presque inattendue avec des plateformes comme Unity. Il y a donc des caractéristiques du langage qui sont quelque peu adaptées aux jeux et à l'informatique haute performance à faible latence et je pense que c'est formidable. Mais oui, vous pourriez faire des choses dans d'autres langages ou dans des versions antérieures de langages, mais il est beaucoup plus productif et intéressant d'utiliser les nouvelles fonctionnalités parce qu'elles ont été conçues pour répondre particulièrement à vos préoccupations.

MARCIN: Quel est votre IDE préféré ?

JON: Visual studio

MARCIN: Utilisez-vous une certaine méthodologie ?

JON: Get Code Done. Je n'utilise pas Kanban ou je ne voudrais pas dire une méthodologie spécifique comme celle-là. Je crois aux tests, pas nécessairement au développement piloté par les tests, mais au moins au développement accompagné de tests, parfois piloté par les tests, cela dépend de la situation. Je ne suis pas à l'aise avec le fait d'avoir beaucoup de code de production qui n'est pas testé. Donc c'est un aspect du développement Agile mais ce n'est pas... Je ne finis pas personnellement par utiliser tout Agile. Je ne fais pas beaucoup de programmation en binôme. Je l'ai fait dans le passé et je l'ai trouvé très utile. J'ai fait de la programmation non en binôme dans le passé et je l'ai trouvée absolument parfaite. Je considère qu'il est important d'avoir une bonne relation avec ses collègues, donc la revue de code est très importante pour moi et cette revue de code doit être honnête et franche. Mais cela n'est pas lié à une méthodologie particulière.

MARCIN: Quel conseil donneriez-vous à quelqu'un qui est dans cette zone où ils ont appris, ils ont appris une langue pendant disons trois mois trois à six mois. Et ils ont juste l'impression qu'ils ne sont pas assez intelligents pour le faire, pour l'apprendre correctement. Comme s'il y avait trop d'erreurs à corriger. Et vous savez quel genre de conseil vous avez pour cette personne qui s'y intéresse mais qui a l'impression qu'elle n'arrive pas à passer ce cap.

JON: Donc si vous êtes toujours intéressé et que vous pensez que vous pourriez l'apprécier si seulement vous pouviez le faire mieux alors cherchez cherchez des gens. Que ce soit en lisant des blogs ou en trouvant un groupe d'utilisateurs, trouvez des personnes avec lesquelles vous pouvez interagir et obtenir des cours particuliers si possible, car il peut être assez solitaire d'essayer de trouver des réponses uniquement derrière un écran. Alors que si vous présentez, si vous vous engagez avec quelqu'un en tête-à-tête, ils peuvent souvent voir ok, voici votre problème de modèle mental où vous vous représentez quelque chose de la mauvaise façon et cela pourrait être très difficile à obtenir juste à partir de petits morceaux individuels. Si vous n'aimez pas ça, trouvez une autre langue, car il y en a beaucoup.

MARCIN: Quel langage de programmation est supérieur, Java ou C# ?

JON: Personnellement, je dirais C# Absolument. Maintenant, je n'ai pas regardé les détails des fonctionnalités de Java 9 et je ne connais que les fonctionnalités de job rate, mais j'ai l'impression que C# a pris certaines des erreurs que Java avait faites et a fait quelques erreurs lui-même. Mais en général, C# semble avoir développé plus rapidement et l'équipe de C# est fantastiquement intelligente et très attentive à la façon dont elle développe le langage. Nous en sommes à C# 7.2 et nous avons l'impression qu'il est allé dans une très très bonne direction, il est géré de manière extrêmement efficace et très bien spécifié. Cela dit, vous savez, Java est meilleur que jamais et je ne pense pas qu'il y ait assez de choses dans ce langage pour que si vous travaillez sur une base de code Java, vous devriez tout jeter et commencer à utiliser C# à la place. Mais si j'avais le choix à n'importe quel moment, je choisirais sans aucun doute C#, quel que soit le jour.

MARCIN: Génial ! Jon Skeet, merci d'être l'invité du podcast du Canard Jaune. Si tu as des liens que tu veux m'envoyer, et des conférences que tu vas faire, envoie-moi toutes les informations.

JON: Merci.

MARCIN: Yup, merci, Bye !

Partager le poste

En savoir plus sur le recrutement dans le secteur des technologies

Abonnez-vous à notre Learning Hub pour recevoir des informations utiles directement dans votre boîte aux lettres électronique.

Vérifier et développer les compétences de codage de manière transparente.

Voir les produits DevSkiller en action.

Certifications de sécurité et conformité. Nous veillons à ce que vos données soient sûres et sécurisées.

Logo DevSkiller Logo TalentBoost Logo TalentScore