从满腔热血到想删库跑路,神级程序员的开源苦与乐

by admin on 2020年4月11日

著名的 Python 开源网络库
Requests 的开发者 Kenneth
Reitz 发文分享了他的心路历程:满腔热血做开源项目,却被来自项目用户的无止境的请求让自己疲惫不堪,甚至一度想把代码都删了。最终,重新寻找编程以外的生活乐趣,平衡工作与生活。

原标题:累到想删库,程序员职业倦怠的真实现状

最近德云社演员“有房有车还募捐”的事情正在发酵,开源圈里关于技术募捐也曝出了丑闻,主角是知名
Python 库 Requests 作者 Kenneth Reitz。

大家应该都曾有过写一整天代码的经历,那你们会不会突然有一种感觉,觉得即使编程是你最喜欢的事情,但这一刻却宁愿去随便干点别的也不想碰代码了。

编译:伯乐在线/飞哥的咖啡

Python async/await-native I/O 库 Trio 作者 Nathaniel J. Smith
发文详细说明了 Kenneth Reitz 在 Requests 3
的开发过程中如何滥用社区用户的捐款的。

倦怠,是软件开发过程中的一个非常现实的现象。特别是在创建和维护有大量用户的开源项目时,更是容易出现。我也经历过,在此想分享一些个人的经验。 

【伯乐在线导读】:Kenneth Reitz 是一个知名的程序员,特别是在 Python
圈,他编写了 Requests / Records / Maya 等著名 Python 库,出过书《The
Hitchhiker’s Guide to Python》。他在从 2001 年起就职于 Heroku,同时还是
Python 软件基金会董事会成员。对了,他以前还是个大胖子,2016
年后来减肥成功。他喜欢街拍,并且还是一个电子音乐制作人。

2017 年 8 月,Nathaniel 开始为 urllib3 添加异步支持,urllib3 是 Requests
使用的底层 HTTP 库,该支持是是高度实验性的。Kenneth
对这项工作非常感兴趣,他非常希望在 Requests
中提供异步支持,但是自己又不知道怎么做。于是他开始招募志愿者以 Nathaniel
的方式去开发。

前进路上不可避免之痛

澳门新葡亰信誉平台游戏 1

几个月之后,Kenneth 宣布 Requests 3 的工作开始,并且首要新特性就是
Nathaniel 正在进行的原生 async/await 支持:

2011
年,我为自己制定了开源目标,并为此努力。幸运的是,我非常成功。随着人气升高,我也有了继续构建新项目的动力。同时,原有项目的大量支持用户群的需求和维护的负担压力也在增加。

很不幸,倦怠在软件开发中是一个非常真实的现象,尤其是创立并维护一个具有大量用户的开源项目。就这个话题,我深有体会。所以我来分析我的个人经验。

澳门新葡亰信誉平台游戏 2

澳门新葡亰信誉平台游戏 ,这看起来就是我想要的,对吧?

即使软件编程是你在这世上最喜欢的活动之一,每个整天写代码的人都会经历这样的事情,突然感觉“我想做别的事情,而不是坐在这写代码”。

同时,Requests 3
项目发起募捐,以实现这一目标。很快许多个人与微软、谷歌与 Slack
等大公司都进行了捐款,筹款达到了 3 万美元左右。

差点就发生的 410 GONE

你突然意识到,你已把冰激凌当成三餐,持续吃了好几年。你已厌倦了冰淇淋,不想再看到它。但偶尔吃冰淇淋的人不明白这一点,他们会想:你怎么会不想要冰淇淋了呢?——
Gary Bernhardt

随后 Kenneth 联系 Nathaniel 讨论筹款活动,Kenneth
表示不知道如何处理这笔钱,他说最初的目标只是筹集 5 千美元来买一台电脑。

记得有一天,我躺在沙发上,重新评估我的生活。我发现自己对软件的 political
issues 非常在意,这本身就是一个问题。不仅如此,我过于关注 Twitter
上那些关注我的人的意见。

我对软件开发的倦怠情况有一些个人经验,还有几个如何正视、防范和简单应对的小窍门。

Nathaniel 心里觉得 5
千美元都可以买一台强大的服务器或者高端游戏设备了,跟开发 Requests
没有什么关系,Requests 是一个小的纯 Python
库,使用任何便宜的笔记本开发都完全没问题。但他同时也理解,即使花了 5
千美元购买一些不相关的电脑,也可以将这笔费用认为是对过去的工作进行的一种补偿,而且还会留下
25 000
美元来履行他在筹款活动中所作出的承诺,不管怎么说这对于开发出一些令人惊叹的新功能其实是有帮助的。

当认识到这一点,我意识到着是一个很大的问题,应该立即停止。我的第一个想法是拉出所谓的
410 GONE 。当然,最终我没这样做,但是我确实有很认真的想过。

目标的必然衰败

于是 Nathaniel
提供了一些筹款和拨款的经验,强调了保持信任的透明度的重要性,并建议
Kenneth 与 Python 软件基金会(PSF)或类似的非盈利组织建立财政赞助关系。

