We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode  Ep 48. 专访高天:为了当好 B站 up主,我成为了 Python 核心开发者

Ep 48. 专访高天:为了当好 B站 up主,我成为了 Python 核心开发者

2024/8/3
logo of podcast  捕蛇者说

捕蛇者说

AI Deep Dive Transcript
People
高天
Topics
高天:我从四年前开始接触Python社区,由于远程办公时间充裕,我开始做开源项目,并逐渐参与到CPython社区中。在搬家后,我开始在B站分享技术内容,起初是关于我开发的withTracer工具,后来内容逐渐扩展到Python相关的技术分享。我将开源和UP主活动作为休闲放松的方式,这让我能够平衡工作、创作和个人生活。我最初为CPython贡献代码是因为发现了PDB中的一个bug,并成功修复了它。这个经历让我在B站上获得了不错的反响,也激励我继续为CPython社区做贡献。我通过浏览Python的issues列表和深入研究PDB代码来寻找需要改进的地方,并修复bug。在贡献了多个PR后,我成为了CPython的Triager,最终成为核心开发者。成为核心开发者并没有带来我预期的巨大影响,但它是一个长期的、有持续吸引力的成就。我持续为CPython贡献代码的动力,源于对Python的兴趣、为大型项目做贡献的成就感以及B站UP主的身份带来的激励。我建议想为Python做贡献的人,可以从关注issues列表开始,积极参与讨论和解决问题。CPython项目中主要有三种角色:Core Dev(拥有代码合并权限)、Triager(协助Core Dev)和普通贡献者。成为Core Dev不是一个简单的门槛,而是一个持续贡献和社区认可的结果。不要为了成为Core Dev而努力,而应该享受成为Core Dev过程中的乐趣和成就感。 Adam Wen:作为主持人,我引导了本次访谈,并就高天成为Python核心开发者和B站UP主的经历、Python发展现状、技术内容创作、时间管理以及职业倦怠等方面进行了提问和讨论。 laixintao:参与了本次访谈的讨论,并就高天分享的经验和观点进行了补充和评论。 laike9m:参与了本次访谈的讨论,并就高天分享的经验和观点进行了补充和评论。

Deep Dive

Shownotes Transcript

大家好欢迎来到捕食有者说本期我们邀请到了嘉宾是高天他既是 Python Code Developer 也是 bilibili 的创作者同时也是 withTrazor 的作者本期我们会邀请他一起来和我们聊一聊关于 Python 关于如何成为 Python Code Developer 以及关于在 b 站上的一些创作的一些分享对我们欢迎高天

欢迎欢迎大家好我是高天然后第二次来捕蛇者说了很开心对我是上一次是哪年了上一次得是三四年前吧差不多聊 with tracer 那一期四年前吧我之前因为我们又邀请高天吧然后去看了一下上次是 2020 年对以及本期我们一起参与录制的还有 like9mHello 大家好

以及我是本期的主持人 Adam 我们要不然先让高天来简单地描述一下这四年的变化对 因为其实我们好像和高天在群里大家对信息的交换也比较了解对

对就是这四年其实我们上次邀请高天聊的时候那个时候我们的主要主题是 with Tracer 对然后这四年过后高天既在 B 站做技术分享对同时也成为了 Python 的 Co-developer 对那这中间这四年都经历了什么是不是可以请高天简单的分享一下

四年前正好也是在有一些失节的状况嘛,然后那个时候呢,就出门出的比较少,所以多了很多闲暇时间去做一些零七八岁的事儿,然后后来又搬家呀什么的,然后逐渐的变成纯远程的工作,一直到现在为止,所以就多了一些自己的时间吧。

然后从那个时候开始更多的接触了所谓的 community 就是 Python 这个社区最开始的时候只是自己用 Python 写程序然后开始自己做一些开源项目然后了解自己怎么宣传自己的工具或者说是这个产品

然后到后来呢慢慢慢慢的有一个机会去接触到这个 CPython 这个 community 应该也是那一年去参加的 PyCon China 然后做了一个跟 Vistracer 关的 talk 这个是 Python 这边这个领域的然后逐渐到现在跟这个整个社区还算比较熟 B

B 站呢是我在搬家之后搬到南湾那边也是刚搬过去的时候比较无聊啊没什么事然后之前我其实在知乎写一些文章写些答案嘛然后知乎那边逐渐的有一些没落对吧然后我就说那我自己做一些完全自己想做的事因为知乎那边有一个问题是

他有什么问题你才能答什么答案他并不完全是你自己去控制你的创作的不是说你今天有一个想聊的东西你就可以聊然后怎么样所以我就说那去做 B 站试试吧然后就在 B 站开始发一些视频最开始的时候基本上都是跟拍档有关的然后积累了一定的粉丝量吧到现在就是做的东西稍微杂一些但是基本上也是围绕着技术的

总体来说这四年就确实是我自己也多接触到了不少世界不同的面向但是可能最初最初的根源还是因为自己的时间可能相对多了一点有一些功夫去让自己的生活感受到不同的面向我觉得其实也许后面也可以聊这个话题但好像很多人我觉得都很好奇就是你同时身兼就是有一个全职工作对吧然后要做开源要做 VGNUP 主

然后我记得你在以前视频里还说你要打游戏就是你是怎么有这么多时间的我觉得最重要的一点是你的主职工作不能太忙就如果你的正常的白天的工作已经占据了比如说你一天占据了十个小时的话那你一天给你的自己时间确实会非常非常少

第二点呢就是我其实这几年游戏打的少了也是有不少的游戏时间就是贡献给了这个其他零七八四的事吧第二点呢就是恰好可能我用来休闲和放松的一些方式被拿出来大家可能觉得这件事还蛮酷的就不管是当 up 主也好或者是给 CPI 当写代码也好这些事情有的时候是我拿来休闲放松或者是转换头脑的

比如说工作干累了然后就写点别的东西或者是做个视频那大家可能其他人的休闲放松模式比如说你都是打得很好对吧你都是打得非常厉害然后排名很高大家可能觉得你这个就是除非你打得真的特别特别厉害否则的话大家可能觉得你这个好像就是纯休息你的时间拿来纯休息了那我用来休息的时间可能做

做了一点点可能稍微有趣一点的事其实也不是时间多大家时间都差不多然后这两件事说实话也没有想象的那么费时间就我觉得每周可能拿出来几个小时去完成一件事情然后你坚持的足够久了之后可能还是多多少少会有那么一点点成果嗯

刚才其实高天有提到说时间增多之后恰好有一个机会然后能够接触到 Python 的这个 community 然后进而不断的做贡献成为了这个 call developer 其实还挺好奇的就是这个机会当时是怎么接触到的对以及说之后又是如何逐步的去持续贡献的对这个还挺好奇的因为我们之前不是在那个听众群里发了一些读者的调查问卷吗

对 然后也有听众表示说就比较好奇如何才能够和社区有这种接触然后最后一步步的能够成为这个 call developer 这个故事最开始的时候是这样的因为我是先做的 B 站然后在 B 站做起来了就是有一定的粉丝组之后呢就开了一两个群然后群里面就有一些朋友然后一起聊聊天什么的然后群里面就有人有一次说说这个 PTB 有一个 bug

我现在还记得非常清楚,就是 LL 的 bug,就是在 PDB 里面,理论上说你是可以改 local variable 的值的比如说这个 x 本来是 1,你给它写 x=2,然后 x 应该变成 2 但是如果你在 x=2 之后运行一下 LL,就是 long list 打印那个 source code 你就会发现这个值就又变回 1 了,就你的对 local variable 写的这个值就没有了

我最开始是觉得这肯定是你哪出问题了后来呢仔细研究了研究然后发现确实是 Python 那边自己的 bug 然后恰好又是一个我有能力改的 bug 然后这就成为了我给 Python 拉的第一个 PR 改的第一个 bug 然后说实话这个 bug 其实不是非常顺利因为我找到这个 bug 当天我其实很激动然后拉 PR 什么的这个本人也很激动但是

但是这个 PR 被搁置了很久其实 CBITON 因为现在全都是 volunteer 它 review PR 的时间不是那么多很多时候你的 PR 可能就是随风而逝了然后等啊等啊等等了好几个礼拜

然后我看没有反应然后我又尝试 add 了一下其他人才慢慢的然后有 PortF 来 review 这个 PR 然后给 MIR 进去然后 MIR 进去当天呢就非常激动啊非常激动然后我还因为这个事在 B 站发了一个视频那视频播放量还不错因为说实话在 B 站的大部分人可能没有什么机会给 Python 这样的级别的项目可能拉 PR 做贡献什么的然后而 Python 这个项目相对来说比较知名吧

可能很多大象但是可能藏在底层拍到相对大家知道的人多一点然后很高兴然后第二次呢是 Viz Tracer 大概有好几年的时间每隔几天它的那个 validation 就会 fail 一次在那个 GitHub 的 validation 就会 fail 一次我始终没有能在本地复现这个问题然后那一阵我是觉得我一定要把这个东西搞出来

花了可能有一周左右的时间发现是一个 C Python 那边的一个类似 Racing 的 bug 然后修那个 bug 其实就一行找的问题比较费劲但是就修其实就修了一行然后第二次呢其实也发了一个视频但是是第二次闷着很快然后拉完 PR 然后 Mark 上很快就看了然后就闷进去了然后这两次之后我就感觉到其实给 Python 这种级别的项目做贡献也没有那么难你就过去找到它一个问题然后把这个问题修复了就可以了

然后我就想说那我看看 Python 有什么问题吧当时呢主要是两个途径第一个呢是我白天没有什么事的时候我会刷一刷那个 Python 的 issues

然后 issues 这个东西呢就有新鲜的你就跟别人在同一个起跑线上嘛就你刷了一个新的 bug 然后你看这个东西能不能复现能复现之后你可以很快的判断它是不是一个真的 Python 的 bug 如果是一个 Python 的 bug 你就可以去着手修然后你修的比别人快你就可以先拉屁眼所以有一阵呢我非常喜欢刷 Python 的 issues 看那些东西能不能 repro 所以在最开始的时候我修了挺多零七八岁的 Python 的问题有的是一些 bug 有的是一些小的 feature 啊这些

第二个是当我在给 PDB 改 LL 代码的时候我看了下 PDB 代码整体做的还挺粗糙的然后我在改 LL 的过程中也发现了不少有问题的点我说这块怎么就是做的比我想象中粗糙很多但是后来是知道因为那个 module 已经很久没有人 maintain 了基本上就是放在那没有人管的状态所以后来有一阵我就说我要不要去尝试一下去做 PDB

我就又去在 issue 里面去找 PDB 相关的 issue 就 search PDB 然后发现大概有几十可能甚至奔一百个 issue 有一些比较杂比较没有意义但有一些就是五年前甚至十年前的 issue 现在依然是有问题然后是一个很明确的问题也不是那么难修因为 PDB 是一个纯 Python 的 module 就是你很多时候只在 Python level 工作就可以然后我就开始一个一个的给 PDB 修 bug

在 3.12 时期我基本上就是在不断的给 P2B 修 10 年以上的 bug 正好呢遇到了几个比较好的 core dev 一个是那个 Irit 是那个拍到现在一个女士 core dev 然后她也是在微软工作然后另外一个是 Brand Booker 然后做 Git 的那个 core dev 嘛

