Python 社区采访迈克尔·肯尼迪

2023-10-10

本周,我们的 Python 社区采访对象正是迈克尔·肯尼迪跟我聊Python名声。

你可能听过他权威的声音,但你知道他的Python故事吗?请继续阅读,了解他使用 Python 的旅程、他遇到交通堵塞时的想法以及他对两个轮子的热爱。

瑞奇: 欢迎来到真正的Python!如果我没记错的话,您最初是一名 .NET 开发人员,甚至是一名 Microsoft 认证培训师。所以我很好奇你是如何接触到 Python 的以及是什么让你坚持下来的?

Michael Kennedy

迈克尔:感谢您的款待。哦,这勾起了我的回忆。是的,我用 C# 进行全职 .NET 开发大概有 10 年了。这是我今天仍然尊重的语言。

在想要扩展到 Microsoft 领域之外的领域后,我找到了使用 Python 的方法。我猜这可能是 2012 年或大约那时。在那之前有一段时间,我除了 JavaScript 之外,并没有在 C++ 和 C# 之外做太多事情。 (没有人能逃脱 JavaScript!)我研究了流行的语言,而这正是 Python 变得越来越流行的时期。

我花了几周时间学习 Python,并且非常着迷,但我并不知道。

我研究了该语言和生态系统,发现它非常好——比我预期的要好得多。但我遇到了每个真正精通某种语言的人在尝试不同的东西时都会遇到的问题。我记住的一切又是一个挑战。如何创建网络应用程序?我该如何托管它?如何查询数据库?不断地。

我愿意学习并且做到了。但这就是任何人都会有的不安,放弃了熟悉的道路。然而,当我回去编写一些 C# 代码并发现它不如几周前那么有品味时,我知道我会被迷住的。

这并不是要抨击这种语言。但就像所有基于 C 的语言一样,它有很多符号噪音。为什么我们又需要分号?为什么人们对圆括号和大括号如此喜爱,即使(现在)很明显它们是不需要的,等等。这是一个例子:

class Thing {

    public int TotalSales {
        get 
        {
            int total = 0;
            foreach (var b in items) 
            {
                total += b.value;
            }
            return total;
        }
    }
}
class Thing:

    @property
    def total_sales(self):
        total = 0
        for b in items:
            total += b.value
        return total

人们不禁想知道为什么这些年来你一直在输入这些符号。

从那时起,随着我了解了越来越多的流行软件包和标准库模块,我每天都更加享受它。现在我在 Python 堆栈上运行我的整个业务,它还没有让我失望。

瑞奇: 当然,您是最受欢迎的 Python 播客 — Talk Python to Me — 的主持人,该播客现已超过 180 集。您也是该节目的联合主持人Python 字节布莱恩·奥肯的播客。内容很多!您如何继续保持每周的一致性,并保持节目的相关性和新闻价值?工作量一定很大吧?

迈克尔:这绝对是很多内容。但这是一个非常有价值的项目,已经进入第四个年头了和我谈谈Python,第三年为Python 字节.

我如何仍然保持一致?这是个好问题。我开始播客是因为其他人不一致。在我之前已经有基于 Python 的播客了。但早在我加入游戏之前他们就已经停止制作剧集了。事实上,这就是为什么我觉得我可以开始,因为内容非常缺乏。

我之所以保持一致,有几个原因。首先,当我开始播客时,我向自己保证,我会在六个月内每周都播客,然后决定社区和我是否喜欢它。在进行了如此一致的内容创建之后,您已经深深地养成了这样做的习惯。

其次,那时我已经有几家公司赞助了这个播客。我想也许,只是也许,我可以找到一种方法,利用播客来摆脱我的日常工作。我并不讨厌我的日常工作,但它无法与做你认为对社区和世界真正有价值的事情相比。一旦你接受金钱来长期生产一件东西,一致性就只是协议的一部分。