编者注:410 GONE
可以看成是“资源已永久失效,并且服务端希望客户端“忘掉”它”的意思,代表人物是
Python 开发者 Mark Pilgrim ,他是 Dive Into …
系列编程书籍的作者,比较出名的是 Dive Into Python
。因不明原因,突然将他的 GitHub、Google+、Reddit、 Twitter
账户全部删除,他的所有网站都变成了 410: Gone 。

在 2011
年,我为自己设定了一些开源社区的目标后,我很努力地为此工作,有着好运相伴,我取得了成功(特别是
Requests
项目)。随着项目的人气不断攀升,我对继续创建新项目的动力下降了。同时,为了满足成功项目带来的大量用户群所提出的要求,我的负担越来越重,而维护项目的压力也在不断增加。

同时 Nathaniel
试图帮助找到有效利用这笔捐款的方法,例如联系志愿者,邀请其他人参与有偿开发
Requests 3;并且在后来他离开 UC 伯克利时,还希望能够全职去参与到
Requests 的开发中。

在我看来,这是倦怠期最直接的缩影和最坏的情况。我一度也非常想从 GitHub
删除所有的项目,从 SpeakerDeck
中删除所有的痕迹,注销网站,并且平静地度过以后的生活。

这是我想要的,是吗?

然而在这个过程中,虽然 Kenneth 也有对 Nathaniel 在 urllib3
上的工作进行一些实验,添加了一些基本的 HTTP/2 支持,但是 Nathaniel
早就提示过这种方法不可行,最后 Kenneth 的这些代码实际上也没法用。

但是,我没有。为什么?因为这些都是这个世界上对我很最重要的东西。为什么我要去摧毁自己努力创造的东西,并为此感到自豪?

倦怠十分狡猾,它悄然而至。它慢慢地折磨你,直到你认为这种感觉已经成为了新常态,这时你再也无法轻易跳出自己挖的坑了。——
Zach Holman

同时其他社区成员也听到了关于募集到的这笔资金去向的不同版本。

选择

410 GONE 网络失踪

几个月后,Kenneth 在回复 Nathaniel 的邮件中提出了以下几点内容:

所以,我决定找出问题的根源并解决。我意识到问题是因为正在让太多的人进入我的世界,没有足够的放权委托给人去帮助维护我的项目。我不想失去自己在社区中最大的价值 –
希望能够影响我关心的软件世界。

我记得曾经有一次,我躺在沙发上,也就是我现在坐的地方,一边解决新出现的慢性偏头痛
(NDPH),一边回顾我的生活。就像看推文一样,我不断地刷新并思考过当时软件世界中的一些政治问题,我发现自己对这些事情非常紧张,这本身就是一个问题。不仅如此,而且我过于在意我在推特上关注的人提出的公开观点,

  • 他实际上只筹集到了 2 万 8 千美元
  • “大部分”都是税
  • 他希望 Nathaniel 完成(Kenneth)在 Requests 3 中为新功能所做的承诺
  • 但是完成功能并不会支付他资金,相反,需要等功能实现后,把这 2 万 8
    千美元用于编写文档
  • 如果 Nathaniel 不能在志愿地去实现功能,Kenneth
    鼓励其发起自己的筹款活动

所以我的目光不再追随 Twitter
上的任何人,不再关注技术趋势和阅读黑客新闻。我进入仅发布(publish-only)模式。

一旦我认识到这一点,我立刻意识到这是一个很严重的问题,必须立即停止它。我的第一个想法是提出所谓的“410
错误”情况。当然,我没有这样做,但是我很重视这个问题。

也就是说 Kenneth 想让 Nathaniel 无偿地去开发 Requests 3
那些承诺好的异步功能,而且这笔筹集到的捐款去向也不明不白,甚至最开始募捐也是没有在
Nathaniel 本人承诺会完成异步功能的情况下发起的,而实际上完成 Python
原生 async/await 支持很难。Nathaniel 震惊了,并且拒绝了这个想法。

我认为这是一个不错的举动,也曾经在许多其他开发者身上看到(虽然通常是隐性的),这是从开源软件开发的压力中恢复的好方法。从各种“噪音”中放松自己,休息一下。

410 GONE 是 Mark Pilgrim 的一个沸沸扬扬的举动,他作为 Python
的开发者以及一个普通人,因为一些未知的原因,选择将自己从开发者社区隔离。我认为这可能是因为他感受到了来自开源“领导者”地位的压力,想要保持自己的身份认同。他突然从互联网上删除了所有的公共代码,这样所有的用户只能重新定向,访问其他非官方镜像。

伯乐在线补注:Mark Pilgrim 是《Dive into Python | 深入
Python》的作者。他不仅删代码,并且他的社交账号
GitHub、Google+、Reddit、Twitter,也全部清空了。

Kenneth
没有回应,之后他删除了网站上筹款页面收到捐款记录的页面,以及他承诺的回报(before/after)。同时更新了
Requests
文档及其博客,删除了对已删除页面的引用(before/after)。

委托

在我看来,这是倦怠周期的缩影以及最坏的情况。我差一点就从 GitHub
上删除所有的项目,从 SpeakerDeck
上删除所有演讲的幻灯片,搞掉我自己的网站,然后在平静的生活中继续前进。