他们两个人呢就还比较频繁的帮我 review code 因为作为一个外来者或者说所谓的 new contributor 吧就是最难的其实是找到人帮你 review 你的 code 然后 merge 进去但是我可能运气比较好然后一直有人帮 review code 然后他们不帮 review 的话我就 ping 他我说你来不如 review code 呀然后后来在大概经历了一些 issue 的那个判断就是他出来 issue 的时候你也要比如说有些人有问题对吧然后你可以回答问题

告诉他这是怎么回事因为有的时候其实就是 Python 自己的功能就是 Python 就是这么设计的有的时候呢就是有问题了然后你帮忙 fix 大概在一二十个 PR 二十个左右的 PR 之后然后 Brandbooker 就联系我因为恰好我在微软工作嘛然后微软有一个 FastCpython 的那个团队然后他们团队的 Brandbooker 是那个团队的然后他就通过微软内部的联系方式然后

然后找到我说我看你最近在 CPython 挺活跃的然后你要不要当一个 Triad 然后我说可以啊大概是三四个月之后然后从我正式开始比较勤奋的在 CPython 上面找活干之后然后三四个月之后我就成了 CPython 的 Triad 然后那个时候就开始觉得其实进入这个社区没有想象中的那么困难然后这个社区还是挺缺人的就你只要自己找活干是有挺多活可以给你干的

当然 Brand Booker 那边人也很好啊我可能运气比较好正好在微软工作嘛他能找得到我所以我挺快就成为 Trader 了然后那个时候其实就会觉得自己未来有可能有一天能成为 Core Dev 就按照这个路线一直走下去嘛后面也是就从 Trader 开始差不多一年的这个贡献吧

后面的事其实相对来说就更普通一些因为我给 Python 做贡献的视频我大概做了一共是四个第一个 PR 做了一个第二个 PR 做了一个然后后面在 3.12 发布的时候我做了一个一套就是 3.12 我贡献了什么代码然后再最近的这个就是直接成为 Core Dev 因为在开始那个新鲜劲过后后面你就会就后面至少我会意识到还行这件事没有那么困难就可以正常做就跟你平常在公司工作差不多找到问题解决问题拉 PR 闷进去

就可以了,所以就是一旦步入正轨之后吧,我觉得这个事好像对我来说没有那么难,然后在当时就是在一年前或者几个月之前的我的心里看来,CoreDive 应该是未来某一个节点能够完成的成就,具体什么时候我不知道,但我觉得我应该是有机会的。

嗯,对,我觉得听你的分享,就我觉得挺有意思,然后也可能也能让听众学到很多吧,就是一开始从 Ptb 切入确实是一个挺好的就是开始的方法,因为像你说 Ptb 是纯 Python 的嘛,然后它又很多年被我维护了,就我当年看那个 DIS 那个 module 的时候,就是那个分析字典码那个 module,然后发现它有些地方写的也是非常的粗糙吧,对。

但我就是没有像你一样能够去比如说花时间去真正去帮他们修一些东西或者说决定我要去长久的做这个事情在我看来就是这个决定还是很重要就你能不能分享一下就是说你当时的一些想法比如说你是觉得就是说你单纯对这个事情有兴趣呢还是说希望能够去给一些比较重要的项目做贡献还是怎么样就或者说对你的职业生涯希望你可以未来就是靠这个能更进一步

能不能分享一下动力是非常非常重要的因为 Python 这个项目是纯 volunteer 的你短期内看不到任何实质性的回报你第一个 PR 的时候你的成就感非常非常足你可以说我给 Python 做贡献但第二个第三个第四个的时候其实就没有第一个那么足

然后你做这件事不赚钱你会遇到很多的阻力因为你不是 core lab 你需要找人 review 你的代码很多时候人家不 review 你的代码或者人家告诉你说你这个代码我不打算 merge 就是我认为这个 feature 是不必要的所以我觉得动力是必须的我成为 core lab 不算慢我应该是一年多一点那

哪怕这一年的过程中其实很多时候你需要有一个自驱力因为没有公司逼着你没有老板逼着你然后你随时可以撂挑子不干这是一个开源项目对吧我不干了就是不干了你没有任何 deadline 的压力所以我觉得如果你真的比如说想成为某一个项目的 core dev 你就不能仅仅只是想成为这件事就你不能只想着要那个结果你一定要相对来说要享受一些中间的过程你刚才说的那几点呢其实都存在

第一个是给一个相对大型的项目做贡献的这种成就感就你出去可以跟人说你知道我给 Python 写代码就这种成就感是我相对来说比较需要的或者说是比较能让我开心的第二个是我其实在

自己的时间里面我对写程序这件事也挺喜欢的我知道很多程序员其实下了班之后不太写程序我还行我还蛮喜欢写程序的在没给 CPAN 写代码之前我也自己做开源项目做的也挺高兴的所以这一点我并不讨厌第三呢就是作为一个 BJUP 主吧

就是其实和这个 CPanel 的 Core Lab 稍微有一点点这种相辅相成的作用就是你作为一个 B 站 up 主你是不是有时候寻思着我怎么能脱颖而出在众多 up 主之前对吧成为一个稍微厉害一点的 up 主对吧让别人说你的粉丝怎么跟其他的 up 主吹他喜欢的 up 主呢对吧你就想着什么 title 可能酷一点呢然后你觉得哎

这个 Python 的 core lab 这个 title 是不是还挺酷的然后在 B 站你可能有可能就是 up 主里面读一份对吧所以当时也多多少少有一点这方面的动力吧所以这几个方面其实是都有的但是职业生涯的发展这件事确实几乎是完全没有的就从我职业生涯开始到现在我的职业生涯跟 Python 都没有关系所以就是唯独这个方面当时基本上就不存在这个方向的动力

我想到了一个清小说标题就是关于我为了在 B 站脱颖而出而成为 Python 核心开发者这件事多多少少有这方面的一些动力吧肯定不完全是但是想的时候是有想过在觉得自己差不多要成为 Core Dev 的那一阵想过我要怎么在 B 站上宣布这件事多少想过一些那你觉得就是你现在来看当时那些无论是在这个过程中获取还是说通过成为 Core Dev 获取的这些目标都达到了吗

说实话就是成为 Core Dev 那一下并没有引起我想象中那么大的波澜就其实也还可以但是我感觉大家可能是对这个领域相对来说还是陌生一下因为很多用 Python 的人可能如果对这个 community 不熟悉的话你跟他们说这人是一个 Python Core Dev 他可能对这件事完全没有概念就什么叫 Core Dev 世界上有多少人他有什么作用就他其实对这件事是没有概念的

所以就是 B 站上这个所谓成就吧其实没有想象中的大但是也还可以吧也还可以还是有很多人通过这个方面认识我了而且这个东西是一个我觉得它多多少少是一个有一点常委效应的事对吧它就不是说你今天成了 CoreLive 然后这件事过去了对吧你成为了之后你就一直是在短期看来呢很有可能在相当一段长的时间之内对吧在 B 站我很有可能都是唯一一个这个 Python 的 CoreLiveup 主

所以不急对吧就是就算当时没有想象中的那么好慢慢的可能也会有一些吸引力吧有一些吸引力就是刚才 B 站这边说的其实差不多吧就是还行然后多少有一点能拿得出手的东西

没有想象中的那么好也可以理解然后剩下的有一些其实是在整个这个过程中第一个认识了 Python 的整个 community 的不少人其实这个 community 还挺好的因为大家都是 volunteer 所以就是整个环境非常友善

然后我觉得一个对于我来说很重要的点是我参加了今年的 PICON 参加今年的 PICON 去参加 Language Summit 还做了 talk 然后从而认识了很多的 Core Dev 然后在那边也认识了一些人这个感觉其实是很好的我觉得在一个 community 里面有一些自己的归属感然后有一些跟其他人聊天聊得比较开心的地方然后这个是我觉得挺舒适的这是这个方面就是无聊这方面

然后技术上呢就最少对 Python 的了解上还是有一些比较明确的提升的因为现在再回头看 VStracer 的一些代码当时就是那种胡乱吞枣的只要工作了就行了一些代码现在基本上知道怎么回事了或者是知道有没有更进一步的发展空间了当然还有一点非常非常重要的就是在实际上就是在这个真实的这个世界里面做的贡献或者写的代码确实让更多人的生活变得容易了一些

不仅仅是在虚头巴脑的不仅仅是在这个理论上或者说在名誉上给一个重要的项目做过贡献它是在实际的这个代码本身上或者这个项目本身上也确实做出来了一些比较有用的东西吧所以总体来说还是收获破风 OK

从刚才高天分享的经历里其实是不是如果说假如我想为 Python 做贡献对假设我最后的目标不论是不是成为这个 call developer

那其实都可以先从关注一数列表开始就是如果你没有恰好碰到某一个这种自己真实遇到的 bug 那可能我们先去看一看 Python 一数的列表并关注它也许是一个或者说能不能成为一个我们开始接触的这么一个机会或者说还有什么其他的路径呢

我觉得这是一个特别特别好的切入点就是去刷一数列表然后一数列表因为经常还是比较新的最新的人提出的问题哪怕你没有因此成功拉 PR 你在里面经常回答问题也是会被大家看见的

然后因为现在其实说实话 Python 的这个比较常驻的 volunteer 其实不多所以你在 issue 列表里你就是不停的帮人哪怕回答一些问题解决一些问题偶尔拉几个 PR 很有可能都会让人注意到你然后 Tryad 的门槛还是挺低的 CoreLab 相对来说高一点点但 Tryad 的门槛没有那么高你就是帮什么 review 一下啊然后答答 issue 啊然后这样比如说我想给 Python 做贡献我觉得我技术实力够但我不知道我去哪做贡献对吧整个那么大一片代码我也不知道从哪开始看

从一数开始然后从那些 bug 开始从那些可以复现的 bug 开始然后去修复其实是一个非常非常好的途径和这个切入点当然我觉得是要做好你自己改的这个 PR 不被 merge 的准备这个是我觉得你在进入这个比较大型的开源项目之前一定要有这个心理准备不要觉得自己的第一个 PR 就一定会被 merge 或者说我把这个 bug 改掉了就一定会被 merge 因为 Python 内部其实有很多的所谓 consideration 吧就是

我个人推荐大家是去如果有能力的话如果可以找到的话去修那些特别明显的错误就是你改完之后它太明显这绝对就对了绝对就对了就是因为修复和改变有的时候不一样比如有的时候就是你想做一个 performance optimization

但是实际上这个 performance optimization 可能之前有人提出过然后不做是刻意的比如说为了代码的 readability 或者你想去重构一个部分那这个部分没重构可能也是有原因的

所以我觉得大家在最开始的时候在对 Codebase 不是很熟的时候如果你想尝试的话最好改那些特别明确的 bug 什么叫特别明确的 bug 呢就是这个事啊它跟它的 documentation 明显不一样或者比如说前两天我看了一个我自己独立 MERS 的第一个 PR 它就是有一个那个 reference 忘了剪了就这个东西拿到一个 new reference 之后没有释放

然后他给释放了就你要能遇到这种事你就改出来就是你自己信心都特别足就肯定会被 merge 最开始的时候尽量不要拉太大的 PR 你好你加一整个的一个 feature 或者你把一大堆代码全给 refactor 了很有可能就会被干掉所以一些给大家如果想尝试的人的一些小建议小建议