最后,听众对我的工作非常支持。为每个人制作内容真的感觉很棒。我期待着我创作的每一集。毕竟,我从每个人身上都学到了很多东西,并且一直持续到今天。

至于保持节目的相关性和新闻价值,这很容易。为了Python 字节,这就是字面上的主题(每周新闻),我们从听众那里得到了大量的帮助,他们每周都会推荐很棒的新项目。

为了和我谈谈Python,这个比较难。每一集都深入探讨一个主题。对于前 20 集左右,这对我来说已经很容易了。例如,我使用过 SQLAlchemy,所以向 Mike Bayer 询问它只是回顾我的经历。但它很快就发展成为我几乎没有经验的领域。我现在每周都会花大量时间研究要涵盖的主题。任何特定剧集在我们录制之前都会经过 4 至 8 小时的研究。

这就引出了你问题的最后一部分:是的,这是很多工作。有人问我每周花多少时间在节目上。他们甚至说:“你们的交易真是太好了。您每集在播客上的花费是多少?几个小时?”嗯,那会是一些事情!每集我可能会花大约 2 天的时间进行研究、与嘉宾接触、电子邮件通信、网站开发、赞助关系等等。

这是很多时间,但它实际上也是我生意的基础。播客和课程只有知名度高且质量高才能发挥作用。非常幸运的是,我能够将兼职播客转变为全职工作(播客和课程)。它让我真正保持专注并保持一致。

瑞奇: 如果我们的读者不通过播客认识您,他们肯定会通过您关于 Talk Python Training 的精彩课程认识您。当我开始学习 Python 时,我学习的第一门课程是您的《Python Jumpstart by Building 10 Apps》课程,顺便说一句,这门课程非常棒。您刚刚发布了一门名为“异步技术和示例”的新课程。您能否告诉我们更多相关信息以及为什么您决定专注于异步?

迈克尔:谢谢!这些课程对我来说是一个真正充满激情的项目。很长一段时间以来,我一直想为 Python 课程创建最好的在线图书馆。

当我第一次开始播客时,我也想开始课程。我看到他们齐头并进,互相支持。然而,当时我在一家为开发人员提供面对面和在线培训课程的公司工作。

他们给了我很大的自由和灵活性。但我在业余时间有效地创建一家竞争公司是行不通的。所以我从播客开始,然后一旦我可以独立全职工作,我的第一个行动就是创办培训公司并通过构建 10 个应用程序快速启动 Python众筹。那是一次非常有趣的经历,也是一次巨大的成功。

新的异步课程非常有趣,我觉得社区确实需要它的存在。它需要存在有几个原因。对于很多人来说,Python 异步/并发编程故事有点难以理解和理解。我们有 GIL,实际上它在真正的Python。这意味着普通线程仅对 IO 密集型工作有效。 CPU 密集型工作需要另一个 API,即具有其独特特性和技术的多处理。

现在,从 Python 3.5 开始,我们有了令人惊奇的功能asyncawait关键词。它们强大而干净,但给情况带来了更多的选择和更多的迷雾。这没有考虑 Cython 及其的异步功能nogil关键词。

第一个原因是异步和 Python 存在很多混淆。你听说有人因为 Go 的“更好”并发性而明确放弃 Python 而转向 Go。通常,人们寻求的并发类型是 IO 绑定,无论如何,这在 Python 中运行得非常好。

下一个原因是异步和并发编程的教学顺序奇怪地错误。我的意思是,通常会预先呈现大量令人困惑的低级细节。最后将其组合成有用且引人注目的示例。但学习者必须做到这一点才能得到回报。这通常还伴随着线程安全和竞争条件有多困难的可怕警告。所有这些都是真实准确的。但为什么要从这里开始呢?

我想要一门课程来展示异步在许多情况下是多么高效、有趣且实际上简单。一旦学生看到了价值,那么您就可以深入研究线程安全等内容。

最后,Python 的异步课程确实不多。我只知道另外一个,它在订阅墙后面。