在博客中 Nathaniel 明确指出:“实际上,他公开承诺如何使用 Requests 3
资金是彻头彻尾的谎言,他没有表现出任何悔恨,甚至不明白这是一个问题。”

当有成千上万的人,甚至里面还有你的同事,在积极地使用你的软件时,如果你是项目的唯一“联络点”,你会很容易崩溃。所以,我学会了以新的方式委托和协作。

但最后我没有这样做,为什么?因为这些是世界上对我最重要的事情。为什么我要破坏那些我努力创造、引以为傲的东西?

Effectively, his public promises about how he would use the Requests 3
money were lies from start to finish, and he hasn’t shown any remorse
or even understanding that this is a problem.

通过 Requests ,我找到了两个 co-maintainers 来处理 issues
和诸如安全版本之类的事情。这大大减轻了项目对我的压力,同时也让他们成为了
Python 社区非常活跃的成员。

“只发布”模式

Requests
一直以来享有“以人为本”的美誉,然而发生在作者身上的这件事情,同时也让
Nathaniel
觉得“在互动中非常容易被操纵”,“我觉得他试图利用我,并试图让我同谋掩饰他的谎言以保护他的声誉。我对与此相关的想法感到非常不安,在他造成的这种情况下,我唯一的其它选择就是要么完全放弃异步工作,要么全身心地公开,这对我自己造成潜在的严重损失。”

寻求平衡

所以,我决定找到问题的根源,并解决它们。我意识到,我的世界已经挤入太多人,没有委派足够的人手,并且需要他人的帮助来维持我的项目。我不想失去我在社区中珍视的位置,它能够影响这个我极其重视的世界。

最终,为了自己与 Python 社区,Nathaniel
决定把事情公开。他呼吁 Kenneth 对他筹集的资金以及如何使用进行公示,敦促
Requests 项目维护者将他们的项目转换为更正常、功能更少的管理模型。

上面说的这些都是很多年前的状态,如今的我拥有一个很好的平衡,过着和社会上的许多人一样的健康的生活,尽管仍然一直很忙。我花了大量的空闲时间在自己的爱好上,比如音乐制作和摄影,甚至还发布了一张专辑,出版了一本书。

所以,我选择取消关注推特上的所有人。我停止关注科技趋势,也不再阅读
Hacker News。我进入了“只发布”模式。

原文:

在编写代码之外,拥有其它的兴趣,是非常重要的。

这是一个重大的举措,就和我见过的很多其他开发者一样(一般比较隐晦,并不明确),这是一个从开源软件开发中,缓解压力的好方法。远离喧嚣,善待自己。

  • https://vorpus.org/blog/why-im-not-collaborating-with-kenneth-reitz

虽然我依然没有达到梦想中的休闲地编码的状态,但如果再来一次我还会这样选择。我不觉得我错过了任何东西,但起码我的夜晚不再像以前那样只有代码。

今天,我在社交媒体上关注了一些人,人数不多,但足以让我处于一个相对较忙的状态,而过去很长一段时间我都过于忙碌了。这一切很容易就能实现。

(文/开源中国)    

开源就是协作。如果你发现自己被过分榨取,也许你需要找到新的方式与他人合作,来帮助把事情做好。
你会发现,其他人也会愿意像你一样尽力把事情都做到最好。

委派

<本文由开源中国编译,英文原文:The Reality of Developer
Burnout>

当成千上万的活跃用户使用你的软件,或即使只有你的同事时,你很容易感到懈怠,因为你是项目的唯一联系人。所以,我已经学会以新的方式委托并加强合作。

作者 Kenneth Reitz (GitHub
主页)是著名的软件工程师、国际主讲人、开源倡导者、街头摄影师和电子音乐制作人,同时也是
Python 软件基金会的董事会成员,以众多的开源软件项目而闻名。

针对 Requests
项目,我有两个合作维护者,他们帮忙处理收到的问题(issues),并解决诸如安全更新的事情。这大大降低了项目施加在我身上的压力,也帮助他们成为了
Python 社区的活跃分子。

澳门新葡亰信誉平台游戏 3

我今天的平衡生活

(文/开源中国)    

所有的这些都是许多年前的事了,如今我的生活已经取得了一个良好的平衡。我在个人的兴趣爱好,如音乐制作、摄影上花费了大量的空闲时间(我甚至今年要出一张专辑)。我今年出版了一本书,另一个人花了大量的时间与精力参与其中,这本书的出版离不开他/她的鼎力相助。

有着写代码以外的爱好,实在是太重要了。

我没有和往常那样,将编程作为一项娱乐消遣的工作,但我将再一次重新出发。我不觉得现在缺少了什么,但我的夜生活已经不同往昔,不再
100% 被代码完全占据了。

开源的本质就是合作/协作。如果你发现自己倦怠了,累了,也许你需要找到一种与他人协作的新方式,来帮助你做最好的事情。你会发现,其他人可以通过做他们擅长的事,来帮助你做自己擅长的事。返回搜狐,查看更多

责任编辑:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图