幾個(gè)月前,我收到一封電子郵件,發(fā)信人是一位系統(tǒng)軟件領(lǐng)域開(kāi)源項(xiàng)目的維護(hù)者,該項(xiàng)目有一個(gè)相當(dāng)大且活躍的社區(qū)。他在信中說(shuō),維護(hù)多年之后發(fā)現(xiàn)難以持續(xù),因?yàn)檫@樣的工作在心理上非常累人。
他一直在向我尋求建議,我不確定自己是否能夠提供建議,但我回他我會(huì)寫(xiě)一篇博客來(lái)說(shuō)說(shuō)我的看法。
幾周過(guò)去了,有好幾次我開(kāi)始提筆,但都停了下來(lái),因?yàn)槲覜](méi)有足夠的時(shí)間來(lái)處理這些想法。現(xiàn)在我想我能夠分析我自己,在我自己的弱點(diǎn)、掙扎和對(duì)自由的渴望中找到答案,當(dāng)人們?cè)谧鲆恍┦虑榈臅r(shí)候,不可避免地會(huì)侵入他們的思想,這些事情也有消極的一面,持續(xù)很長(zhǎng)一段時(shí)間。
維護(hù)開(kāi)源項(xiàng)目也是一件非常快樂(lè)和有趣的事情,我最近 10 年的職業(yè)生涯,即使不是絕對(duì)最好的,但肯定是令人難忘的,畢竟我在創(chuàng)業(yè)期間獲得了更多的樂(lè)趣。然而,本文我將關(guān)注維護(hù)開(kāi)源項(xiàng)目的消極一面。
洪水效應(yīng)(Flood Effect)
我不相信快速行動(dòng),快速思考,按時(shí)贏得比賽等等。我不喜歡我們生活的世界總是缺少焦點(diǎn),因?yàn)樯缃?a target="_blank">網(wǎng)絡(luò)、聊天、電子郵件和滿滿的活動(dòng)安排。
所以,當(dāng)我在項(xiàng)目早期收到一封關(guān)于 Redis 的郵件時(shí),當(dāng)我還有很多時(shí)間的時(shí)候,我就能夠?qū)W⒂诎l(fā)信人想要告訴我的東西。然后我想起了我們之前討論過(guò)的 Redis 的相關(guān)部分,經(jīng)過(guò)仔細(xì)的思考,我終于用真實(shí)的想法回復(fù)了。
我相信大多數(shù)人都應(yīng)該這樣工作,不管他們的工作是什么。
新的社交工具讓個(gè)體之間的溝通更為便捷,當(dāng)某個(gè)軟件項(xiàng)目到達(dá) Redis 級(jí)別的熱度之時(shí),你能收到的消息、issue、Pull Request 和建議,其數(shù)量將呈現(xiàn)指數(shù)級(jí)增長(zhǎng)。
這造成了信息堵塞。大多數(shù)人試圖用錯(cuò)誤的方式來(lái)解決這個(gè)問(wèn)題,比如:
① 有人發(fā) issue,我追問(wèn)后,2 周內(nèi)他都沒(méi)有回復(fù),那直接關(guān)閉;
② 關(guān)閉所有不明確的 issue;
③ 直接把收件箱都設(shè)為已讀;
想要很好地處理社區(qū)反饋,必須花時(shí)間。否則只會(huì)假裝你的項(xiàng)目有少量的公開(kāi) issues。為每個(gè) Redis 子系統(tǒng)雇傭核心級(jí)專家,讓他們?yōu)殚_(kāi)源項(xiàng)目全職工作,這方法能奏效,但不切實(shí)際。
那么會(huì)發(fā)生什么呢?你開(kāi)始把事情分輕重緩急,優(yōu)先級(jí)高的事情越來(lái)越多。你覺(jué)得自己是一坨狗屎,因?yàn)槟愫鲆暳四敲炊嗟娜撕褪拢邑暙I(xiàn)者認(rèn)為你不在乎別人給你什么。
這是一個(gè)復(fù)雜的情況。通常最終的結(jié)果是,形成一種主要處理關(guān)鍵 issues 的態(tài)度,但忽略所有新東西,因?yàn)樾聳|西還沒(méi)有進(jìn)入核心,而且誰(shuí)想擁有一個(gè)更大的包含更多的 PR 和 issue 的代碼庫(kù)? 與您通常的編程風(fēng)格相比,它的編寫(xiě)方式可能更加復(fù)雜。
角色轉(zhuǎn)移
由于上述“洪水效應(yīng)”問(wèn)題的暴露,你也突然換了工作。Redis 之所以流行,是因?yàn)槲覒?yīng)該能夠設(shè)計(jì)和編寫(xiě)軟件。不過(guò)現(xiàn)在我的大部分工作是研究 issues 和 PR。
(Redis 的 issue 和 PR 數(shù)量,2019-06-04 截圖)
我收到的許多貢獻(xiàn),我也覺(jué)得我能做得更好。但有些人會(huì)比我做得更好,因?yàn)橛斜任腋鼉?yōu)秀的程序員在參與 Redis。
但就本質(zhì)而言,“大多數(shù)”都是平均貢獻(xiàn),它們只是為了解決某個(gè)特定問(wèn)題而編寫(xiě)的,而這個(gè)問(wèn)題是由提交它的人決定的。
然而,當(dāng)我為 Redis 設(shè)計(jì)時(shí),我傾向于認(rèn)為 Redis 是一個(gè)整體,因?yàn)槲一藥啄甑臅r(shí)間來(lái)寫(xiě)這個(gè)東西。所以你擅長(zhǎng)的,你沒(méi)有時(shí)間去做。這反過(guò)來(lái)意味著更少的有機(jī)新功能。
我的解決方案是?有時(shí)我好幾個(gè)星期都不去看 issue 和 PR,因?yàn)槲衣耦^在編程或設(shè)計(jì),那是我真正熱愛(ài)和喜歡的工作。然而,這反過(guò)來(lái)又給我?guī)?lái)了更多的心理壓力。做我喜歡做的事,我可以做得很好,但我感覺(jué)很糟。
時(shí)間
至少對(duì)我來(lái)說(shuō),在一個(gè)項(xiàng)目上工作很長(zhǎng)時(shí)間有兩個(gè)問(wèn)題。
首先,在 Redis 的經(jīng)歷之前,我從未每周都工作。我可以工作一周,休息兩周,然后工作一個(gè)月,然后消失兩個(gè)月。總是這樣。
做創(chuàng)造型工作,人需要充電,獲得新的能量和想法。高水準(zhǔn)的編程,特么就是一項(xiàng)的創(chuàng)造型工作。
在最初的兩年里,Redis 就是這樣創(chuàng)建的。也就是說(shuō),當(dāng)項(xiàng)目以最快的速度發(fā)展時(shí)。因?yàn)楫?dāng)我想工作的時(shí)候,我的工作效率比我每天被迫以穩(wěn)定的方式工作時(shí)的效率要高。
然而,當(dāng)我獨(dú)自為公司工作時(shí),職業(yè)道德允許我有一個(gè)中斷分散的時(shí)間安排。在我開(kāi)始接受 Redis 的工作報(bào)酬后,職業(yè)道德再也不可能允許我像以前那樣,所以我開(kāi)始強(qiáng)迫自己在正常的時(shí)間安排下工作。
這對(duì)我來(lái)說(shuō)是一場(chǎng)巨大的斗爭(zhēng),已經(jīng)很多年了。我確信我做的比我能做的少。
我從來(lái)沒(méi)有找到解決這個(gè)問(wèn)題的方法。我可以說(shuō) Redis Labs 我想回到我原來(lái)的時(shí)間表,但這是行不通的,因?yàn)槲业膱?bào)告對(duì)象已經(jīng)是社區(qū),而不是公司。
另一個(gè)問(wèn)題是,從心理上講,在同一個(gè)項(xiàng)目上做很多工作,也是一件復(fù)雜的事情。
過(guò)去我每 6 個(gè)月就換 1 次項(xiàng)目,但 10 年來(lái)我一直在做同一件工作。
在這方面,我試圖通過(guò)在 Redis 中包含子項(xiàng)目來(lái)保持理智。一次是集群,另一次是磁盤(pán)存儲(chǔ)(現(xiàn)在已經(jīng)廢棄),還有一次是 HyerLogLogs 等等。
基本上,那些為項(xiàng)目帶來(lái)價(jià)值的東西,單獨(dú)來(lái)說(shuō),是其他的東西。因?yàn)樽罱K你必須回到 issue 和 PR,每天處理相同的事情。“副本由于超時(shí)而斷開(kāi)連接”,或諸如此類。我們?cè)賮?lái)研究一下。
恐懼
我一直擔(dān)心失去項(xiàng)目的技術(shù)領(lǐng)先地位。這并不是因?yàn)槲以谠O(shè)計(jì)和開(kāi)發(fā) Redis 不夠優(yōu)秀,而是因?yàn)槲抑牢业姆椒ú⒉环希孩?大量用戶的需求,② IT界的大多數(shù)人對(duì)軟件的看法。
因此,我必須不斷地在我認(rèn)為好的設(shè)計(jì)、一組特性、開(kāi)發(fā)速度(慢)、項(xiàng)目規(guī)模(最小)和大多數(shù)用戶期望交付的內(nèi)容之間保持平衡。
幸運(yùn)的是,有一定比例的 Redis 用戶完全理解 Redis 的方式,所以至少我可以不時(shí)得到一些安慰。
摩擦
有些人完全是***。他們無(wú)處不在,這是很自然的。我相信編程比其他領(lǐng)域有更多的好人,但總能看到一定比例的***。
作為一個(gè)熱門開(kāi)源項(xiàng)目的領(lǐng)導(dǎo)者,在某種程度上,你將不得不面對(duì)這些人,這可能是我在 Redis 開(kāi)發(fā)過(guò)程中最有壓力的事情之一。
徒勞無(wú)功
有時(shí)我相信,軟件雖然優(yōu)秀,但永遠(yuǎn)不會(huì)像可以流傳幾個(gè)世紀(jì)的書(shū)那樣優(yōu)秀。注意,雖然軟件本身并不是很好,但其副作用也是有用的。最終被其他更實(shí)用的軟件替代。
我也想有時(shí)間做其他的活動(dòng)。所以有時(shí)候我認(rèn)為我所做的一切最終都是徒勞的。我們?cè)O(shè)計(jì)和編寫(xiě)系統(tǒng),但新的系統(tǒng)將會(huì)出現(xiàn)。
但是,任何僅僅停留在軟件領(lǐng)域,而不是停留在“軟件大創(chuàng)意”領(lǐng)域的人,將會(huì)創(chuàng)造一個(gè)新的標(biāo)志嗎?
有時(shí)我認(rèn)為我有潛力去實(shí)現(xiàn)優(yōu)秀的點(diǎn)子(big ideas),但因?yàn)槲覍W⒂诰帉?xiě)軟件而不是思考軟件,所以我無(wú)法在這方面發(fā)揮我的潛力。
這與騙子綜合癥基本上相反,所以我想我對(duì)自己有一個(gè)很大的想法:對(duì)不起,我應(yīng)該更謙虛。
騙子綜合癥(ImpostorSyndrome),指“一直無(wú)法相信個(gè)體成功是自身努力的結(jié)果,或是不相信個(gè)體成功是自身努力或自身技能過(guò)硬的結(jié)果”。
也就是說(shuō),我可以很多年都從事自己喜愛(ài)的事情。從中我結(jié)交了朋友、得到了認(rèn)可和報(bào)酬,所以這不是一筆糟糕的交易。
然而,我完全理解,一旦開(kāi)源項(xiàng)目開(kāi)始流行起來(lái),他們就開(kāi)始為了生活而掙扎。這篇博文就是獻(xiàn)給他們的。
-
開(kāi)源
+關(guān)注
關(guān)注
3文章
3371瀏覽量
42578 -
GitHub
+關(guān)注
關(guān)注
3文章
472瀏覽量
16488
原文標(biāo)題:Redis作者:開(kāi)源維護(hù)者的掙扎和無(wú)奈
文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論