瑞奇: 众所周知,您是 MongoDB 的忠实粉丝。您觉得它最吸引人的是什么?如果有人以前从未使用过它,为什么他们会考虑在下一个 Python 项目中使用它?

迈克尔:我是 MongoDB 的忠实粉丝。很久以前,我向一位朋友抱怨部署关系数据库应用程序是多么痛苦。关于在不停机的情况下应用迁移脚本是多么痛苦以及类似的事情。他说:“好吧,为什么不直接使用 MongoDB,这样就不会出现这个问题了?”。

我接受了他的建议,他是对的!从那时起,我在 MongoDB 上启动了 4 到 5 个主要项目。我的两个播客网站(谈话Python.fmpythonbytes.fm)并且课程网站在 MongoDB 上运行。

我知道有些人在使用 MongoDB 时有过不好的经历。早期有一些“最佳实践”并不是 MongoDB 的默认设置,并且有很多关于这些的故事。其中大部分已得到修复,如果您知道避免它们,那么您就处于良好状态。这仍然存在一个主要问题MongoDB 的运行无需身份验证,除非您显式创建帐户。

也就是说,MongoDB 对于我和我的项目来说是完全无懈可击的。多年来,它一直为上述网站提供支持,没有出现任何停机情况。我实际上从未运行迁移或升级脚本来部署新的架构或数据模型。

Mongo 灵活的模式模型和 MongoEngine 基于类的 ODM(想想 MongoDB 的 ORM)非常适合我的项目。网站以超低延迟运行。对于重要页面(从请求到服务器响应),获得 10-20 毫秒的响应时间是很常见的。

我个人完全可以为您的项目推荐 MongoDB。如果人们有兴趣,我还创建了一个免费课程freemongodbcourse.com.

瑞奇: 现在 Python 已经不再碍事了,是时候谈谈有趣的事情了……数学!您拥有数学硕士学位,并且确实开始了您的博士学位。未来有计划完成吗?或者那艘船已经启航了吗?我想你仍然对此充满热情。你每天都能挠痒痒吗?

迈克尔:它已经航行,越过地平线,到达南极洲的一半!我确实学过数学,但仍然非常欣赏数学的一切之美。上周堵车时,我只是在 [0, 1] 之间的简单数轴上思考不同类型的无穷大、不同大小的无穷大。

但这在日常数学中是行不通的。我相信软件开发是我真正的使命。我喜欢每天都这样做。我在数学中学到的东西为发展做好了很好的准备。数学规则和软件“规则”(语言、API、算法、大 O 等)惊人地相似。思维方式和解决问题的类型也相当相似。

软件和创业与数学的职业机会没有可比性。最好是构建人们可以使用的东西(软件),而不是世界上只有 5-20 个人会理解和关心的理论(现在的数学)。

所以我仍然喜欢它阅读有关它的书籍,但这些天我没有做任何实际的数学工作。

瑞奇: 除了Python之外,您还有其他爱好或兴趣吗?

迈克尔:多年来我有很多有趣的爱好。我确实认为在计算机时间和生活中的其他事情之间取得平衡很重要。

我很幸运,因为我的工作基本上有 3 个真正吸引人的方面,我几乎会考虑将它们视为爱好。我经营播客,并且非常致力于改进播客技巧并与听众建立联系。我几乎每天都在进行软件开发。经营我的生意和整个创业方面是令人惊奇和有趣的。

就实际爱好而言,我喜欢赛车和任何有两轮的东西!我在 1 至 5 年级时参加 BMX 自行车比赛,然后在初中和高中参加越野摩托车比赛,最后在大学参加山地自行车比赛。我和我的兄弟在我们的后院建了一条摩托车越野赛赛道,放学回家,放下背包,花一两个小时互相挑战以完成这一系列的跳跃或只是享受乐趣是很常见的。

