Free Redis数据库引擎的开发者和维护者Salvatore Sanfilippo发布几个月前,我是由一个系统开源项目的维护者编写的,该项目具有相当大的活跃社区。 他写道,多年来他一直在努力支持自己的项目,但正遭受严重的心理压力。 我征求意见。 我回答说我几乎无法提供建议,但是我答应写一篇关于我对此的看法的博客文章。
几个星期过去了,我开始写几次这个文章,然后停止了,因为我没有时间去仔细考虑它。 现在,看来,我已经完成了对自己的弱点,困难和对自由的渴望的自我分析。 当人们专注于某项任务时,这些感觉不可避免地会包含在人类的思想中,并且负面的情绪会长期显现。 当然,支持开源项目也带来了很多欢乐。 我职业生涯的最后十年肯定会铭记很长一段时间。 这些是好年,尽管不是最好的年(发布期间更有趣)。 但是在这里,我将集中在负面方面。 请记住,有积极点。
请求雪崩
我不相信“快速行动”,“快速思考”,“长期胜利”之类的东西。 我不喜欢肤浅的世界,因为社交网络,聊天室,电子邮件和充满活动的日程安排,使我们所处的生活缺乏专注和关注。 在Redis的早期,我还有很多时间。 当这封信到达时,我可以冷静地关注作者想说的话。 我可以回想起Redis代码的相关部分,在仔细考虑了这个问题之后,终于表达了我的真实想法。 我认为,不管他们从事什么工作,大多数人都应该这样工作。
当像Redis这样的软件项目开始流行时,人与人之间的交流就象现代社交工具中那样被简化了,那么一切都会改变。 用户将您视为无生命的实体,并且消息,问题,请求和建议的数量呈指数增长。 但是与此同时,在Redis社区中(尽管在我看来这是一个普遍的问题),能够熟练回答这些问题的人数增长非常缓慢。 明显的拥塞被创建。 大多数人对此问题过于务实。 如果首发选手在两周内未回答我们的问题,我们将关闭门票。 用模糊的措辞关闭所有票证。 以及其他机械清洁流的选项。 但现实情况是,良好地处理审核需要时间。 否则,您只是假装该项目几乎没有待售票。 拥有大量资源来聘请有薪的全职专家来为每个Redis子系统提供一整天的支持是很好的,但是实际上这是不可行的。
那到底是怎么回事? 您开始优先考虑更多事项:要考虑什么,而不要考虑什么。 您会感到无所适从,而忽略了如此多的问题和如此众多的人,而贡献者则认为您并不关心他们的工作。 这是一个困难的情况。 通常,最后只能解决关键问题。 所有新功能都被忽略了,因为新功能还没有成为基本功能,谁想增加代码库,获得更多拉取请求和问题? 您可能开始编写比平常更多的混乱代码。 代码越混乱,在发生严重错误时跟踪根本原因就越困难。
角色变更
由于上述要求大量涌现,您的工作也突然发生了变化。 Redis之所以变得流行是因为我有点知道如何设计和编写代码。 现在,我主要处理问题解决和请求请求。 而且,与这些拉取请求相比,我自己似乎总是会编写更好的代码。 尽管有时代码比我自己做的要好,因为Redis社区中有更好的程序员。 但是
大多数只是为了解决一个特定问题而写。 虽然我始终代表整个系统,但是由于我从事该系统已有多年的经验。 但是没有更多时间这样做了。 因此,大型新功能很少有机地集成到主代码中。 该怎么办? 有时我会花几周的时间在门票上并提出请求,因为我是通过编码或设计来完成的:这是我真正喜欢并喜欢的作品。 但这反过来又增加了心理压力,因为我无视每个人。
做我爱做的事并且知道如何做得好,你必须觉得自己很烂。
时间
至少对我来说,在一个项目上进行长时间工作存在两个问题。
首先,在Redis之前,我每个工作日都没有间断。 我可以一周工作,停两个月,然后工作一个月,再消失两个月。 总是 人们需要充电,获得新的能量和想法,获得创造力。 高级编程是一项创造性的工作。 Redis本身在最初的两年中就是这样生活的,也就是说,它以最快的速度发展。 因为我想要工作时的总工作量要大于每天必须以可持续方式工作的时间。
当我一个人工作时,我可以负担一个免费的时间表。 一旦我开始从Redis Labs赚钱,我的道德准则就不再允许这样做。 我不得不强迫自己按正常的时间表工作。 这是我与自己的一次认真斗争,我已经奋斗了很多年。 而且,我敢肯定,由于这个原因,工作的质量和数量下降了,但是没有什么可做的:一切都安排在这个世界上。 我没有找到解决此问题的方法。 我可以告诉Redis Labs我想回到原来的时间表,但这没有任何意义,因为此刻我正在向社区而不是向公司“报告”。
另一个问题是,在一个项目上从精神上来讲,很多工作也是一件困难的事情。 过去,我每六个月专门更改一次该项目。 我从事同一件事已经十年了。 为了保持头脑,我在Redis中启动了子项目。 一旦我建立了一个集群,另一个就是磁盘存储(现在已经废弃了),然后是HyerLogLogs等。基本上,这些东西对于项目很有用,但从本质上讲,它们是另外一些东西。 但是最后,您总是返回带有票证和拉取请求的同一页面,并且每天都执行相同的操作:“由于超时,副本已断开连接”,依此类推。 好吧,让我们再处理一次。
恐惧感
我一直担心在项目中失去技术领导地位。 不是因为我不擅长设计和开发Redis,而是因为我知道我的道路与大量用户想要的东西以及大多数IT人士认为是好的软件都不匹配。 因此,我必须在我认为是好的设计,一组功能,开发速度(缓慢),项目规模(最小)以及应该提供给大多数用户的东西之间保持平衡。 幸运的是,有一定比例的Redis用户非常了解Redis-way,因此至少我会不时得到一些支持。
意见分歧
有些人很混蛋。 它们无处不在,这很自然。 我认为,与其他领域相比,编程方面的人才更多。 但是总有一定比例的绝对混蛋。 作为受欢迎的OSS项目的负责人,无论如何您都必须与他们打交道。 也许这是我在Redis开发过程中处理的最紧张的事情之一。
徒劳
在我看来,有时候,即使最出色的软件,也永远不会永远持续下去,它是文学的杰作。 请注意,这不是由于其质量,而是其功利功能的副作用……在实践中很有用。 这就是为什么会有一些更有用的东西来代替它的原因。 我想有时间上其他课。 因此,有时最终我的所有工作似乎都是徒劳的。 我们设计和编写系统,但是随后会出现新的系统。 通常,至少有一个应用程序程序员,而不是一个具有“大创意”的理论家能够留下任何痕迹吗? 我认为我不时有机会研究出色的想法,但我专注于编写软件,而不是思考它。 因此,我不能在这方面发挥自己的潜力。 这是冒名顶替综合症的反面:很抱歉必须保持谦虚。
尽管如此,我仍然能够工作很多年,做我真正喜欢的事情,这给了我朋友,认可,金钱。 这并不是说这很糟糕。 但是,我完全理解,一旦他们的项目开始流行,人们就会面临巨大的挑战。 本文专门针对他们。