我之前也和另外一个给 Python 做贡献的同学聊过就是那个 Penguin 他是做性能优化方面的一些然后他应该是第一个 contribution 或者是第一个比较大的 contribution 就是他去 profile 了一些字节码然后发现就是有两个字节码他 Python 的字节码他总是一起用然后如果把它合成一个的话

能让 Python 变得更快一些这可能就是你说的 performance optimization 的部分那我觉得这个其实可能就不太适合大部分人从一开始入手去给 Python 做贡献因为这个就门槛比较高那个 return const 是吧对 return const 对我不建议大家上来从那开始入手那是一个非常非常大的修改是

是的,那个非常大我看一下那个 PR 我就是需要很多的 Background Knowledge 尤其是修改 C 的部分对,我觉得这个也可以提一下就是我觉得如果你是发现一个部分一个 Module 比如说它是纯 Python 的那可能修改起来会容易一些设计 C 的部分一般都会比较复杂

主要看你对 C 熟不熟因为你像我自己本身 C 特别熟其实所以 C 跟 Python 的部分对我来说其实差不多的但如果你相对来说本来对 Python 更熟一点对 C 没有那么熟就尽量不要碰到 C module 因为 C 的部分其实还有一些不一样但是 return const 的那个东西它主要可能要碰到 compiler 了那个部分就复杂了那个地方就费劲了贼复杂我靠

对尽量做那种 isolated 的修改就是你的修改是 local 的上下文只用看一点就能知道你这个修改是对的而不是说我要好几个文件来回来去查是的那我如果比如说我是一个想给 Python 做贡献的人然后我想找你寻求一些建议就是怎么联系你呢就帮听友问一下怎么联系我怎么联系我

联系我我这个人不是特别好联系我这个人就是这样我这个人不太喜欢跟人联系我觉得可能如果你的问题很短如果你的问题非常 quick 的话最简单的办法是来我直播间找我每周六中午来 B 站我的直播间这个是最简单的听到我说话和问短问题的方法

相对长一点的问题呢我现在基本上只在我的知识星球打因为确实虽然也不是就是说吹牛什么的现在就是可能想问我问题的人比较多然后确实也没有足够多的时间去认认真真回答大家每一个想问的问题对吧比如说有 20 万人在关注你然后有很多人来问你问题你说每一个都回答也不太现实

所以就是大概是这么的一个情况我在直播间的时候因为是一对多对很多人嘛我就可能多分享一些看法如果你们比较短的话然后知识星球是因为有个门槛嘛这样的话呢就把那个人数稍微控制一下但是我个人是觉得啊你想给拍档做贡献这件事其实最起码在初级的阶段你不需要特别多来自我的建议我觉得是你已经开始有一点迈入这个门槛了

你已经开始给 Python 拉过几个 PR 了然后你想进入这个 community 成为一个比如说不管成为一个 triad 或者哪怕成为一个所谓的 frequent contributor 对吧当然比如说你可能想往 core lab 走到这一步的时候你可能才更需要一个所谓已经走过这些路的人的建议因为拉第一个 PR 这件事其实没有那么难只需要你一些时间一些精力和一些热情我个人是这么觉得嗯

OK 那我们要不就进入下一个话题我想再补充问一个问题因为其实就是之前对社区没有那么熟我会误以为可能社区的角色只是包含着比如说 contributor 就是做过贡献的人以及说这种 call developer

对 就是其实听高天的描述好像其实还是有很多个不同的这种角色是吗就是他们之间是如何这种界定和转化的呀

其实没有那么多了没有那么多就是如果你把 Python 看作整个一个社区的话它里面角色稍微的复杂一点如果你把 Python 看成一个项目的话其实这个项目里面只有三种角色一个就是 Core DevCore Dev 的唯一多出来的一个权限叫做 Write Permission 就是你可以 merge 代码了你可以把其他人的代码做 merge 了这是 Core Dev 的唯一权限然后是 Triager

Triager 在近几年来近非常非常多年来基本上每一个 Core Dev 都是先成为 Triager 然后成为 Core DevTriager 呢基本上你可以把自己理解为一个小助手就你可以帮 issue 做分类然后你可以去做一些 code review 就基本上是你就可以帮 Core Dev 做一些前置的事情有 Triager 你就是一个 Python 的团队成员了但是你没有 write permission 就你不能去 merge 代码然后剩下的人就统一都是普通人

不管你有没有给 Python 做过贡献当然你给 Python 做过贡献会有一个区别是你在 GitHub 上提 issue 的时候会写这个人给 Python 贡献过代码比如说我们 code review 或者我们看 issue 的时候如果这个人贡献过代码我们可能就知道这个人大概知道流程是怎么走

如果这个人从来没有共享过代码的话那我们可能觉得他是一个新手只有这块的区别但是在角色上他们是一样的就在你成为 Try 之前你都是同样的当然 Python 作为一个组织或者作为一个社区就除了 Project 之外的当然还有别的角色比如说 SC 对吧

student council 就相当于一个董事会似的然后起到原来 guid 的作用五个人投票决定大方向再往上面还有 PSFPSF member 或者是 PSF 的那个真正的那边董事会去管这个 Python 作为一个项目的推广然后就是跟其他的交流组织活动这些就是更是 logistic 那边的事情大概有这些角色但是我觉得没有那么复杂作为一个程序员来讲对于我来说的就是普通人 Triager Core Dev

了解

所以其实比如说之前有做开发的同学他可能一开始想把最终的目标定成这个 call developer 那其实他是可以给自己中间设一些中间目标的比如说这个 tryadger 是一个更现实的更可达的一个目标近几年来基本上每一个 core dev 都走过 tryadger 这条路所以不管你设不设你都得先成为 tryadger 然后再成为 core dev 然后这条路也不是什么弯路不是说好我直接奔着 core dev 走我走的更快

我要先去当 Triager 再奔 CoreDive 走得更慢不是就是这基本上是 Triager 你可以认为是一个路标就是在你往 CoreDive 这个方向走的路上走到一定距离了给你贴个标签你现在是 Triager 了再走到一定距离了给你贴个标签你现在是 CoreDive 所以它也不存在绕路的问题你就正常的给 CPython 做贡献贡献着贡献了你就是 Triager 了现在其实来自中国的 Triager 是有几个的

有几个只是 core lab 可能相对来说少一些有很多朋友可能是坐着坐着就觉得稍微点皮了吧因为确实是一个纯的 volunteer 的工作然后没有任何的收入所有的所谓的反馈都是精神上的所以可能有一些人其实在头几个月的时候很积极然后也做出了很有价值的一些贡献但是后面可能就觉得这件事可能没有那么有意思还浪费了我这么多时间所以可能最后走到 core lab 的人相对来说少一点

其实我可以分享一下我个人看法我一直觉得就是把一个目标设置成成为 Core Dev 是一个不带现实也不是特别讨好的事情我觉得你肯定是要像高天说的就享受成为 Core Dev 中间的一些过程比如说不论你是 review 代码然后给 Python 做贡献还是说简简单单成为社区的一部分这种感觉我觉得只有你想受这个过程才能最终去达到成为 Core Dev 这个结果对

对你不要为了成为 Core Dev 而想成为 Core Dev 这个是没有任何意义的也很困难的就是说你说我只想成为 Core Dev 然后去卖课这件事就很难就你还是需要就是你本人对这个东西有兴趣就是在这一路上你每一点都觉得好玩因为 Core Dev 这个事不是一个门槛不是一个阶梯

它其实是最后一个勋章就是每一个成为 Core Dev 的人都并不是在成为 Core Dev 的那一刻成为 Core Dev 的他实际上都是已经做了一段时间的 Core Dev 的工作然后 Core Dev 这个名头实际上是 Python 这个社区对你的认可就告诉你这一阵工作其实已经是有 Core Dev 的水平了而不是说好从今天开始你就能变成 Core Dev 你就能做成什么什么样的事其实不是它是一个很平滑的事情对我觉得说的很好

我们就可以接着再聊一聊我们之前想聊的下一个话题就是高天是如何看待最近 Python 的发展呢包括未来的一些目标对以及最近的一些变化和改进首先感谢微软微软我觉得在近几年来对 CPython 这个社区的贡献还是有目共睹的它养活起来了一个团队去做一些事情做一些主要是发自 CPython 这边

然后呢感谢一个天降猛男啊 Sam Gross 去搞了这个 703 对吧 Pipe703 然后直接导致了现在这个 CPython 的整体的发展节奏和发展方向突然多了就是大家在做一些之前很多人尝试了很久或者说是抱怨了很久或者说是幻想了很久的事情很多事情在同一刻

正在一起发生所以我觉得还是蛮有意思的一个时间点我们不知道 Pipe703 会不会成功就是这个 NoGill 这个事情能不能给大家先介绍一下就是这个事情我觉得可能听众没有一些背景我有时候就是因为我自己大概知道对应的是什么我就不记得就是 Gill 也就是 Global Interpreter Lock 这个东西呢是被诟病了非常非常非常久可能

Python 恨不得有多久就被人说了多久这件事的这么一个东西对吧它导致了 Python 的多线程实际上是没有办法很好的利用多核的然后大家一直要 remove giltremove gilt 现在 right now 此时此刻就是 Python 有史以来距离 remove gilt 最近的时刻 B

比现在更近的时刻可能就是明天或者后天对吧就是我们正在离这个目标越来越近有史以来从来没有这么近过 Pep703 呢是 Sam Gross 提出的这么一个 PepSam Gross 这个人呢他原来是在 Meta 然后他一个人独立的干出来了一个 No-Gill 版本最开始应该是 3.9 版本干出来的

然后后面是他又成功的移植到了 3.12 然后发了 Pype 703 然后说我要把 Gil 拿掉在 SC 经过了仔细的审查之后给出了一条路线我们要不跟信涛先打个招呼然后再接着说高天老师你好不好意思非常不好意思昨天正好是我们公司要搞 77 大促所以早上就起晚了那我们接着聊好的好的好的

这个 Sam Gross 呢在这个 NoGill 的 3.9 跟 3.12 版本之后提出了这个 Pipe 703 然后 SC 接受了但是就经常会有人问我 Python 这个 Gill 到底能不能移大家可能就是关注这件事关注了一些但是没有完全得到这个信息现在 SC 的观点就是先试试因为这个 NoGill 这件事实在是影响太大了

所以 SC 的观点是我们试一下在试在你的实现出来之前我们不知道你的实现可不可行所以现在基本上 Python 社区有一个小团队可能有四五个五六个人专门负责这个 no-give 的事当然官方的名字叫 FreeThreaded 专门负责这个事然后前提是他们的实现要可以一键被删除

就是可以立刻被拿掉然后有一个完整的开关让 Python 在 Gil 跟 No Gil 之间做转换

如果在未来 NoGill 成功之后就是它对单线程的性能影响和对 C-Extension 的影响没有那么大是可接受的那么 Python 以后就会变成没有 Gill 的状态否则的话它还会回到那个 Gill 的状态这是 Python 703 我们刚才提到的 Python 703 所以现在这个状态是 3.13 版本已经有实验版的 FreeSled 了 Python 3.13T 对吧

