Entretien de la communauté Python avec Al Sweigart – Real Python

By | octobre 28, 2019

Cours Python en ligne

Cette semaine, je suis rejoint par Al Sweigart, un nom familier dans la communauté Python. Al est un développeur, conférencier, enseignant et origamiste accompli. (Oui, vous avez bien lu!) Mais certains le connaîtront peut-être mieux en tant qu'auteur de nombreux livres de programmation en Python, y compris le livre à succès Automatiser le truc ennuyeux avec Python et notre premier choix, Inventez vos propres jeux informatiques avec Python. Alors, sans plus tarder, allons-y!

Ricky: Bienvenue à Vrai python, Al. Nous sommes ravis que vous ayez pu vous joindre à nous pour cet entretien. Commençons comme nous le faisons avec tous nos invités. Comment êtes-vous entré dans la programmation et quand avez-vous commencé à utiliser Python?

Al Sweigart

Al: Je vous remercie! Hé, je déteste dire aux gens comment je me suis mis à la programmation parce que j'étais l'un de ces enfants qui ont commencé à apprendre le BASIC vers la troisième année ou à peu près.

Je n’aime pas dire cela aux gens parce que j’ai le sentiment que cela contribue à l’idée que pour devenir programmeur, il fallait avoir commencé quand on était très jeune. Par exemple, si vous n’êtes pas en train de déboguer des sous-programmes en tant que fœtus, il n’ya aucune chance que vous en fassiez une carrière. Donc, je dis aux gens que j'ai commencé quand j'étais enfant.

Je leur dis aussi que la plupart de mes programmes ont été assez médiocres pendant plusieurs années. Je n’avais ni Wikipédia, ni Google ni Stack Overflow, j’ai donc continué à faire des variantes d’un jeu «Devinez le nombre» ou à lancer des projets pour lesquels je n’avais pas les connaissances techniques nécessaires. Mon départ n’a pas été beaucoup. Tout ce que j’avais appris sur la programmation et les ordinateurs pendant plusieurs années en tant qu’enfant et adolescent pouvait être appris aujourd’hui en une douzaine de week-ends.

Je pense que le principal avantage de commencer jeune était que je ne savais pas que la programmation était censée être difficile. Aujourd'hui, tout le monde pense à l'IA, à l'apprentissage automatique et aux jeux vidéo avec des graphismes 3D incroyables. Je me contentais de perdre mon temps libre dans mes temps libres, mais cela me convenait parfaitement.

Je n’ai pas appris beaucoup de choses sur le plan des connaissances, mais j’ai bien compris que la programmation n’était qu’une chose que l’on pouvait apprendre à faire comme toute autre chose. Il n’a pas été nécessaire de faire appel à un entraînement intelligent ou à un entraînement de niveau olympique.

Mon premier langage de programmation était BASIC et peu de temps après Qbasic, mais j’ai aussi appris un peu de C, Visual Basic, Perl, Java, PHP et JavaScript. Cela semble beaucoup, mais je ne les ai jamais vraiment maîtrisées. J'en ai juste appris assez pour mener à bien tous les projets sur lesquels je travaillais à l'époque.

Je suis entré dans Python vers 2005 et j'ai en quelque sorte arrêté d'apprendre de nouvelles langues par la suite. Je ressens toujours le besoin d’en explorer de nouveaux (Kotlin, Rust et Dart sont dans ma ligne de mire depuis un moment), mais Python est tellement facile à utiliser dans de nombreux domaines que je n’ai pas encore réussi à séparer suffisamment. encore.

Ricky: Vous savez, mon premier livre de programmation Python était votre livre Automatiser le truc ennuyeux avec Python. C’est quelque chose que je mentionne encore, même aujourd’hui. J'aimerais savoir ce qui vous a inspiré pour écrire un livre qui ne s'adresse pas nécessairement à ceux qui souhaitent devenir un programmeur professionnel au sens traditionnel du terme?