这些天,我只看越野摩托车,也是印地赛车的忠实粉丝。我仍然骑车,但和我的妻子一起骑着我们的街头摩托车在俄勒冈州波特兰的山区周围进行柔和的冒险。很高兴能够与她和我的女儿们分享骑行的经历,她们跳上我们一辆自行车的后座。

瑞奇: Talk Python 的未来有什么值得我们期待的?您想告诉我们任何秘密项目或者您想分享和/或插入的任何内容?

迈克尔:我有一些涉及令人兴奋的课程的项目即将推出。我实际上希望更坦诚地介绍我在那里所做的工作,但是可以说,“抄袭”我的热门课程的数量令人惊讶。

我们目前至少有 4 门课程正在积极开发中,还有大量我们想要构建的东西。因此,就课程而言,希望我们能够继续开发我们认为社区需要的新课程。您还可以期待更多世界级的作者在那里创作内容。我真的很荣幸能够为每个人提供课程,并使我对这个资源和业务的梦想成为现实。

就播客而言,没有放缓。我们有谈论PythonPython 字节,而且两者都在强劲发展。我只是希望给社区带来更好、更有深度的故事谈论Python每周更新,掌握最令人兴奋的编程语言Python 字节和我的搭档主持人布莱恩·奥肯 (Brian Okken) 一起。

谢谢大家邀请我来到这里真正的Python。我是你们创建的资源的忠实粉丝。如果读者对我的项目感兴趣,请订阅播客:谈话Python.fmpythonbytes.fm。如果他们想个人或为团队学习 Python 的某些方面,请查看我们 100 多个小时的课程:训练.talkpython.fm.


谢谢你,迈克尔,加入我本周的采访。很高兴您能坐在采访麦克风的另一边。

一如既往,如果您希望我将来采访某人,请在下面的评论中与我联系,或者在 Twitter 上给我发消息.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 社区采访迈克尔·肯尼迪 的相关文章