大家已经可以尝试了当然这个 FreeThread 的版本还非常早期啊它虽然每个 Thread 正常工作了但是很多 Performance 上有很大的问题还不要把它当 Production level 的东西用已经开始有这方面的尝试并且已经有一些雏形了这个是 NoGill 这块然后另外一点呢就是 Jit 对吧这也是喊了无数年的问题说 Python 为什么不 JitPython 为什么不 Jit 对吧其实不用很大的 Jit 其中一个很重要的原因是这个 A maintenance issue 就是

Python 这个团队在微软进入之前基本上是一个志愿者团队

没有几个人是拿着钱给全职做 Python 工作的他跟比如说 Google 是人说为什么 Google 能做出来 V8 为什么 Python 没有 Java 4 会快 Google 做 V8 的时候花了多少钱对吧 Python 这个团队大家根本没有钱就全都被爱发电那肯定是对这个 maintainability 就是可维护性是有一定的需求的所以 Python 的内部也一直在找一个相对来说更好维护的这些方案

那就是前一阵说的 copy and paste,也是一个 brandbooker 提出来的比较新的一个 JIT 方案大家如果感兴趣的话可以自己去读,这太技术了,我就不在这聊太深了就有这么一个方案,所以 JIT 被很多人说我们要 JIT 我们要 JIT 也是说了很多年的事,也在 3.13 第一次开放了实验

那在 3.12 呢还出现了另外一个利用多核的解决方案叫 subinterpreter 对吧它现在也出一个半实验的状态也没有完全 production ready

它也是一个新鲜的方案同时对于我来说有一个非常新的东西叫做 C-START Monitoring 也是 3.12 引入的它是一个 monitor 的方案它替代原来的 C-START Trace 跟 C-START Profile 是一个就是在 tracing 或者是在 profiling 上面帮助很大的东西所以在我当下的感觉看来 C-Python 有非常多很有趣的很大的被呼唤了很久的改动正在同时进行

所以算是一个蓬勃发展的状态对我自己的感觉是对我也觉得现在这个状态是很有意思因为其实以前 Python 一般都是一些小修小改语言整体可以说是相当稳定的然后就是从可能 3.5 3.6 加完 Type Hint 和 Async I/O 之后我印象里就没有像现在这些这么大级别的修改了对

对我还要再表扬一下这个微软就是因为微软出钱确实供了很多事 sub interpreter 的作者那个 Eric Snow 对 Eric SnowEric Snow 是微软的然后再做 sub interpreter 然后 Brian Booker 是微软雇过来 Faster C Python 团队中的一员 Mark Shannon 现在在做 interpreted 级别大量的修改比如说 Python 3.1 的那个把 frame 拿掉的工作包括 specialization 也有大量 Faster C Python 团队的参与 Python 最近不管是

实质性的 performance 提升还是在 interpreter level 在做的各种的 refactor 然后包括修改 by code 然后做 tier1 tier2 这些很多让 Python 变得更快或者说让 Python 有能力承受如此大修改的这些工作不少都是微软攻的那几个人来完成的所以这个总的来说微软还是对 Python 做出了挺大的贡献挺大的贡献

对,我现在觉得微软真的是现在 Python 的爹,而且尤其是你跟其他大公司一对比,你就发现这个差别太大了。我觉得听众们肯定知道一件事情吧,就是 Google 前段时间把那个 Python team 全部开掉了。就是 Google 的 Python team 原来也有一些 core developer,尤其是像那个 George P. Smith,GPS,他现在是 steering console 的一员嘛。

也是当 Python Core Developer 非常多年了,是一个超级资深的 Core Developer 还有很多 Google 自己做 Type Checker 的人,全部都被开掉了一个 Team 整个被开掉,并且他们说原因是什么?要节省成本,要把人放到慕尼黑去最后是找了一堆根本不会写 Python,原来做 TypeScript 的人,去成为新的 Python Team

然后我觉得这个事情就非常的幽默就是你在一个大家都喊搞 AI AI AI first 的这种时代然后你把跟 AI 关系最紧密的一门语言的整个团队全部开掉

所以那反观微软就是在 Python 投入的特别多所以这点我也想比较好奇就是高天你从内部不论你从内部还是外部观察就是微软对于 Python 的投入它更多的是基于一种贡献呢就比如说我就是想让 Python 生态更好还是说它确实实际上有很多这种给 Python 提速的要求就比如说内部的一些产品啊不论是 AI 还是不跟 AI 相关的

首先我不是微软的大头头我确实不知道为什么微软为什么具体的微软在出这笔钱但是我们其实简单算一笔这样 FastCPython 团队才多大才多少个人你算上 Griddle 来来回回也就 10 个人我不信这 10 个人会对微软的 Financial Report 做什么大的影响

你雇 10 个人对于 CPython 这个 community 来说已经非常多了 CPython 的 community 现在有一半左右的 full time 给 CPython 干活的人是在微软

但是对于微软来说你十个程序还能花多少钱呢就算规则它级别特别特别高那也花不了多少钱我觉得这个对于大公司的这个 finance 来说它没有那么大影响就是想不想做的事至于微软为什么要做呢我不是很确定我不觉得 Python 这个语言对于微软比对于其他公司影响更大

对吧又不是做 C#对不对大家就是这个领域的人大家都用 Python 微软你的 AI 做的也不比别人多那么多对吧很多也是 OpenAI 的东西对不对所以说这个事真的对微软就是在技术上对微软有很大提升吗我觉得不一定有

Reputation 上有吗我觉得肯定有对吧这已经很见成效了我们现在已经在夸微软对吧对 Python 这个社区有贡献了对吧但是这个 Reputation 我觉得就算他如果是为了 Reputation 我们就给他 Reputation 嘛对不对他为了 Reputation 他把 VS Code 说好我开源了那我就说你做的好嘛你很棒嘛对不对我把 TypeScript 做的开源了我说 TypeScript 做的好嘛做的很棒嘛 Reputation 是一个他是

是没有 cost 的对于我们来说是没有 cost 的你做得好我们就夸你对吧然后通过这个 reputation 可能我们对微软的在这几年或者近十年或者近几年之内其实我们对微软的态度是改观了作为一个开源社区原来微软就是开源社区永久的敌人对吧他 windows 不开源 office 不开源什么东西都不开源但是近几年来通过几个很出色的开源产品包括对 CPython 的这种资助可以算是施舍

对不对他其实给自己公司迎来了一些不错的名声那这些名声在未来可能会在各种各样的领域不同的领域有可能会发生作用在你招人的时候对吧在你这个什么就干一些事情的时候有可能是会在暗处帮你一把的

了解其实我们刚才聊下来会觉得 Python 在最近这一段时间的变化和之前相比已经产生了很多的这种不同嘛就是特别是和甚至说和过去 10 年相比对那

我们可以再聊一些更具体的点就比如说实际到当下正在写 Python 的这些开发同学或者是就只要用到 Python 的人吧对如果让高天来做一些最佳实践的推荐或者技巧型的推荐的话你觉得最重要的推荐有哪些呢

我其实那天稍微想了一下这个问题因为技巧这个东西不同领域的人其实用的可能不太一样然后我是比较相信那种大巧不攻的就是我觉得最好的技巧就是没有技巧就是你写程序的时候最好一点技巧都没有就是你用的那个东西所有人都会然后你把这个东西完成了

但是我那天突然想到了一点我觉得真的很多人会出现问题的这么一个点就是我觉得在这个世界上的大部分工程师是不应该考虑 performance 问题的或者最起码不应该过度考虑 performance 问题的

就可能 50%的工程师在 80%以上的情况下是不应该考虑 performance 问题的 80%的工程师在 50%以上的情况下是不应该考虑 performance 问题的我见过太多人在写代码或者是看代码的时候脑子里面第一反应是这段代码它可以更快或者是这么写比那么写更快

他脑子里有太多 performance 问题因为 performance 是一个客观量但是性能这件事对于一个项目的整体来说很多时候

它是很不重要的它非常不重要尤其是微观性能局部性能就这个东西它很多情况下是没有帮助的因为你觉得这件事绝对更快了绝对更快是一个非常容易实现的事就我删掉一行语句它一定绝对更快了对吧但是这个绝对更快对于你的项目来说有什么帮助很多时候可能是没有的你这个绝对更快有没有给你带来 cost

你的代码的可读性是不是下降了你的代码的稳定性是不是下降了对吧或者你的代码的 Worst case 的 scenario 性能是不是下降了很多这种考虑都是非常非常重要的我见了太多太多程序员说这么写更快这么写更快所以我的建议是大家在下次说这么写更快的时候问自己一个问题就是快多少

如果你只能答出来更快绝对更快很有可能你的角度是不全面的就是你没有完整的思考这个问题你应该能大概估出来局部快多少就是比如这个函数或者这个 full loop 或者这一段语句我大概能快多少百分之五百分之十百分之五十百分之一百对吧然后全局快多少对于我这个 application 对于我这个 project

作为某一个 scenario 对于某一个 case 下它能快多少 15% 15%有的时候你局部快 100%对于你的项目是毫无意义的你这个函数快了 100%但是你这个函数只占你这个项目任何一个 path 最多占 0.2%那你这个函数快了 100%快了 200%都是没有任何意义的而你付出的这个代价付出的有可能比如说你用了一个更复杂的算法

对吧你的 readability 可能就会下降了比如说我们之前举个阅语的例子比如说你 C 的那个 variable 没有做 initialization 你代码的 stability 可能就下降了所以当你再去尝试做性能优化或者是为了性能去改变代码的时候我觉得你要先说服自己这个东西绝对更快了但是相对快了多少对我这个项目有没有帮助这是我能想到的我觉得我最想分享的一个事情

我想补充一下让我想起来之前我在看一个 C 语言的关键字就是这个关键字加和不加可以给编译器一些提示它可能编译出来的代码更快然后我就想到底写代码的时候你怎么考虑什么时候加什么时候不加就看到一个腾讯的一个比较资深的游戏工程师

说的那个就是解释的他说写代码的时候一般不考虑这些问题就是需要这个关键字的时候一般是就是你去看代码它到底卖在哪里然后你发现这个编辑器每次走到这里它就会去那一层重复读那个它已经知道的东西是因为它不确认这个值还是不是这样所以你才需要加上关键字让那个编辑器跳过这个所以就是说写代码的时候就跟

高天老师刚刚说的那样就是不考虑这些细节的这些东西然后就是在性能优化的时候再过来考虑就是怎么样可以把那个耗时最长的那些地方给优化掉就是说我们优化的时候去找到那个最需要优化的地方再那个优化然后另一个例子就是我们前一段时间有一个

同事分享的就是大一是这样就是有一个程序就是他每天比如说凌晨一点他要跑出来报告对吧然后他每天 10 点开始跑需要跑三个小时他觉得这样有些慢就是数据越来越大可能一点都跑不完了

然后他就把代码重复了一下就是原来可能逻辑比较简单但是耗时比较长现在就是说他逻辑稍微复杂一点但是他可能 10 分钟就跑完了但是这样他遇到一个问题就是后面再加更多的需求的时候就不是很好加因为代码现在偶合性比较强就为了性能优化

然后最后呢就是没有办法因为还有更多的需求会进来嘛所以他就把它重复到了原来的那个就是他又把它 revert 到原来的那个方式来加更多需求然后解决方法呢其实非常简单就是说

