↓推薦關(guān)注↓
轉(zhuǎn)自:InfoQ,
作者|Gergely Orosz、Elin Nilsson
譯者|核子可樂,策劃|冬梅
本文將帶大家深入了解一家全遠(yuǎn)程辦公、以開源為優(yōu)先方向的科技企業(yè),如何建立起極具市場競爭力的社交媒體平臺。包括同類小型團(tuán)隊(duì)能夠從 Bluesky 身上學(xué)到什么,又該如何超越體量桎梏、創(chuàng)造商業(yè)神話。
Bluesky 是一款前景光明的去中心化 Twitter 替代社交平臺。該公司雖然僅僅成立兩年,2021 年才從 Twitter 手中獲得 1300 萬美元資金,且直到今天也只擁有不足 20 名軟件工程師。該公司表示,Bluesky 的全球用戶數(shù)量已從 9 月份的 900 萬增加至近 1500 萬。
社交媒體研究員阿克塞爾·布倫斯 (Axel Bruns) 表示,該平臺為 Twitter X 提供了替代方案,包括一個更有效的系統(tǒng),用于屏蔽或暫停問題賬戶以及監(jiān)管有害行為。
他說:“對于那些想要獲得 Twitter 曾經(jīng)提供的那種社交媒體體驗(yàn),但又不想受到極右翼激進(jìn)主義、錯誤信息、仇恨言論、機(jī)器人和其他一切影響的人來說,它已經(jīng)成為一個避難所。”
“更為自由的 Twitter 社區(qū)現(xiàn)在確實(shí)已經(jīng)逃離了那里,并且似乎已經(jīng)大規(guī)模遷移到了 Bluesky。”
在本文中,我們將具體探討 Bluesky 團(tuán)隊(duì)的構(gòu)成與工程文化,具體包括:
不同尋常的起點(diǎn)。上市企業(yè)很少資助可能成為其競爭對手的初創(chuàng)公司——但 Bluesky 卻做到了。
團(tuán)隊(duì)構(gòu)成。其工程團(tuán)隊(duì)成員中擁有創(chuàng)業(yè)經(jīng)驗(yàn)的比例很高(約 70% 到 80%!),且?guī)缀醵紱]有加入過科技大廠。
技術(shù)棧。Typescript、Go、ScyllaDB、SQLite、React+Expo。
希望通過本文,能幫助大家理解這十幾位工程師如何構(gòu)建并運(yùn)營起一款為千萬用戶產(chǎn)生巨大影響且長期保持快速增長的產(chǎn)品。隨著零利率融資紅利期的結(jié)束,這種規(guī)模小但效率高的工程團(tuán)隊(duì)越來越受到歡迎——相信未來“高效”軟件工程團(tuán)隊(duì)將成為整個行業(yè)的常態(tài)。
正文:
Bluesky 于 2019 年以時任 Twitter 公司 CEO 的 Jack Dorsey 發(fā)布的一條標(biāo)志性推文,拉開了自己轟轟烈烈的發(fā)展序幕。