随机推荐

  • 第 142 集:使用 Apache Airflow 协调大型和小型项目

    第 142 集 使用 Apache Airflow 协调大型和小型项目 真正的 Python 播客 2023 年 1 月 27 日54m RSS Apple Podcasts Google Podcasts Spotify More 播客瘾
  • Python 新闻:2023 年 3 月以来的新增内容

    目录 Python 3 12 0 Alpha 6 发布 Python 本地包目录上的 PEP 582 被拒绝 PyCascades 2023 在不列颠哥伦比亚省温哥华举行 PyCon US 2023 招募志愿者 PyPI 发布博客 2022
  • 使用Python或运算符

    Python 中有 3 个布尔运算符 and or 和not 使用它们 您可以测试条件并决定程序将采用哪个执行路径 在本教程中 您将深入了解 Pythonor运算符及其使用方法 在本课程结束时 您将学到 Python 如何or操作员工作 如
  • Python F 字符串:讨厌的细节

    您已经了解了很多有关 F 弦的知识以及它们为何如此出色 在本课程中 您将了解在使用以下内部 f 字符串时要记住哪些细节 引号 词典 牙套 反斜杠
  • Python mmap:使用内存映射进行文件 I/O

    这Python之禅有很多智慧可以提供 一个特别有用的想法是 应该有一种 最好只有一种 明显的方法来做到这一点 然而 在 Python 中完成大多数事情有多种方法 而且通常都有充分的理由 例如 有Python 读取文件的多种方法 包括很少使用
  • Python 图形用户界面编程

    Python 图形用户界面编程 学习路径 技能 图形用户界面 GUI Python支持多种GUI框架或工具包 从传统上与 Python 捆绑在一起的 Tkinter 到许多跨平台解决方案 例如 PyQT 或 wxPython 您可以将其作为
  • 第 78 集:通过图解故事学习 Python

    第 78 集 通过图解故事学习 Python 真正的 Python 播客 2021 年 9 月 17 日48m RSS Apple Podcasts Google Podcasts Spotify More 播客瘾君子 灰蒙蒙 袖珍铸件 投
  • Django 测试(第 1 部分)——最佳实践和示例

    目录 Intro to Testing in Django 测试类型 最佳实践 结构 第三方包 Examples 设置 测试模型 测试视图 测试表格 测试 API 下次 测试至关重要 如果没有正确测试您的代码 您将永远不会知道代码现在或将来
  • Python 3.11 预览:TOML 和 tomllib

    目录 Python 3 11 Beta 很酷的新功能 安装 tomllib TOML Parser in Python 3 11 学习基本 TOML 使用 tomllib 读取 TOML 写入TOML Other New Features
  • Python 包版本控制最佳实践

    如果您添加新功能或添加重大更改 您需要更改软件包的版本 在本课程中 您将了解语义版本控制以及如何在项目中使用它 笔记 如果您想了解有关语义版本控制的更多信息 请务必查看semver org
  • 2021 年 7 月 21 日

    本周我们有一位特别嘉宾联合主持人 Real Python 自己的巴托什 扎钦斯基 David 和 Bartosz 联手回答会员的问题 在这次会议上 我们讨论了 Python 新闻和更新 什么是 REST API 有哪些学习它们的好资源 什么
  • 字符串索引

    弦乐是字符数据的有序序列 索引允许您使用数值直接访问字符串中的各个字符 字符串索引是零基础 字符串中第一个字符的索引为 0 下一个字符为 1 依此类推 在本课程中 您将学习字符串索引语法并通过几个示例进行练习 gt gt gt gt gt
  • 更精确的类型

    在本课中 您将了解Python 3 8 中更精确的类型 Python 的类型系统目前已经相当成熟 然而 在 Python 3 8 中 输入中添加了一些新功能 以允许更精确的输入 文字类型 类型化词典 最终对象 协议 Python支持可选类型
  • 第 145 集:使用 Nox 创建 Python Wordle 克隆并测试环境

    第 145 集 使用 Nox 创建 Python Wordle 克隆并测试环境 真正的 Python 播客 2023 年 2 月 17 日59m RSS Apple Podcasts Google Podcasts Spotify More
  • 鳞片层

    有关本课程所涵盖概念的更多信息 您可以查看以下资源 图九 数据 经济学 绘图文件 秤 API 参考 绘图文件
  • Python 社区采访 Will McGugan

    今天我加入了威尔 麦古根 Will 是一位来自苏格兰的自由 Python 开发人员 也是流行 Python 库的创建者富有的 在这次采访中 我们讨论了Rich 维护一个流行的 Python 包 构建国际象棋引擎以及 Will 对摄影的热爱是
  • 从数据到可视化

    使用 Bokeh 构建可视化涉及以下步骤 准备数据 确定可视化的呈现位置 设置图形 连接并绘制您的数据 整理布局 预览并保存您精美的数据创建 该视频将更详细地探讨每个步骤 下面的模板可用于探索本课程中使用的六个构建块 Bokeh Visua
  • 如何在 Python 编程面试中脱颖而出

    目录 Select the Right Built In Function for the Job 使用 enumerate 而不是 range 进行迭代 使用列表推导式代替map 和filter 使用breakpoint 而不是print
  • 使用 Pdb 进行 Python 调试

    目录 入门 打印变量的值 打印表达式 Stepping Through Code 列出源代码 使用断点 继续执行 显示表达式 Python 来电显示 基本 pdb 命令 使用 pdb 进行 Python 调试 结论 调试应用程序有时可能是一
  • Python 社区采访迈克尔·肯尼迪

    本周 我们的 Python 社区采访对象正是迈克尔 肯尼迪的跟我聊Python名声 你可能听过他权威的声音 但你知道他的Python故事吗 请继续阅读 了解他使用 Python 的旅程 他遇到交通堵塞时的想法以及他对两个轮子的热爱 瑞奇 欢