原来 10 点跑你现在让他 8 点开始跑因为其实无论 10 点还是 8 点他的那个数据都已经 ready 好了所以说你原来三个小时后来数据更多可能跑四个五个小时都没什么问题因为 1 点之前把那个数据准备好就可以了所以这个例子就是性能优化就是意义不是很大因为可以通过一个更简单的方法来解决这个问题

对 我觉得这个话题就是如果我们聊其实可以聊非常多因为它本身就是一个在写代码里面就非常需要探讨的话题吧就是性能以及性能优化但我还是想就是简短的引用一下那个 Joe Armstrong 那句名言嘛就 Joe Armstrong 是阿尔朗这个语言的发明人就他有一句关于性能的很著名被一直引用的话就是叫做我先用英文读一下然后再用中文解释一下就是叫那个 Make it work

然后把它做得漂亮然后如果你真的要做得快 90%的时间,如果你把它做得漂亮它就已经会快了所以真的,就把它做得漂亮

在这句话什么意思呢就是说你我用更浅显易懂的方式翻译就是你写代码最需要注重的是可读性然后如果你的代码已经非常可读它就是整体你可以看到就是写的非常的工整然后用它的说法是 beautiful 就是漂亮那绝大部分情况下 90% of the time 它就已经足够快了

那么剩下那 10%的情况也就是刚才信涛和高天提到就是你可能需要先 profile 找到性能瓶颈然后再去优化那一部分对所以我觉得可读性实际上是真正重要的对其实刚才高天提的这个是一个很务实又偏实践的这种经验或者是这种例子

对其实大家在做的时候或多或少都会遇到类似的情况吧就是你不要去过早优化它对甚至不要做一些无意义的优化我之前有遇到一个小例子就是比如说有同学会和我探讨说我这么写它的时间复杂度更低就是如果我们经常去刷 LinQ 的对然后大家都会知道大卧的这个记号

对但是其实在我们实际做工程的过程中这个 n 它其实是一个确定的就是它的规模是

是一个确定的程度那这个时候其实时间复杂度它可能只是一个相对的参考的时间对那我们是有更确切的就像高天说的我们是能确切的知道我们优化了多少的对百分比是多少以及真正优化下来的这个时间也好性能也好是多少对其实可能需要多维度的去评价吧

对我想到那个 Redis 的 hash 它好像是就是那个 ON 我们听起来可能比较慢但是那个 Redis 作为一个性能比较高的那个换存它的 hash 在数量比较少的时候其实它用的是 list 就是说你存上三个你每次查一个它可能把三个都循环一遍

然后就是 N 比较大的时候它才会变成用哈希的 Key 去挖留变成一个真正的哈希所以说在 ON 其实在 N 比较小的时候它的性能其实是比较高的可能比你集团出来哈希再去找 Key 的 OE 还要快给大家推荐一下我 B 站的一个视频叫做复杂路线顶大家可以去看一下嗯

其实我还想补充一点就是虽然我们说不要过早的考虑性能优化然后性能大部分时候不重要但有一点我觉得很重要就是你要避免一些性能的 anti-pattern 就是说什么意思呢就是有一些人们总结出来的这样写会导致很大的性能问题的这个你是可以避免的

或者说他已经有一些 best practice 那么你只要遵循就好了比如说在 Python 里一个很著名的就是如果你不需要去存一个列表然后你又要对它循环你可以直接用一个生成器对吧你就不需要真正的去创建一个列表这样可以省内存然后你像 Python 他已经给你有了这个基础设施并且有了 best practice 那么你只要去了解这些然后遵循就好

但是比如说有些很微观的东西比如说有一个 global 的变量访问它比较慢然后你要把它办到一个 local 这样更快我觉得这种就是可以说完全没有必要了它其实语言层面或者说也没有这种特别好的 best practice 所以你就可以基本上在大部分时候都可以无视它那另一些这种 anti-pattern 就比如说这个数据库查询的 N 加 1 问题对吧这种也是大家总结出来了然后明确知道有这么个问题然后也有明确的避免的方式

所以你只要去了解一下这种 anti-pattern 然后避免然后写出可读的代码我觉得大部分时候你的代码性能就是不会有问题然后如果真正需要再去 profile 并且优化 OK 那我们是不是可以进到下一个话题因为我觉得我们聊 Python 开发时间稍微有点长下一部分我们想跟高天聊一下关于技术内容的创作就因为你之前提到你是也有在 B 站分享然后也有做知识星球

那么这块就是可不可以分享一下你整个的心路历程包括一开始为什么要去做然后其中从中学到了什么然后有没有什么比如说不论是营销啊还是说是涨粉的技巧什么的

我最开始做的时候呢是因为我当时觉得我想做 B 站这个是最开始的初衷我想建立一个 B 站账号我想去聊一些不用其他人提问我自己可以主动聊的话题就是我这周想聊这个我就聊这个那周想聊那个我就想聊那个另外 B 站相对来说是一个建立个人品牌比知乎更简单的地方这是我最开始的初衷所以我是先决定了要做视频才去想要做什么视频那在最开始的时候呢我其实做过一些零七八岁的尝试

就不光是 Python 我一开始讲过一些其他的东西吧就是 003 大家可以看看我很早期的就比较早期的视频两年多前的视频做什么都有后来呢就觉得 Python 这个领域是我比较熟悉然后可以讲的比较透然后目前在市面上比较少的这么一个方向就是相对进阶一些的内容因为教你入门的很多我的视频从来没有讲过入门的内容但是复杂一点的

比较难的或者是一些比较鸡脚嘎啦儿的地方讲的很少所以就开始主演在这上面发展然后有几期视频做的还不错正好那一阵呢我感觉一些相对进阶的东西比如说 code object 对吧比如说 frame 对吧比如说这个 class 在 definition 的时候是什么东西包括 decorator 它背后到底是什么意思什么是 descriptor 就我发现 Python 中其实有很多概念

对于刚刚入门或者是有一小部分编长量的人来说是比较模糊的他可能用过这个东西但他并不明确他到底是怎么回事所以开始讲这些东西然后那一阵呢因为储备的比较足知识储备比较足所以那一阵有一阵我几乎是可以达到日更每天一个视频每天一个视频那一阵也比较无聊在耳湾的时候比较无聊每天一个视频然后那一阵积累了一定的粉丝垂直领域的粉丝然后后面当然就会感觉到一些阻力吧

纯技术内容先做了一阵,后来可能大家感觉看的人数毕竟还是相对少一些然后在后面就是碰到了几个所谓热点吧最开始是不是那个羊了个羊好像是然后那期视频相对大一点然后再往后是一些跟娱乐圈沾边的事但是我的视频我基本上一直秉持着就是这个东西它一定要跟技术挂上钩我不纯蹭

我希望的结果是我能带出来热点而不是我去蹭热点后面也小成功了几次比如说做爱心的事或者说是那个演唱会的事对吧那这点都是我带出来的跟那个不是我蹭人家的对吧是我自己的热点然后所以在还做了几次相对来说比较成功的技术和一些相对热门的话题的结合这些时候是一般是涨粉最多的

就做纯技术其实涨粉数量是非常有限的然后这个东西大家能不能看得懂就是能不能大部分人能看懂可能是观看量的一个很重要的点吧然后到后来呢做纯技术视频相对来说少了一点有两个原因第一个是确实播放量就数据差一些啊然后看的人少一些第二个呢是我觉得我把 Python 的就是中间领域的这个很多的内容其实我已经讲完了

再讲要不然就是鸡脚嘎啦要不然就太简单了都没有很适合的点了所以后面做纯技术的基础建设的这部分的视频变少了当然做了另外一种就是 code review 对吧 code review 是一个你掌握了一定工具之后你应用或者是你提升的一个方式这个最近做一些当然最近这一年吧因为精力有限不像当初最开始做的时候新鲜感那么强了这个能日更对吧最近一年基本上都是做周更每周一更

有的时候是做技术相关的视频不管是 code review 也好或者是讲一些比如说最近这期视频讲的是一个 PTB 里面的一个黑魔法也有讲这些的然后有的时候就会聊一聊跟技术有关的新闻和我自己的一些看法和观点对吧这样也有然后有的时候就是正好有一个话题比较合适对吧我们就蹭一蹭就是看看怎么着能用一些跟技术相关的东西和大家能懂愿意看的东西做一些结合所以基本上我现在的视频就是这几个方向

有一点我比较好奇这可能也是所有内容创作者都要面对的一个问题就是你是更看重个人表达呢还是说观众的对于话题的喜好也会影响你去做什么样的创作方向上一定是努力去靠近观众喜欢的方向的你如果想成为一个好大部组你就不能只发我想发的东西你要去感受观众想看什么

但是这并不意味着它要影响你的个人表达它不意味着你的观点要去接近观众更想看的东西就是素材或者领域和观点是不一样的对不对比如说观众爱吃苹果爱看吃苹果我可以吃苹果观众爱看吃西瓜我可以吃西瓜但是不能说观众爱看我吃酸的苹果我就吃一口甜的苹果愣说它是酸的

对吧这是两件事你的表达我表达的依然是我想表达的东西我的观点依然是我自己的观点我的价值观是没有变化的只是我讨论的事情可能会因为观众的喜好有所偏移那我感觉你想说是不是你从你的兴趣和观众的兴趣里面取一个交集然后来去作为输出的内容

肯定是取交集的不能只说观众看这个我对这种一点兴趣都没有那我不是瞎胡闹的吗我只是说就是你说的取交集其实还是素材上的就是我聊什么东西而不是我怎么聊它怎么聊它是表达上的事情 OK 理解

我想问一下高天老师这是有没有考虑做英文的内容因为我感觉你的很多话题把它就是做成英文的放在 YouTube 上应该也会比较有热点英文的内容我目前没有考虑过因为我说实话我对英文观众也没有那么需求就是我们就假设我们假设我在 YouTube 上可以取得跟 B 站同样的成功我不会觉得很欣喜就是我没有那么大的

就在 YouTube 上做成功对我来说没有那么重要因为我自己相对来说还是一个比较就不管自己的圈子还是自己的兴趣其实蛮在中国这个领域的所以如果有中国的朋友们对我说的东西有共鸣的话很开心然后如果只是英文领域的话呢

就还好而且做英文的东西相对来说肯定比做中文要难因为母语表达肯定是最轻松的对于我来说做一个中文的东西不管是写不写稿或者是说不说话对我来说其实是一个挺容易的事情我这人挺能白活的但是英文的话你就受限于一定的语言表达所以至少到目前来说吧还没有计划做任何英文的这个素材

对,而且我觉得就是很多内容其实英文领域你会发现有很多人已经在做或者做过了就比如说像聊 Python 的技术播客在英文里面没有 20 个也得有 10 个了对吧然后中文里面的话那你肯定也只有博士说就是你会发现中文其实大家都说中国人很卷但是在内容创作领域其实有很多的这种真空

是可以去填补的对是但是我觉得其实除了中国人这个事还有另外一点就是英文相对来说是一个世界语言

就你会发现做英文内容的人他不一定母语是英文但是他因为为了让更多人看到他的东西他也是在用英文做所以相比来说英文的这个技术领域不管是做博客的也好或者是做播客的或者做视频的人其实都更多他是来自于各个不同国家的人在卷那中文这边呢就是这一片嘛所以就是确实有一些真空然后尤其是相对进阶一点的话题可能就