Al: Haha, je suis toujours étonné de la popularité de ce livre! Je fais toujours référence au livre moi-même: je vais travailler sur quelque chose, je ne me souviens plus du nom de la fonction et je me rends compte: «Attends, j'ai déjà écrit cela auparavant.» Je déteste vraiment les entretiens d'embauche où ils vous interdisent de consulter livres ou documentation pour l'entrevue de codage. Quand je programme, je consulte des livres qui je a écrit.

J’ai commencé à écrire des livres vers 2008 ou 2009. Ma copine de l’époque était nounou pour un enfant de 10 ans qui voulait apprendre à coder, mais je n’ai trouvé aucun tutoriel en ligne qui me plaise. Tout était destiné soit aux ingénieurs en logiciel, soit au même vieux système «calculons le nombre de Fibonacci».

J'ai repensé à la manière dont j'avais commencé à coder dans ces magazines et livres qui répertoriaient le code source de petits jeux. J'avais à peine compris le texte explicatif, mais copier le code source et apporter de petites modifications m'a vraiment montré comment assembler des programmes.

J'ai donc écrit un tutoriel comme celui-là, qui a pris de la longueur et qui est finalement devenu Inventez vos propres jeux informatiques avec Python. Je l'ai mis en ligne, puis vendu plus tard en tant que titre auto-publié. J'avais toujours mon travail de développeur de logiciels et je n'avais jamais vraiment considéré l'écriture de livre comme une carrière.

J'ai publié le livre sous une licence de copyright Creative Commons qui permet aux gens de le télécharger et de le partager gratuitement. Cela s’est avéré être d’une importance cruciale car cela permettait aux gens de partager le livre et de générer du bouche à oreille. Sans licence Creative Commons, il s’agirait simplement d’une nouvelle liste auto-publiée sur Amazon et je n’aurais pas ma carrière actuelle. La mise à disposition gratuite du livre a entraîné une augmentation des ventes.

J'ai donc écrit un autre livre et un autre, et pour mon quatrième livre (qui deviendrait Automatiser le truc ennuyeux avec Python), J’ai signé un contrat avec No Starch Press. J’ai vraiment apprécié de travailler avec eux: leurs éditeurs sont excellents, leurs livres sont tous de grande qualité et ils me permettaient de continuer à publier des titres sous une licence Creative Commons.

Vers 2012, «tout le monde devrait apprendre à coder» faisait de nouveau l'actualité, comme il semble l'avoir fait tous les cinq ou dix ans au cours des dernières décennies. Et je me suis dit: «Bien sûr, mais pourquoi?». Tout le monde n’a pas besoin de devenir ingénieur en logiciel et personne n’a besoin de calculer le nombre de Fibonacci.

J'ai réfléchi à ce que les non-programmeurs pourraient utiliser pour coder. Il y a vingt ans, si vous discutiez en ligne avec vos amis tous les jours, vous étiez probablement un énorme nerd. Mais aujourd’hui, vous n’êtes que l’utilisateur moyen de Facebook. Beaucoup de gens utilisent des ordinateurs pour leur travail au bureau ou à la maison.

Quels types de choses aimeraient-ils automatiser sans avoir besoin d’un diplôme en informatique? En fait, il y en a beaucoup! J'ai un ami qui a dit en plaisantant que si vous voulez devenir un fondateur millionnaire, il suffit de trouver un secteur qui utilise toujours des télécopieurs et des feuilles de calcul Excel pour tout et rédigez l'application Web qui est adoptée par tout ce secteur.

Donc, j'avais une liste de choses comme «feuilles de calcul de mise à jour» et «envoyer des courriels de notification», et tout cela est devenu Automatiser le truc ennuyeux avec Python. Le travail de développeur de logiciel que j’avais à l’époque était devenu un peu obsolète, alors j’ai quitté le poste en pensant que je passerais une année à finir Automatiser et puis obtenir un autre travail de développeur de logiciels. Je suis rédacteur et concepteur de cours en ligne depuis six ans maintenant.

C’est beaucoup de chance. J’ai de la chance que des centaines de personnes aient contribué à l’utilisation d’un langage libre et gratuit, tel que Python, qui facilite la programmation. J'ai de la chance d'avoir des économies pour pouvoir écrire des livres. Je suis chanceux que d’autres aient créé la culture du logiciel libre qui a conduit à des choses comme la licence Creative Commons.