Twitter 計(jì)劃資助一支不超過五位開源架構(gòu)師、工程師和設(shè)計(jì)師組成的小型獨(dú)立團(tuán)隊(duì),旨在開發(fā)一套開放且去中心化的社交媒體標(biāo)準(zhǔn)體系。希望 Twitter 未來能夠成為這套標(biāo)準(zhǔn)的使用者。
申請人們紛紛向 Jack 發(fā)出私信,其中約十余位被邀請加入 Matrix 聊天室。Jack 在那里就討論內(nèi)容給出了進(jìn)一步思路,內(nèi)容如下:
團(tuán)隊(duì)的核心長期目標(biāo)是為公共對話建立一項(xiàng)持久且開放的協(xié)議。該協(xié)議不屬于任何一家組織,而是由盡可能多的組織參與貢獻(xiàn)。其誕生和發(fā)展應(yīng)當(dāng)與公共互聯(lián)網(wǎng)遵循相同的自然演進(jìn)原則。
Bluesky 公司 CEO Jay Graber 就是當(dāng)初小團(tuán)隊(duì)中的一員,其他成員還包括:
Jeremie Miller:可擴(kuò)展通訊與表示協(xié)議(XMPP)的積極貢獻(xiàn)者,該協(xié)議如今得到 WhatsApp、Kik Messenger 以及 Zoom 等主流應(yīng)用程序的采納。
Matthew Hodgson:Matrix 技術(shù)聯(lián)合創(chuàng)始人,這是一種用于去中心化、安全通信的開放協(xié)議。
Ian Preston:Peergos 聯(lián)合創(chuàng)始人,該平臺試圖構(gòu)建“下一代 Web”平臺,允許最終用戶控制自己的數(shù)據(jù)。他也是 Twitter 中的一位元老工程師。
可以看到,這支團(tuán)隊(duì)由多位去中心化消息傳遞協(xié)議的重量級人物和旨在推進(jìn)和發(fā)展 Web 技術(shù)的創(chuàng)業(yè)者們組成。
2020 年年中,Jay 提議撰寫一份關(guān)于現(xiàn)有去中心化社交網(wǎng)絡(luò)和技術(shù)生態(tài)的綜述報(bào)告。隨著研究工作的深入,聊天室中的人數(shù)逐漸增加到約 60 人。到 2020 年底,Twitter 在該小組中發(fā)出了建議征集請求,包括 Jay Graber 在內(nèi)的多位成員做出了回應(yīng)。
Twitter 在 2021 年組織了一場面試,希望選出 Bluesky 項(xiàng)目的負(fù)責(zé)人,并于當(dāng)年 8 月宣布 Jay 成功當(dāng)選:

Jay 將出任 Bluesky 團(tuán)隊(duì)負(fù)責(zé)人!恭喜對 Twitter 乃至全體社交媒體的去中心化探索邁出新的一步。現(xiàn)在我們可以著手編碼,加快先進(jìn)腳步了。
盡管 Jay 被任命為 Bluesky 團(tuán)隊(duì)負(fù)責(zé)人,但大家當(dāng)時還不清楚項(xiàng)目到底是要做些什么。
不同于以往項(xiàng)目,Bluesky 是以獨(dú)立組織的形式存在,而并非 Twitter 下轄的業(yè)務(wù)部門。大多數(shù)情況下,當(dāng)一家企業(yè)宣布為新計(jì)劃提供資金支持時,肯定會將其納入自家麾下。但 Bluesky 的情況則恰恰相反:Bluesky 從誕生之日起,就完全獨(dú)立于 Twitter 之外。
Jay 自己花錢聘請了 Daniel Holmgren,并在敲定細(xì)節(jié)的同時著手設(shè)計(jì)原型方案。他們共同完善了 Jay 于 2018 年同技術(shù)顧問 whyrusleeping 共同撰寫的協(xié)議——其中的核心設(shè)計(jì)也一直延續(xù)到了 Bluesky 當(dāng)中。
該項(xiàng)目于 2021 年 12 月 31 日獲得批準(zhǔn),當(dāng)時 Twitter 向這支新成立的團(tuán)隊(duì)支付了 1300 萬美元巨款用以構(gòu)建 AT 協(xié)議,同時批準(zhǔn) Bluesky 完全獨(dú)立運(yùn)作。實(shí)際上,當(dāng)時 Twitter 其實(shí)提出過一個條件:“Twitter 對 Bluesky 的資助不受任何條件的限制,除了一個條件:Bluesky 必須研究并開發(fā)出能夠?qū)崿F(xiàn)開放及去中心化公共對話的技術(shù)。”
對于那幫花著投資者的錢、追求大膽商業(yè)愿景的風(fēng)投機(jī)構(gòu)來說,這樣的決策并不罕見。但是對 Twitter 這樣的上市企業(yè),以幾乎免費(fèi)的條款資助初創(chuàng)組織可就相當(dāng)新鮮了。這可能是由于 Jack 本人對該項(xiàng)目抱有濃厚興趣,同時也跟 Jay 對于項(xiàng)目核心使命的堅(jiān)持有關(guān)。用她自己的話來說:
“關(guān)于組織獨(dú)立性,我進(jìn)行了長達(dá)六個月的談判,并認(rèn)定作為 Twitter 子公司的身份殊不可行。Twitter 公司的行動速度太慢,我覺得如果因?yàn)轭I(lǐng)導(dǎo)層的傾向性而扭曲了 Bluesky 的理念,那么這個項(xiàng)目很可能會胎死腹中。歷史已經(jīng)反復(fù)證明了這一點(diǎn)。”
Jay 告訴我們,她之所以拿出六個月時間展開獨(dú)立性談判,就是不愿 Bluesky 成為 Twitter 管控下的子公司。Jay 認(rèn)為 Twitter 的行動速度太慢,年輕的 Bluesky 也很有可能被 Twitter 領(lǐng)導(dǎo)層出手砍掉。現(xiàn)在看來她的判斷極其準(zhǔn)確——2022 年 11 月馬斯克買下 Twitter,并旋即做出大刀闊斧的精簡。如果 Bluesky 真的存在,肯定也會成為被精簡的對象。
在美國,大多數(shù)拿了風(fēng)投資金的企業(yè)都屬于營利性質(zhì)的有限責(zé)任公司。但 Bluesky 不是。這是一家 C 類公共利益公司(PBC),意味著其主要目標(biāo)在于追求“公共利益”、而非利潤。
這種差異使得 Bluesky 較之常規(guī)營利性企業(yè)擁有一定優(yōu)勢:他們不需要像上市企業(yè)那樣想方設(shè)法為股東提供回報(bào),也不需要直接宣傳營銷自己具備商業(yè)可行性的產(chǎn)品。相反,Bluesky 可以專注于“開發(fā)出能夠支撐去中心化公開對話的技術(shù),并推動其大規(guī)模采用。”
但這也帶來了風(fēng)險,因?yàn)槿绱艘粊砉揪筒恍枰诙唐谥畠?nèi)確定明確的業(yè)務(wù)策略。而眾所周知,策略是保障長期成功的重要前提。
我們帶著這種擔(dān)憂詢問了 Bluesky,畢竟如果專注于履行使命而非賺錢,那用戶憑什么信任這樣一項(xiàng)隨時可能燒光投資的服務(wù)?該團(tuán)隊(duì)做出了如下回應(yīng):
采取與傳統(tǒng)社交媒體公司不同的激勵措施。由于 Bluesky 架構(gòu)的開放性,用戶不會被鎖定。無論他們使用的的是客戶端應(yīng)用程序還是用于消息饋送的算法,用戶都可以將 Bluesky 選為默認(rèn)選項(xiàng),或者隨時切換至其他供應(yīng)商。由于切換成本極低,因此 Bluesky 必須以能夠令用戶滿意的方式完善自身。另外,Twitter 在 2023 年禁止了第三方客戶端,理由是其無法提供廣告收益。
探索更多增值付費(fèi)服務(wù)。為了不依賴于外部資金,Bluesky 也設(shè)定了銷售付費(fèi)服務(wù)的商業(yè)愿景。首先是與 Namecheap 合作出售定制域名,這也是 Bluesky 業(yè)務(wù)中的重要組成部分。現(xiàn)在,只要有人通過 namecheap 注冊一個域名,Bluesky 就能獲得一小筆傭金。
傳統(tǒng)社交媒體企業(yè)的現(xiàn)有貨幣化策略(例如出于廣告宣傳目的而出售用戶數(shù)據(jù))對于 Bluesky 來說也不太奏效。因此,他們需要找到新的變現(xiàn)方式。Bluesky 的開發(fā)者關(guān)系工程師 Emily Liu 觀察到了一種有趣的現(xiàn)象:
“我們正利用這段 時間探索哪些服務(wù)對于用戶更有價值,例如用戶可以通過 Bluesky 購買和管理自定義域名。我們正在徹底顛覆社交應(yīng)用的基本邏輯——與強(qiáng)調(diào)集中的傳統(tǒng)社交媒體巨頭,我們不會壟斷用戶數(shù)據(jù),因此也不會遵循傳統(tǒng)巨頭們的業(yè)務(wù)變現(xiàn)路徑。”
其實(shí)之前已經(jīng)出現(xiàn)不少走公益路線并獲得成功的案例,甚至不乏借此上市的公司。保險技術(shù)初創(chuàng)公司 Lemonada 就在 2020 年完成上市,此外教育初創(chuàng)公司 Coursera 和眼鏡公司 Warby Parker 都屬于公共利益性質(zhì)的組織。
如今,Bluesky 擁有約 40 名全職員工:
17 人組成“核心”團(tuán)隊(duì),其中 12 名是開發(fā)人員。
約 20 人負(fù)責(zé)支持和審核工作。
有趣的事實(shí):早期招聘的員工中沒有一人在 Twitter 工作過!(第一位任職過 Twitter 的員工到 2024 年才出現(xiàn)。)這著實(shí)令人意外,畢竟自 Bluesky 成立以來,Twitter 已經(jīng)解雇了旗下約 75% 的員工——難以理解為什么他們不考慮加入這家同根同源的社交媒體初創(chuàng)公司。
在核心工程團(tuán)隊(duì)中,每個人都專注于 Bluesky 開發(fā),具體劃分為:
協(xié)議 / 后端與基礎(chǔ)設(shè)施:5 人,主要負(fù)責(zé) Atproto 存儲庫和 Indigo 存儲庫。分別為 Daniel Holmgren、Devin Ivy、Bryan Newbold、Matthieu 以及 Jaz。
前端和應(yīng)用程序:5 人。他們的大部分編碼工作都在應(yīng)用代碼倉庫中完成。分別為 Paul Frazee、Eric Bailey、Dan Abramov、Hailey 以及 Samuel。
審核 / 標(biāo)記:1 人,即 Foysal Ahamed 負(fù)責(zé)的 Ozone 服務(wù)。
其他:5 人,分別為 CEO Jay Graber、業(yè)務(wù)增長負(fù)責(zé)人 Rose Wang、T&S 主管 Aaron Rodericks、技術(shù)顧問 whyrusleeping 以及開發(fā)者關(guān)系 / 發(fā)展負(fù)責(zé)人 Emily Liu。
我們無需加入 Bluesky 就能理解這樣一套簡潔的工程結(jié)構(gòu)。在對大多數(shù)公司進(jìn)行深入研究時,我們往往需要求助于現(xiàn)任或者前任員工才能理解其團(tuán)隊(duì)結(jié)構(gòu),但對于 Bluesky,我們只需看看 Bluesky 代碼倉庫中的項(xiàng)目,并將 GitHub 貢獻(xiàn)者跟他們的成果聯(lián)系一下即可!Bluesky 工程師們編寫的所有代碼都是公開的,這樣的透明度讓我真心感到震驚——當(dāng)然,是由衷贊賞的那種震驚。
“核心”團(tuán)隊(duì)中接近五分之四的成員都有過創(chuàng)業(yè)經(jīng)歷,這在初創(chuàng)公司中顯得極不尋常。當(dāng)然,初創(chuàng)公司確實(shí)更吸引那些喜歡在小團(tuán)隊(duì)里工作的人,其中有過創(chuàng)業(yè)經(jīng)歷的比例確實(shí)會更高。但是,這種特征為什么在 Bluesky 會突出到這樣的程度?
通過與團(tuán)隊(duì)成員的交談,答案可以歸結(jié)為:
相信 Bluesky 提出的宏大使命。
希望構(gòu)建去中心化 Web 體驗(yàn)。
Bluesky 正在構(gòu)建一種可擴(kuò)展的社交網(wǎng)絡(luò)。說起如何實(shí)現(xiàn)這種快速可擴(kuò)展性,那肯定是在大型科技巨頭有過從業(yè)經(jīng)歷的人才,比如 2000 年代初的谷歌工程師、2000 年代中和 2010 年代初期的 Facebook 工程師,還有 2010 年代的 Netflix 工程師等等。然而,Bluesky 最初招聘的幾位工程師都跟這些完全不沾邊。
創(chuàng)始工程師 Paul Frazee 分享道:“核心團(tuán)隊(duì)的很多經(jīng)驗(yàn),實(shí)際上單純來自之前的去中心化 Web 或者去中心化社交項(xiàng)目,來自大規(guī)模社交網(wǎng)絡(luò)的經(jīng)驗(yàn)反而很少。”
“我們在點(diǎn)對點(diǎn)網(wǎng)絡(luò)方面擁有豐富經(jīng)驗(yàn),而且對區(qū)塊鏈領(lǐng)域也給予了很多關(guān)注。對于不少團(tuán)隊(duì)初始成員來說,這已經(jīng)是他們第二次、第三次甚至第四次構(gòu)建去中心化網(wǎng)絡(luò)了。”
后端幾乎完全是用 Typescript 開發(fā)而成,前端和移動端應(yīng)用也是一樣。如此一來,軟件工程師就能跨項(xiàng)目棧工作而無需切換語言。
為什么會選擇 TypeScript?Daniel Holmgren 給出以下幾點(diǎn)理由:
事實(shí)上的 Web 標(biāo)準(zhǔn)語言。“JavaScript 以及由此衍生的 TypeScript 可能是當(dāng)前最接近 Web「通用語」的語言。我們認(rèn)為在協(xié)議的參考實(shí)現(xiàn)中用它來傳達(dá)核心思想是種順理成章的選擇。”
可實(shí)現(xiàn)前端與后端語言共享。“在客戶端和后端之間共享實(shí)現(xiàn)能夠帶來更好的開發(fā)體驗(yàn),特別是確保雙方對于架構(gòu)系統(tǒng)有著同樣的理解。”
提供適合 AT 協(xié)議的動態(tài)數(shù)據(jù)方法。“作為一種動態(tài)語言,TypeScript 非常適合處理我們在 AT 協(xié)議生態(tài)系統(tǒng)中找到的動態(tài)數(shù)據(jù)。”
非常適合代碼生成。TypeScript 擁有非常出色的代碼生成生態(tài)系統(tǒng)。我承認(rèn) TypeScript 的官方實(shí)現(xiàn)只是提供了可解析為 AST 的工具,開發(fā)者可以對其進(jìn)行操作并輸出代碼。雖然應(yīng)用面不廣,但對我們卻有很大幫助。”
非常適合小團(tuán)隊(duì)進(jìn)行原型設(shè)計(jì)。“TypeScript 是一種非常適合快速構(gòu)建場景的語言。它的運(yùn)行時非常強(qiáng)大,我們不必過多擔(dān)心內(nèi)存管理和并發(fā)性之類的問題。其類型系統(tǒng)非常符合人類思維方式和直覺,能夠提供所需結(jié)構(gòu),同時很少惹出不必要的麻煩。對于體量不大的早期團(tuán)隊(duì)來說,選擇這樣一種能幫助我們快速推進(jìn)原型設(shè)計(jì)的語言無疑是明智之舉。”
后端的 TypeScript 代碼使用 Node.js 運(yùn)行時。團(tuán)隊(duì)擔(dān)心的一個問題就是如何對其進(jìn)行擴(kuò)展,畢竟 Node.js 應(yīng)用程序只在單個線程上運(yùn)行,而不會為每條請求創(chuàng)建一個新線程。也就是說,相較于那些能夠高效支持多線程的框架,Node.js 服務(wù)器能夠處理的并行請求要少得多。
然而,該團(tuán)隊(duì)發(fā)現(xiàn),橫向擴(kuò)展服務(wù)(即添加更多機(jī)器)并非難事,只需將應(yīng)用程序構(gòu)建為無狀態(tài)形式即可。根據(jù) Daniel 的回憶,他們通過測試證明了如下觀點(diǎn):
“有一次,我們有大概 192 個節(jié)點(diǎn)進(jìn)程運(yùn)行在 HAProxy 之后。這些進(jìn)程全都非常「無聊」,CPU 利率率僅在 1% 左右。但關(guān)鍵在于,無狀態(tài) Node 服務(wù)可以輕松實(shí)現(xiàn)橫向擴(kuò)展,而這正好符合我們的需求!”
后端最初只采用 TypeScript 一種語言,但隨著時間推移,他們又引入了 Go。但既然 TypeScript 已經(jīng)有千萬般好,為什么還要引入另一種語言呢?Daniel 的回答很簡單,為了追求性能:
“一部分更貼近底層的基礎(chǔ)設(shè)施服務(wù),例如 Realy 還有我們內(nèi)部的「Dataplane」,都對性能有著嚴(yán)格要求。它們往往涉及大量加密操作和底層 bit 操作,而 Go 語言明顯更擅長這些用例。具體來講,Go 擁有一款面向 Scylla(我們使用的數(shù)據(jù)庫)的分片感知驅(qū)動程序,這也使其成為與數(shù)據(jù)庫交互的理想選擇。”
在追求性能優(yōu)化的過程中,團(tuán)隊(duì)開始將多項(xiàng)服務(wù)從 TypeScript 重寫為 Go 形式。目前,Go 語言編寫的服務(wù)包括:
Palomar 等搜索服務(wù)。
名為 Relay 的“firehose”服務(wù),其執(zhí)行大量底層操作與加密操作。
Dataplane。此服務(wù)名為“BigSky”,也是 Bluesky 中的少數(shù)閉源服務(wù)之一。其負(fù)責(zé)管理數(shù)據(jù),與 ScyllaDB、其他數(shù)據(jù)存儲方案(如 Redis)以及團(tuán)隊(duì)自主編寫的緩存存儲一道承載通道數(shù)據(jù)。
Bluesky 最初使用 PostgreSQL 作為數(shù)據(jù)存儲方案,但隨著負(fù)載增加,團(tuán)隊(duì)意識到應(yīng)當(dāng)將這種靈活性出眾、但可擴(kuò)展性有限的解決方案替換為靈活性較弱、但可擴(kuò)展性更強(qiáng)的平臺上了。
2023 年年中,遷移工作正式開始:
ScyllaDB powers AppViews.
由 ScyllaDB 支持 AppViews。
SQLite 則成為個人數(shù)據(jù)服務(wù)器(PDSses)的首選數(shù)據(jù)庫。
Lexicon 模式用于描述 HTTP 端點(diǎn)和網(wǎng)絡(luò)中的所有記錄類型。這種方法能夠保障后端和客戶端之間的各類強(qiáng)類型契約和協(xié)議。
這種強(qiáng)契約對于去中心化網(wǎng)絡(luò)尤其重要。Bluesky 也是一套開放的微服務(wù)網(wǎng)絡(luò),因此需要在協(xié)議層面上施以嚴(yán)格約束。Paul Frazee 這樣解釋這個問題:
“大家可以將整個網(wǎng)絡(luò)視為一個開放的微服務(wù)網(wǎng)絡(luò)。在執(zhí)行微服務(wù)的過程中,其實(shí)就是在嘗試通過 schema 語言對其進(jìn)行系統(tǒng)化,以確保所有不同服務(wù)場景均遵守相同的契約。這種情況在單體架構(gòu)不太適用的微服務(wù)場景下其實(shí)相當(dāng)常見。”
團(tuán)隊(duì)使用 GitHub Actions 作為 CI/CD 技術(shù)棧。目前項(xiàng)目已經(jīng)公開運(yùn)行,因此大家可以自行查看具體細(xì)節(jié)(https://github.com/bluesky-social/atproto/actions):

Bluesky 協(xié)議代碼倉庫中的近期 CI/CD 運(yùn)行記錄。
這些 builds 本身會使用以下常見工具和技術(shù)來盡早發(fā)現(xiàn)質(zhì)量問題:
Linting:運(yùn)行靜態(tài)代碼檢查以捕捉編碼問題,并確保整個代碼庫的編碼風(fēng)格相一致。以下是 Bluesky linter 捕獲的問題類型示例:

若對未使用的變量進(jìn)行賦值,則會觸發(fā) linter 警告。最好不要在生產(chǎn)代碼庫中保留變量。
自動測試:運(yùn)行單元、集成與快照測試。
快照測試示例:

快照測試通過檢查 UI 是否符合預(yù)期(第 56 行,通過.toMatchSnapshot() 調(diào)用)以及“點(diǎn)贊”數(shù)量是否符合預(yù)期(第 58 行),來判斷是否存在問題。
Bluesky 的一個有趣之處,在于其網(wǎng)站、iOS 應(yīng)用乃至 Android 移動應(yīng)用全都出自同一位開發(fā)者之手。從 2022 年夏季到 2023 年初,工程師 Paul Frazee 獨(dú)自一人完成了這項(xiàng)開發(fā)工作。2023 年初,該應(yīng)用開始迎來外部貢獻(xiàn)者,同年 4 月第二位全職員工加入進(jìn)來。而實(shí)現(xiàn)這整套技術(shù)棧的,就是 React Native 以及 Expo:
談起為何選擇 React Native,Paul Frazee 解釋道:
“早在立項(xiàng)之初,我們就明確了覆蓋所有主流平臺的基本方針。再考慮到我們對于 TypeScript 的全面應(yīng)用,那可行的解決方案就只剩下了一種:React Native。相比之下,如果要維持兩套獨(dú)立的應(yīng)用程序代碼庫,那就相當(dāng)于要維護(hù)兩款獨(dú)立的產(chǎn)品。所有的東西都要實(shí)現(xiàn)兩次、所有的東西都要調(diào)試兩次,而且結(jié)果總會略有不同。”
當(dāng)然,Paul 也承認(rèn) React Native 絕不是什么神奇的“靈丹妙藥”:
“這活并不困難,有時候甚至令人抓狂。很多 Web 開發(fā)者都知道面向多款瀏覽器搞開發(fā)是多么讓人頭大,那同時面向原生 iOS 和 Android 平臺也是一樣。不過好在實(shí)際情況永遠(yuǎn)是在「輕松解決」和「徹底卡死」之間反復(fù)橫跳,但最終總能搞定。”
Expo 是一套用于對 Web、iOS 和 Android 上運(yùn)行的原生應(yīng)用進(jìn)行開發(fā)、審查和部署的通用平臺。Bluesky 于 2023 年 3 月打造出了這套平臺,盡管團(tuán)隊(duì)在控制新依賴項(xiàng)的引入方面一直非常謹(jǐn)慎,但還是希望它能管理好 builds 并培養(yǎng)起 Expo 模塊生態(tài)系統(tǒng)。
React Native 這個選擇甚至讓不少團(tuán)隊(duì)成員都感到驚訝。最初,Paul 只打算將 React Native 用于移動應(yīng)用,但后來他們發(fā)現(xiàn) React Native 在 Web 開發(fā)方面有著突出的管理易行性。Paul 解釋道,“我們發(fā)現(xiàn),有相當(dāng)一部分工作量直接照搬代碼就能完成。我們的共享代碼在各種平臺上都能運(yùn)行,從后端到各種不同系統(tǒng),這也是我們能依靠一支小團(tuán)隊(duì)打造出大規(guī)模社交媒體的一個重要原因。”
前面提到,Bluesky 的移動端應(yīng)用和網(wǎng)站都是由同一位開發(fā)人員 Paul Frazee 用一約一年時間開發(fā)完成的。如今,有六位工程師負(fù)責(zé)該應(yīng)用和網(wǎng)站,而協(xié)議和后端方面的負(fù)責(zé)工程師數(shù)量也大體相同。
那么,單憑一名經(jīng)驗(yàn)豐富的工程師,是怎么打造出一款具備高可用性的社交應(yīng)用程序的?下面來聽聽 Paul 的心得。
他從構(gòu)建協(xié)議入手,而沒有急于開發(fā)應(yīng)用程序。在最初的 6 個月后,Paul 同 Dnaiel、Jay 攜手合作,并與 Twitter 協(xié)商弄清楚了通信協(xié)議的工作原理。Bluesky 認(rèn)為協(xié)議才是更重要的部分,基于好協(xié)議的應(yīng)用程序一定會在市場上得到用戶的認(rèn)可。這個道理說起來簡單,但直到 2022 年他們才下定決心。Paul 表示,“我們其實(shí)早就想著未來會構(gòu)建應(yīng)用程序,畢竟協(xié)議開發(fā)應(yīng)該跟應(yīng)用開發(fā)相結(jié)合嘛。但我們最初覺得應(yīng)用程序應(yīng)該只是個原型。但隨著我們與 Twitter 的關(guān)系發(fā)生變化,我們才意識到除了開發(fā)底層協(xié)議之外,也必須要制作出能夠上手體驗(yàn)的完整應(yīng)用。這可以說是項(xiàng)目的一個小小轉(zhuǎn)變吧。”
Daniel 和 Devin 的后端團(tuán)隊(duì)同 Paul 領(lǐng)導(dǎo)的前端 / 應(yīng)用團(tuán)隊(duì)之間的關(guān)系,就是典型的前端 / 后端關(guān)系。他們共同制定功能規(guī)范,并討論每位成員具體負(fù)責(zé)哪些工作。之后,他們在各自的領(lǐng)域內(nèi)著手開發(fā),再協(xié)調(diào)最終成果。
Daniel 回憶道,應(yīng)用程序的構(gòu)建給協(xié)議的改進(jìn)提供了很大幫助,也讓工作變得更加有趣:
“最有趣的體驗(yàn),應(yīng)該就是看著我們的一個個靈感通過協(xié)議在社交應(yīng)用上得以實(shí)現(xiàn)。必須得承認(rèn),以純抽象的方式構(gòu)建 / 設(shè)計(jì)協(xié)議,確實(shí)不如親眼見證它在實(shí)踐場景下發(fā)揮作用那樣成就感滿滿。”
原文鏈接:
https://newsletter.pragmaticengineer.com/p/bluesky-engineering-culture
最近極客時間出了一個《面試后優(yōu)雅談薪》的專欄,目前還在內(nèi)測階段,主要是看市場反饋來定價,所以現(xiàn)在還是免費(fèi)階段,等上線了估計(jì)就可能收費(fèi)了。
干我們這樣的基本都求一個落袋為安,如果能多拿點(diǎn)薪資自然是很美的事,可很多童鞋壓根不知道如何談薪?

這里分享一下極客時間的這份內(nèi)測專欄,只申請到30個內(nèi)測名額,掃描下方二維碼自取,如果還能加得了客服就說明還有名額,如果無法添加就說明名額已經(jīng)完了。。。

掃描上方二維碼自取
—— EOF —— 你好,我是飛宇。日常分享C/C++、計(jì)算機(jī)學(xué)習(xí)經(jīng)驗(yàn)、工作體會,歡迎點(diǎn)擊此處查看我以前的學(xué)習(xí)筆記&經(jīng)驗(yàn)&分享的資源。
我組建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起進(jìn)群交流。
歡迎你添加我的微信,我拉你進(jìn)技術(shù)交流群。此外,我也會經(jīng)常在微信上分享一些計(jì)算機(jī)學(xué)習(xí)經(jīng)驗(yàn)以及工作體驗(yàn),還有一些內(nèi)推機(jī)會。
加個微信,打開另一扇窗