技术上稍微进阶一点的话题可能就真空更大一些其实国内有一些技术创作者他们的技术水平也不错他们也愿意发一些东西但是博客咱们先不说但至少视频这个领域很多人不是非常会剪视频你可以在 B 站上看到一些实际上技术上质量还可以的视频但他一刀都不剪

所以你在听他的时候你会听到他的很多磕巴声就是他会响然后他会说错了话他要重复然后由于他不剪所以他一直要表达所以有很多语言的部分就是他那个东西没有内容他只是一个化佐料然后同时呢他还有时候他要自己敲代码一边敲一边讲就会导致本来比如说我的视频 10 分钟可以说完的事他的视频要 40 分钟观众看了就觉得累就觉得信息量低对吧心脏比不好

然后就导致这些视频也被埋没了所以就导致最后的结果就是国内相对来说至少视频这个领域做稍微中高端一点的比较出色的 up 主不多我的一个感觉就是可能也跟大环境有关吧就是像国内的很多程序员他其实是没有时间再业余再去做一些这种内容创作的

这个其实对人有很高的要求吧就是你有足够的时间足够的兴趣本职工作不能太累就是回到你开始所说的对吧对确实是就是那个时间也是非常非常重要的一个因素国内的话可能相对自己的时间确实会少一些对

我想请教一下高天,就是因为你要把自己的视频,比如说这些花佐料啊,然后有一些这种没太有信息的这种表达要剪掉,那你自己剪视频的成本高吗?因为我们之前就尝试自己剪播客,就会发现这个剪辑成本其实还挺高的,比如说我们要听一遍找出来,剪掉再听一遍,这种不断的循环,对。

我有两种视频,一种是能看见我大脸的,就是怼着脸说的,那个是读稿,但是我这个人读稿相对来说天赋稍微好一点,因为不是特别容易听出来读,但那个是纯读稿,那个很快,那个就是基本上我经常是一经到底,就是八分钟左右的视频我基本可以一经到底,就是一个字不差的念下来,然后就嘎喳一刀就做完事了,然后有的是技术视频,就是你们看到的是如果是 VS Code 的,那是技术视频,

那种技术视频我的录制方法一般是我会想我会想完一句说一句想完一句说一句所以我需要做的剪辑是把中间的空白剪掉而不是去剪一些废话因为我没有废话

我每一句都是想完然后把这句话说完然后再想下一句应该怎么样接上所以我录制出来 RAW 的视频不是一堆废话和一些有信息量的话是一些有信息量的话和一大堆空白然后剪映最近出了一个功能它可以自动识别你音频里面的空白然后把它给剪掉所以现在剪辑成本对我来说就低了不少

一个视频如果是一种技术视频的话我做视频的全部时间对吧从剪辑到配字幕到这些乱七八糟的东西加起来差不多将近两个小时吧两个小时好快对就是没有那么长技术确实发展了其实我们现在用的这个 Riverside.fm 也有这种自动减掉空白的功能嗯

但是你人多时间轴就不好对吗我那个就只有我一个人就剪完了就差不多对多音轨确实比较麻烦我们之前对齐音轨加上减掉空白然后加掉减去一部分内容大约一个小时的最后生成的那个播客大约需要八个小时来剪辑那还挺久的不过我最后生成的东西一般就只有十来分钟

OK,那我们可以聊一下就是我看还写了那个知识星球的运营经验是吧,就是能不能分享一下就是你为什么要做知识星球,以及你主要在里面分享些什么内容。不好意思,能不能分享一下什么是知识星球,就是它怎么盈利啊?

OKOKOK 我们先聊一下什么是知识星球啊知识星球简单来说是一个付费的知识平台吧就是你可以理解为一个付费的博客就我在那开一个号然后你可以去知识星球花钱花年费加入我的知识星球然后你就可以看我在知识星球里面发的内容大概就是这么个意思

最开始做知识星球的时候呢是一个知识付费的一种尝试就是知识变现的一种尝试最开始的时候我其实也不知道会不会成功或者是会引起什么反响我当时的感觉就是做一下试试原因是呢当时有几个原因吧第一个是刚才其实提到过的就是有很多人想问我问题

但是问问题的人太多我没法每一个人都认真回答那我想 OK 那我要不然就设置一个门槛这样我还能回答就是如果你认为你的问题对你的帮助值这笔钱我再帮你回答对吧如果你认为你问的这个问题你花两块钱问你都觉得亏了那这个问题我答我肯定也亏对吧所以就是我可以帮助你回答一些你觉得有价值的问题这是第一点第二

第二点呢就是有的时候这个技术上的东西啊做成视频是慢的就比如说我给拍到又拉了一个 PR 我很喜欢我想介绍一下这个 PR 的背景或者一些简单的知识如果做视频是一个非常漫长的过程因为做视频就是它的 overhead 很大就你剪辑啊你做这个做那个这个很大但如果写成一篇文章其实非常快

但是写文章这件事呢我又觉得我需要一个因素来督促我写我如果没有任何正反馈我觉得这件事很难做下去你发到哪呢对吧然后也不一定有人看我说那好吧那我就来一个正反馈的方式然后这个就是所谓的知识付费嘛就是你要每天想着说好我这还有 100 多个交了钱的人对吧在这等着我发博客呢或者是等我发文章呢那我这周我怎么忙我也得多少给他们发点东西相当于是一个互相促进的作用吧

所以就是做了这么一个知识星球啊所以大家就是可以通过加入我的知识星球然后来了解我在做开发时候的一些事情吧然后我知识星球的方向或者说做的内容是很固定的就是在 Python 有一大半的内容是我在给 Cpython 写代码的时候我的一些心得体会或者是我的分享

最近给 C 排档写了什么代码所以我觉得我做也不是希望割韭菜对吧我希望他们能在我的置信球里面看到他们在其他任何地方都看不到的东西

我觉得我是有能力输出这个东西的因为确实目前来说你在中文的环境下你想看到一个人稳定的给 Cpython 写代码不是非常容易的事情所以如果你想了解这 Cpython 的开发是什么样的对吧你就进来看一看然后看看这个人给 Cpython 写了这个代码写了那个代码或者是今天这个代码有些什么技术他要分享的所以大概就是这么个事一个可以帮助你在进入门之后进入一些进阶或者一些提高的这么一个平台吧

我比较好奇就是加入你知心球的人他们一般是什么身份或者抱着什么目的呢比如说是学生居多还是说就是用 Python 工作的程序员居多这样子这个我还真没有统计过但是我的感觉我的感觉基本上一定是粉丝一定是说首先可能第一个是对我这个人比较喜欢第二个是对我这个人比较信任然后出的那个钱呢也可能就是一半是为了学习一半是为了支持

大概是我个人感觉应该是这么一个情况所以经验就是先做一个 B 站然后引流或者说通过 B 站验证你能不能成为一个比较好的知识分享者我觉得对因为我觉得就是还是多多少少有一些粉丝的因素的不是单纯的说大家完全奔着你里面的知识来也是奔着这个人来的有道理

有没有考虑做播客呢因为播客其实成本还挺低的

播客我觉得跟视频总体来说是相对冲突一些的吧因为我觉得有做播客的时间就是对我来说有做播客的时间不如去做个视频因为视频我感觉可能多一个维度嘛就是声音之外它多了一个视频的维度然后很多时候比如说我在聊程序的时候我可以把 VS Code 拿上来我可以把程序拿上来我感觉可能表达的会更充分一些确实确实播客在这方面还是有一些先天不足的对

然后我很多的个人想随便聊聊的话题都在我的直播中完成了 OK 那 Adam 和信涛你们对内容创作这话还有什么想讨论的对我比较好奇的是关于直播的这部分因为其实听起来直播它和视频又不太一样它可能不太存在于后期剪辑以及它有一个更平凡的这种交互

对然后高天是如何定位自己直播的内容对以及这中间会有哪一些比如说特别关注的也好或者是就是在内容输出方面会更注重的东西对直播跟视频特别特别不一样就是他俩虽然都是在 b 站这个平台上完成的事情但他俩确实

性质上很不一样直播你没有时间准备然后也没有时间就是做剪辑或者是怎么着你说出来什么就是什么对于我来说呢直播不是一个做内容输出的地方直播更像是一个聊天

就是和我的观众们也好或者粉丝们也好或者关注者们怎么说都行就跟他们一个沟通跟交流的过程有的人他就看你的视频他觉得是单向的是一个我在输出他们在输入的过程但直播不是直播他们可以聊天对吧他可以发弹幕他可以看我跟其他人聊天他可以自己跟我聊天

他可以听我说一些在视频里可能不适合说的事因为你视频就那么十几分钟的时间你不可能嫌扯对吧但在直播里面你可能有两个小时的时间你就可以扯一扯有的没的它不一定是跟技术有关的对吧比如说我有时候聊一聊在美国的生活或者比如说我去了趟拍抗我聊聊跟拍抗的故事就是更多的时候是如果说视频有一部分是我作为一个知识输出者

或者说我作为一个实事评论者在围绕着一个内容做我的观点输出或者是知识输出的话直播更多的时候是我作为一个人我作为一个 up 主一个真实存在的人在和对我感兴趣的人做沟通交流和互动嗯

直播时候有遇到过冷启动的问题吗就是一开始直播完全没人然后就很尴尬我还好因为我开始直播的时候已经有几万粉了就是最差最差的时候直播间里有几十个人如果你从零开始直播那当然是你冷的不行对吧我是先就作为 up 主已经有几万粉丝了我才开始直播的嗯

我想问一下高天老师就是视频发布出去之后如果有什么错误的话应该是相比于文字来说非常难改对吧因为我不知道 b 站你重新上传一个视频是不是就是重新的一个 id 之前的弹幕和评论会不会在新的视频上

所以我不知道他能不能改不知道这方面你有没有什么相关的经验要看这个错误多严重理论上说你是可以我改过一两次你可以如果是时间长度一模一样的视频你可以把上一个视频覆盖然后把弹幕挪到你的新视频上这个事情是可以做到的操作也没有那么复杂是可以的然后有的时候会有小错小错不太用改

比如说你字幕错了错错对吧或者你有时候有一两句不重要的口误口误就口误我大概有一次有一个问题说错了但我也就让他留在那有关 await 那个部分那个地方就是说错了我在下一个紧接着一个视频里面更正了一下但是视频也就放那我觉得谁不犯点错误对吧犯点错误没什么了不起的 ok 我们要不就到下一个话题

好啊,我们也还挺想知道高天老师平时工作主要在做的方向以及会觉得工作的状态是什么样的

还开心吗我在微软我在微软做的是操作系统安全然后我主要管的是 isolation 这一块我们最近呢就从打我入职开始我这基本上就在做同一个 project 叫做 win32 app isolation 简单的说呢就是在操作系统级别然后做一个类似 platform 的东西然后让 windows 的所谓 application 可以跑在可以理解为一个很轻的 container

这样的话你这个 application 在被 hack 了或者是出现 vulnerability 的时候它不会对你的操作系统造成过大的影响我不知道你们想听多深但是大概是大概是这么一个意思就是一个比较底层的平台然后给 application developer 用的它是用 windows 的 API 来做一个像 docker 一样的东西吗它没有 docker 那么重它实际上的核心是一个 token