Ainsi, lorsque les gens me demandent des conseils pour la rédaction de livres, c’est un peu comme demander à un gagnant de loterie quels numéros choisir. Je pense toujours qu’il ya beaucoup d’obstacles inutiles dans notre société qui doivent être abolis pour permettre aux gens de réaliser leur plein potentiel, c’est pourquoi cet objectif a été mon étoile directrice.

Ricky: Toute personne qui vous a suivi pendant un certain temps sur Twitter saura que vous avez la passion d’enseigner Python aux personnes qui apprennent à coder. Vous semblez particulièrement aimer utiliser les jeux vidéo comme point d’entrée. Avez-vous constaté que vous concentrer davantage sur les sujets «amusants» vous a aidé à toucher un plus grand nombre de personnes et à les familiariser avec Python? Et était-ce intentionnel ou vous vous gratifiiez les démangeaisons?

Al: L’autre jour, j’ai trouvé une diapositive de Mahmoud Hachemi La conférence PyBay 2019 intitulée «Il y a deux raisons de vouloir commencer à coder» et un diagramme de Venn avec «Je veux faire un jeu vidéo» et «Je veux ne pas avoir d'Excel». Je n'ai jamais vu tout mon contenu. carrière d'enseignement et d'écriture résumée comme ça avant. Les jeux vidéo constituent une excellente passerelle vers la programmation, notamment avec un outil comme Scratch de MIT. Mais il est parfois difficile d’utiliser des jeux vidéo.

Je me tiendrai devant une salle de classe de 9 ans et me dirai: «On va faire un jeu», et ils pensent à Minecraft ou Souffle de la nature ou un autre titre qui avait une équipe de développement professionnel avec un budget de cent millions de dollars, et à la place, je dis: «Pourquoi ne pas créer un labyrinthe ou un jeu de Simon Says?». Il s’agit de gérer les attentes. Il y a toujours le plaisir de base de créer quelque chose, de dire à l’ordinateur ce qu’il faut faire et de le voir le faire.

Je travaille à la création d’une collection de petits jeux faciles à comprendre en Python, que je mets en ligne. L'idée est qu'une fois que vous connaissez les concepts de programmation tels que les boucles et les variables, vous pouvez voir ceux-ci utilisés dans les programmes réels avec ces jeux.

Je frémis quand les gens disent aux nouveaux programmeurs de s’améliorer en lisant le code des projets open source parce que ces projets sont souvent volumineux et mal documentés. Très peu d’entre eux ont des guides d’embarquement pour que les nouveaux volontaires se familiarisent avec la base de code, il est donc difficile de comprendre ce code.

Les nouveaux codeurs en viennent à se sentir intimidés. Ainsi, mes jeux simples ressemblent à des roues d’entraînement sur un vélo, et les contraintes que je suis pour appliquer la simplicité sont en fait assez efficaces pour me proposer des programmes simples mais créatifs.

Je ne suis en aucun cas un concepteur de jeu. Tous les jeux que j'ai créés ne représentent tout au plus que quelques centaines de lignes de code. Tetris ou ce jeu de ver en croissance que tout le monde avait sur son téléphone portable Nokia. Ces jeux ne nécessitent pas beaucoup de graphisme ou de design de niveaux.

Je suis impressionné par des gens comme Toby Fox ou Eric Barone, qui ont passé des années à créer Sous-titre et Stardew Valley, respectivement. Mais même ces jeux reposent sur les épaules de géants. Sous-titre et Stardew Valley ont été inspirés par Attaché à la terre et Harvest Moon, mais bénéficient des connaissances modernes en matière de conception de jeux (et du talent écrasant de Fox et de Barone).

De même, tous mes jeux basés sur du texte sont similaires à ceux de David Ahl’s Jeux informatiques de base livre ou OCTET Magazine des années 70 et 80, mais bénéficiant de quelques décennies de théorie de la conception de jeux. Tout cela était intentionnel de ma part (je ne créerais pas ces petits jeux si ce n’était pour en faire un tutoriel de programmation), mais je ne pense pas que je pourrais le faire autrement; rien ne vaut un tel crochet pour amener les enfants et les adultes à la programmation que ces petits jeux vidéo amusants.

De plus, tous ceux qui me suivent depuis un certain temps sur Twitter sauront également que je suis un passionné des discours politiques. J'essaie de rester du côté constructif pour ceux, au moins.

Ricky: Vous êtes l'un des rares programmeurs (et certainement l'un des rares programmeurs Python que je connaisse) à vivre avec des codes sur Twitch. Comment cette expérience a-t-elle été vécue et qu'avez-vous appris au cours du processus? Avons-nous besoin d'encourager davantage de streamers Python Twitch?

Al: Je flanche depuis quelques années, parfois avec des semaines ou des mois entre les flots. C’est une triste vérité que vous devez essentiellement occuper ce poste à plein temps pendant environ un an avant de pouvoir amener un public à une taille suffisante pour une carrière, et je n’ai pas ce temps. Mais c’est bien comme passe-temps.

Je peux m'écouter pendant que je travaille sur mes petits jeux ou que je m'enregistre en créant des cours en ligne. Cela me permet de m'entraîner à la caméra pendant le codage et la narration, ce qui est utile pour mon travail de cours vidéo en ligne. Et cela me met en contact avec les débutants, afin que je puisse comprendre les parties avec lesquelles ils ont des problèmes ou les questions qu'ils ont.

Twitch supprime mes flux environ une semaine après ceux-ci et certaines personnes m'ont demandé de les archiver dans un endroit permanent, mais je n'y pense vraiment pas plus que quelque chose à afficher en arrière-plan. Je préférerais de loin créer des vidéos raffinées de 10 minutes plutôt qu’une série de quatre heures de discussions décousues et de recherches de documentation.

Ricky: Maintenant pour nos dernières questions. Que faites-vous de plus pendant votre temps libre? Quels autres loisirs et intérêts avez-vous, mis à part Python et le codage?

Al: Temps libre, hein? J'ai bien peur de ne pas comprendre la question…

Une bonne chose à propos de ma carrière actuelle est que cela me tient certainement occupé. Écrire des tutoriels sur la programmation était plutôt mon passe-temps, et maintenant je peux le faire à temps plein, avec tous les avantages et les inconvénients que cela comporte. J'ai suffisamment de projets pour durer jusqu'en 2021, mais en même temps, je veux qu'ils soient tous terminés maintenant.

La plus grande motivation pour terminer mes livres et vidéos actuels est que je pourrai commencer mon prochain livre et ma prochaine vidéo. En plaisantant, j'ai demandé à une amie si commencer à prendre de la cocaïne améliorerait ma productivité. Elle m'a répondu: «Bien sûr, au début.»

Mais à part écrire des programmes et écrire des livres sur les programmes, j'aime faire de l'origami. C’est quelque chose qui m’intéressait en tant qu’enfant, mais j’ai toujours été à mi-chemin des diagrammes de pliage avant de franchir un pas que je ne pouvais pas comprendre et je devais l’abandonner.

C’est une autre chose de mon enfance, où Internet s’est énormément amélioré: de nos jours, il ya un million de vidéos de pliage d’origami en ligne, ce qui me permet de créer des modèles bien plus impressionnants que tout ce que j’aurais pu faire quand j'étais enfant.

Un autre ami a fait remarquer que les logiciels d’écriture, la rédaction de livres, le pliage d’origami et l’essentiel de tous mes loisirs avaient un point commun: ils n’étaient pas chers! Donnez-moi un vieil ordinateur portable et une pile de papier, et je serai assez content.


Si vous voulez voir ce que Al prépare, vous pouvez le contacter sur Twitter et dire bonjour. Son blog et sa pléthore de livres sont disponibles sur son site Web, Invent With Python. Merci Al de m'avoir parlé!

Si vous avez quelqu'un que vous voudriez que je contacte pour une entrevue, laissez un commentaire ci-dessous et faites-le moi savoir.