就是我不知道你们熟不熟 UWPUWP 是曾经的一个也是这个方案但是 UWP 相对来说难度大一点就是因为你迁移的难度比较大我们是专门给 Win32 的 application 就是 Win32 的程序做了这么一个事它只要做一个简单的 package

然后相当于他的每一次运行的时候他身上都会带一个 token 简单的说就是如果非常快速理解他会带一个 token 然后他带这个 token 去尝试 access 其他东西的时候呢他就会遭到大量的拒绝就是他的权限会变得非常低大概是这么个意思

感觉涉及到很多 windows 的细节是对是的是的是它会涉及到很多 windows specific 的东西然后相对来说也比较底层吧就跟我的就跟他平时看到的我做的拍档的东西一毛钱关系都没有了对我就有一个很好奇的问题可能跟具体的技术没什么关系因为我也是我在职业中一直有的一个

就是困惑吧就是呃因为我发现你很难在你的全职工作中把你的那个工作和你的兴趣完全的对齐就是比如说我的兴趣是拍摄嘛然后我其实跟你一样然后你可能写 c c 加加然后基本也一直在写 c 加加对吧然后搞的东西和拍上一毛钱关系都没有然后你就感觉我就时常会想就是为什么我没有办法去让这两者匹配呢然后明明可以做的更好但是这样机会又非常少

你就会觉得有一点也不能说痛苦吧就是有点不甘心我不知道你会不会有这种想法还是说你其实也很引之为就是现在的这种日常工作

我的观点一直是尽量不要让你的兴趣成为你的工作因为很少有人会对自己的工作感兴趣不是说你把你的兴趣变成工作之后你就对你的工作感兴趣了很有可能干一阵之后你会发现你的兴趣没了而不是你的工作让你感兴趣了就是在工作这个过程就是你是一定会接触到一些比较恶心的事情但是在工作的话你逃不开你逃不开的时候有时候你就你干着干着觉得这东西怎么这么讨厌就你还会失去一个兴趣

其实说实话今年的时候我拿到了一个机会 VS Code 的 Python 的 DebuggerVS Code 的 Python Debugger 微软那个组邀请我去来着问我又想不想去我其实想了很久因为这个确实跟我的兴趣就百分之百 match 到了就去给 VS Code 做 Python Debugger 我想了一下然后还是拒掉了第一个是我刚才说的考量我怕把兴趣当工作之后兴趣没了第二个其实还有一些职业发展上面的

思考吧就是作为一个因为职业是需要你吃饭的你要考虑它的 security 对不对你要考虑你自己的可替代性你要考虑这个领域未来的发展前景可能综合考量之后我觉得现在这点还不错我觉得你要尽量不讨厌你的工作甚至有一点点喜欢但你不用那么喜欢你的工作工作就是工作我觉得对于绝大部分人来说无论这个领域你多么喜欢你在工作的过程中一定会产生让你讨厌的点

所以你就找一个还行的然后对吧就跟他就正常过日子然后下了班你再干自己想干的事想干的事那些兴趣有一个好处就是你不想干了你也不干对吧你这个东西你 C Python 这个东西我现在虽然是 core lab 但有的 issue 比如说提了我讨厌这个人今天刚看完一个 issue 这老哥语气不好我就不搭理他对吧 PR 不想 review 我就不 review 对不对这样你就可以能让你的兴趣保持足够长久因为你总在干你爱干的开心的事

对是的我觉得说有道理对那你有没有就比如说产生 burnout 的时候因为我知道很多做开源的人他们都会是不是有 burnout 像有些 Python 的核心开发者他们也提到过这个问题

挺正常的但是我一般我在 C Python 团队里没有那么重要就是在 PTB 这个方向现在是我是 maintainer 但是大家对 PTB 的抱怨不是很多要不然他也不会在一个没有人 maintain 的情况下活了那么多年对吧就是大家对 PTB 的要求没有那么高然后抱怨也没有那么多所以我当然会做累就坐一阵就觉得哎最近不想做然后我就想

歇一阵比如说我大概可能从成为 core dive 之后这一段就是休息的时间其实是偏多的很长时间都没有拉大量的 PR 就其中有一个原因就是因为在拍抗之前有那么两三周的时间我恨不得全职在 CPS 上因为我在赶一个 PAP

我再改派 667 然后再加上 PB 的一些 feature 我要在 Beta 之前做出来拍抗是正好是那个 3.13 Beta 嘛然后之前就没有 feature 往里进了所以那一阵非常的忙就是每天累到不行就是嘎嘎的在写然后那一阵写完之后参加完拍抗然后拿块 lab 回来然后自己就懈怠了好一阵但没什么就尽量不要让自己 burn out 吧因为我感觉可能因为我没有那么重要没有那么多人需求我所以我就觉得累的时候我就歇两周歇两周然后最近感觉状态恢复一点了再接着写呗

这就是兴趣的好处就你歇个两三周的没事工作就不行你说好老板我这三周先不干活那老板肯定说你咋不干活了对不对确实确实

Adam 你是要说什么吗还是我刚才就是会觉得这好像是一个就是 like9m 的问题然后包括高天的解答确实是包括我身边的人就包括我自己其实都会有一些这种误区就希望工作能够给你这种不论是编程上的乐趣还是说就是这种软件系统实现上的乐趣对但是这个就是如果总是在工作中追寻的话确实是有点难

我个人的观点是你很难在工作中收获你非工作时期编程得到的乐趣我觉得这一点非常非常难

主要是工作时候大部分时间都没有在编程也是有这种可能性但是就比如说哪怕是比如说做 product 比如说我做 withthreater 的时候跟 product 有关的东西我就做的很开心不管是宣传还是什么的做的挺有意思的但是工作就又不太一样我还是觉得工作的时候你始终是有压力的你就总要不得不干一些让你痛苦的事情在干这些痛苦的事情的时候你就会就是看这个东西就逐渐变得面目可憎起来所以

所以我始终没有尝试把我自己的工作和我的兴趣做百分之百的结合其实我对工作完全不感到痛苦然后相对来讲 Google 的文化也就还好我的感受主要是觉得你没有特别好的运用你的 skill set 并且你在工作中学到的一些 domain knowledge 可能就如果你对于那个领域没有特别感兴趣的话那

他可能也就说你学到那些知识并不能给你特别多的一些正反馈但比如说如果你比如说假设你进入他 faster c python 组那么你在做的过程中肯定会学到更多比如说关于 python 怎么运行怎么修改 python 的这种知识我觉得这个方面带来的这种反馈可能会更多一些不知道你怎么觉得其实 faster c python 组也邀请过我

这你都没去吗 Mark Cannon 当时问我想不想去当然就提了一嘴不一定 transfer 好转但是 Mark Cannon 确实问过我

我去这你都能拒绝我觉得这个是多少人梦寐以求的机会也是有很多也是有很多考量这是一个很好的机会了我承认是一个很好的机会然后如果我努力的话我觉得我是有希望我当时其实有些职业发展上的考量因为说实话我不知道这个组还能存在多久啊 make sense 你说这个我还真没想到这个是在 google 材料拍到听之前还是之后

跟 Google 材料那个 team 没关系因为 FasterCB 当年 Mark Shannon 的愿景是四年五倍嘛嗯四年五倍肯定是没有希望了但是这四年可快到了对吧四年之后就万一微软说哎算了就没几倍不几倍的就该干嘛干嘛吧那那时候多尴尬对吧我当时有这个考量所以当然也有很多刚才我提到过的考量但是确实 Mark Shannon 当时问过我说你想不想过来你要想过来的话我们可以帮你努力

OK 我觉得你这个考虑还是非常谨慎的

就像我刚才说的工作是工作兴趣是兴趣对我来说如果是我的话我毫无疑问会接受因为我的想法就是说就算比如说我被裁或者说最后发现它会让我兴趣磨灭但至少我体验过了就是我觉得我缺少一个这种体验然后这个体验是我想获得的我的主要感觉是这部分乐趣在 Faster C 派上工作的乐趣我其实是正在体验的我作为一个外人也在体验

只是我没有体验到它成为工作的这一个 Delta 的乐趣 OK 我每天也是在跟他们一起干活也在一起解决一事解决问题所以我当时是觉得其实更多的还是在职业规划上面的考量明白

还是想请教一下高天就是因为本身我们又要做 bjup 主然后白天还要工作对然后呢还要在 Python 社区做一些贡献再之外其实还有自己的生活所必备的时间嘛对那这个时间我们是如何分配的对以及有没有什么技巧也好或者说自己的一些这种想法来去均衡各种时间对

技巧其实我是一个很懒散的人说实话我是一个因为很多人从小就会给自己定一些时间上的 schedule 我是一个从来没有时间表的人我都是想到哪里做到哪里然后首先肯定是感谢这个微软没有把我的工作安排的太满对吧如果这个真的是每天工作很满的话呢说实话我既没有精力也没有能力去做其他更多的事情肯定所有事情都在工作上相对来说工作这个方向是比较轻松的这是一切的大前提

就是首先你的工作要不那么满你才有可能不一定是时间比如说你同样是 8 个小时可能这 8 个小时你不能干一些其他的事但是你拼命工作 8 个小时和你相对轻松的工作 8 个小时对于你工作之后的状态影响是非常大的

你工作之后你下班的时候你是想一头在床上躺着再也不爬起来吃完晚饭然后就歇着还是说我工作之后还有一些余力还有一些精力还想去写点代码这个状态可能是完全不一样的然后我不给自己定太多的目标比如说我一定要

每天比如说我让我 github 一直是绿的每天都有 commit 我从来没给过自己这些目标我有时候就是会觉得累了就歇一歇累了就歇一歇我从小就这样我就觉得哎最近累了歇一歇吧累了歇一歇吧 b 站这边呢是给自己一个小目标争取每周一更啊也没有那么远大然后去年 8 月份的时候我其实更累了我就觉得哎好好疲惫我说那我就歇几个月吧其实我就歇了几个月我有好几个月没有更新然后大概 11 月份可能再重新更新的所以对于我来说很多事情就是

如果这个事情可以放弃可以随时放弃那有时候你就没有那么迫切的要放弃它就是你可以撒撒手可以钻一钻给自己没有那么高的要求同时你告诉自己这个东西不是必须做的有时候可能反而你就想着有点时间把它做了吧也就做完了

我觉得你这个和我们做播客还挺像的就是特指我们播客就是我一开始也没有给补书者说设置一个比如说必须要月更怎么样半月更这样子然后我想到的唯一一条就是我们不要断更就是只要把它做下去我觉得就是成功所以可能不给自己设置一个这种严格的 schedule 也是我们能一直做下去的原因就至少不会太累

对我觉得有一个 schedule 有个问题就是比如说好我你说我周更然后你第一周没更你就说哎完了我有一周没更然后第二周再没更的时候你就想我有两周没更然后你就想我这一辈子永远也赶不上这个进度了就是我再也赶不上了我这两个 miss 然后你就会给自己很多负面的反馈而不是说两周没更就两周没更吧我从今天开始从今天开始更所以我觉得就是有时候给自己过多的时间上和内容上的要求反而会让你自己觉得你赶不上这个脚步了然后就放弃了

嗯 是的 是的 我很同意我觉得信涛你可不可以分享一下就是你写文章的一些想法因为我觉得你写文章写的还挺勤的然后我印象里你是抱着一种不一样的心态去做对吧就是你觉得一定要写出来

其实以前不是这样其实以前也都是写工作中遇到的一些问题可能我知道有些东西写出来也没人看因为这个问题太具体了很多人也不一定用了但是感觉写出来主要是给自己看的就感觉写出来这个文章的自我感觉它的逻辑它的原因比较有趣它的逻辑比较缜密然后结论比较有意思但可能没人看的这种对所以是有你说的必须要写出来的因为就是

写了很长时间了所以现在遇到一些事情就感觉必须要写出来但是我最近开始写系列因为我觉得想系统的写一个教大家怎么来诊断网络问题的那么个一系列文章然后我就是你们刚刚说的压力的问题让自己周更或者是 GitHub 每天都有 committing 的种我现在就有这种压力

要感觉最近有两个周比较忙所以已经没有写了然后压力一直在这里对如果没有这个之前我的博客一直基本上是有什么有意思的事情就写如果没有有意思的事情也可能有一段时间不写但是这样没有压力基本上还能保证十几年每个月都有新文章这样对所以现在反而压力还会大一些

就我之前看到一个有人在推特上分享的很好的图就是他是聊 consistencyconsistency 我不知道中文应该怎么翻我觉得也许可以翻译成持续性持之以恒类似这种吧然后他当时就列了一个图就是说比如说你每天都做什么事情是 consistency 然后你每个月做是 consistency 然后你没有规律的做但是你一直在做其实也是一种 consistency

就是我觉得因为现在很流行就是说我们要做一些计划表啊然后就是要把时间塞得很满然后要像做一个超人一样对吧去完成很多事情但其实这个我觉得就像刚才大家聊的我觉得不是唯一一条路径对你可以可能大家还是要根据自己的性格然后喜欢这种方式去采取适合自己的方式

对其实只要坚持无论是视频还是什么创作重要的是坚持的时间足够久假如说一个月有一个新的作品的话到 20 年 30 年之后也会积累很多的产出的重要的还是持之以恒吧就是坚持一直坚持下去

对我看在提纲里面还写了对程序员职业倦怠的看法其实我一直想聊一个话题就是我发现其实很多程序员尤其是硅谷的程序员他是不喜欢写程序的我观察到现象就是绝大部分我认识的人就是在 Google 工作的人他们下班之后是从来不会写自己的代码

就是他们我怀疑啊这个仅仅是我的怀疑就是他们甚至连自己怎么配一个这种开发环境都没有配过或者说就是没有想过去标写

我觉得这个其实就还挺有意思,就是可能他们我觉得是像高天说一样,就是把工作和生活完全分开,然后把工作就是当做工作,然后写代码仅仅是我的工作,不会影响我的生活,我觉得就这样子其实也是一种选择,对,我不知道大家有什么想法。

我首先有一个问题就是这种人肯定是我觉得就是工作环境跟社会环境肯定要允许这种人要生活的很好对吧因为他们只要把工作做好了但是我想问的是这种就是把工作跟生活完全分开只是做一份工作这样的人在硅谷的职业道路上会发展的怎么样因为在国内有一些就是国内的大公司的话

你如果这样做的话基本上你很快会遇到一个地方就是说你没办法再往上了就是说你不去卷不去做管理然后不去研究更高层的技术就是你可能得不到晋升这种就是可能发展的就不是很好了

我可能说的不是很清楚就是他们是在工作会做得很好然后工作该卷的地方也会卷只是不会在工作之外去做任何和技术相关的事情换句话说他的所有的技术只是为了服务于自己的晋升和维持生活对懂了那这样的话在每一个地方都会有这样的对就是这种人一般混得比较好

其实就是可能业余时间做开源真的是一件还挺吃力不讨好的事情吧就是对于我不知道大家怎么想但是就对于你的知识积累肯定是有帮助但是它对于你的就是我们就说直白点吧晋升或者说职业发展其实没有直接的帮助对我不觉得你应该为了自己的职业发展去做开源我觉得这是一个性价比极低的事情我觉得做开源只有一个原因就是你想去做开源

对但现在好像很多人真的是为了我觉得你要能从做开源这件事本身上得到快乐否则的话你真的没有必要做这个东西没什么失误过除了这种快乐就是你会看到很多人对毕业生说你们想要找一个好工作 GitHub 一定要有一些项目不能是一个空白然后就给人一种很功利的感觉

是因为首先开源这件事情它本身就是一个非常小众的事情因为它没有它是 no pay 的一个事情因为它如果有比较好的回报的话大家都去做了这个事情也不会被宣传成一个比较小众比较高尚的事情对吧然后因为它

比较小众很多人在做这个事情不求回报然后也比较高尚所以在招聘的时候会看着这些东西然后就给了他一个回报所以很多人就是去为了回报开始做这个事情了而且 Lac9M 说的其实它是我看到的是分两种情况了就是

首先大背景肯定是越来越卷所以说对简历的要求越来越高对但是你会看到在简历上能写 GitHub 的基本上就两种情况就是一眼你就能看出来这是一个为招聘准备的 GitHub 对就是虽然它有项目有提交但是严格来说它和开源没有太大关系对对

还有一类就是他确实是在开源社区有过贡献那这种的话其实是有加分的对其实这个很难伪造因为都是公开的你看一下他提交的 PR 微简历准备的一半都是一些非常速成的改 Table 之类的然后微简历准备的他自己的项目都是有可能 start 很多但是 contributor 基本上没什么人然后没有艺术没有 PR 对我们就进到下一个话题对

对就是最后一个话题就是推荐我想请高天来推荐一个高天自己认为说是有价值的想推荐给大家的任何的东西都是 OK 的我记得上次来这个博士说的时候我推荐的是我自己的改简历的一个网站但是最近简历收了太多了改得我头疼所以就不推荐给大家那个我改简历的网站了

我推荐一下自己的 b 站好像稍微有点太那个什么了我说实话我自己可能平时真正用到的其他人的东西是偏少的我这个人大概就这样包括作为 tracer 的时候其实也没有用到其他很多乱七八糟的这些库

所以如果大家对 profiling 感兴趣的话可能推两个现在市面上比较好的 profiler 一个叫做 PySpy 一个叫做 Scalin 这两个目前来说是市面上相对来说比较优秀的 profiler 然后可以跟 VStracer 一起用

然后这个 B 站呢就不说了直行球呢刚才聊过了最近有一个就是大家平常可能在那个做 coverage 的时候就是做自己 coverage test 的时候覆盖率的时候用的最多的是 coverage pack 啊

如果你没有听说过这个的话我就推荐这个 CoveragePy 是用到最多的这个 Coverage 工具然后但是我今年去 PyCon 的时候看到了另外一个这个跟 Coverage 有关的项目然后他用了最新的 System Monitoring 然后在 3.11 版本之前他用了一套比较复杂的系统然后让他比 CoveragePy 快非常非常非常多 CoveragePy 的 overhead 可能是好多个 X 甚至 10 以上个 X

它的 overhead 好像能做到 5% 10%就是极小的 overhead 会让你的 coverage test 变得快很多但是我突然忘了那个呼叫是什么了没事我们可以后期补在 show notes 里面它这个 5% 10%的话有没有可能直接把它放到线上运行室里面去然后我们就能知道哪些代码基本上没什么用哪些代码经常被跑你是 coverage 应该不太需要吧

叫 Sleep CoverSleep Cover 是一个这几年就是他刚开始做的时候呢是没有 System Monitoring 的他相当于自己实现了一个 System Monitoring 就是他自己实现了一个改 Bad Code 的事然后后来 System Monitoring 出了之后然后他就可以用 System Monitoring

Sleep Cover 然后做 Sleep Cover 的团队就是做 Scalen 的团队他们是同一个团队就同一个那个大 organization 下的团队所以大家可以如果你觉得 CoveragePy 平时你跑 CoveragePy 跑得太慢的话可以看一下这个 Sleep Cover 然后这个做的还不错就完成度挺高的这玩意不会又是用 Rust 写的吧好像是 C++ PythonOK 终于有一个新的 Python tooling 不是用 Rust 写的了挺好

我对 Rust 并不是有什么偏见只是我们之前好像聊了很多用 Rust 写的 Python 工具因为 Astral 拼了一个 Rust 团队我去 PyCon 的时候遇到了好多他们的人包括 Carl Mayer 现在也加那个团队去了就感觉 Astral 他们在 Python 社区影响还挺大的特别是这种就是贡献了很多这种 Rust 写的工具对他们整了一大批那个 CoreDive 过去

说到这个那他们其实不就是把兴趣当全职工作了吗感觉好像也挺好的

有的人会更喜欢自己的工作就是更觉得他是兴趣有的人可能差一些但是我相信哪怕他们做这些明面上是他们兴趣的事情他们也会在工作中遇到很不想解决并且如果这件事不是他的工作他可以不去解决的问题所以我的感受就是这样当然他们可能工作的会比其他很多人更快乐一些世界上是会有这些人的你还有什么要推荐的吗好像就差不多了吧

我看有人写了复杂录陷阱那个是高天之前提到的他的视频刚才聊了实验复杂录的时候我提到了一个 B 站的视频正好在那个视频里面聊一聊跟实验复杂录有关的事情信涛和 LAC9M 有什么想推荐的吗我推荐一个 B 站的 up 主叫历史调研室我不知道你们有没有听说过我最近在你的 channel 里面看到过

对那个他是算 B 站的一个百搭 up 主吧历史调研室然后他就是讲一些近代的历史人物着重于就是一些政治家吧比如说像李光耀啊然后罗斯福这种他就是他的视频给我一种看明朝那些事的感觉就是他讲得非常好然后就是文案写得也非常有水平对算是我在历史领域最推荐的一个 up 主大家可以看一下

了解那我来推荐一个 Python 的标准库吧因为前段时间刚好顺手用到了然后之前其实是想写篇文章来介绍的但是因为懒嘛对我就先来推荐一下吧就是那个 Python 3.7 引入了一个库叫 context-wise 对然后对应的是 pep555 对为什么推荐这个是因为其实在工作的场景中会发现有一些场景如果

是用勾浪写我们有勾浪的 context 的话会很方便不是说这种并发控制层面的而是一些它真的是贯穿整个你的逻辑的 context 需要的一些东西

我举一些例子就比如说和可观测相关的比如说和这种 I18n 相关的如果你是某一个特别底层的东西你不可能说我给左右调用的函数都去拓展这个参数然后贯穿的去调用下去就会显得很丑

对在 Python 里对那其实在 Google Land 里的话是能通过 Context 解决的然后 Python 的话它在 3.7 引入这个 Context-wise 也会能够方便我们去解决一些类似的这种场景吧对但是之前看的时候我发现好像中文社区就没有什么人提这个苦对一个很有用难道是因为中文社区不怎么做 web 开发了我不知道对但是还是想推荐一下这个苦

其实我感觉 Python 里有很多这种鸡脚嘎啦的 module 就是很少有人知道但其实很有用对就是这些 module 其实它可能会对应一些在某些场景下是很方便很有价值的好啊那我们今天的播客就录到这儿要继续推荐的我们就好谢谢就这样好的谢谢大家拜拜拜拜拜拜