当你的技术债务到期时,LinkedIn的故事 | IDCF
原文:https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/
譯者:冬哥
那是 2011 年 10 月,就在 LinkedIn 上市后的第二次財報發布之前的幾周。LinkedIn的業務做得很好,從任意可見角度來衡量,可以說是非常好。我們成功地完成了從私人控股初創公司到上市公司的轉變;股票在交易的第一天上漲了 171%;我們很快就會宣布,第二季度的收入同比增長了 126%;在過去的 12 個月里,有超過 5000 萬人加入了我們的專業網絡,使我們的會員總數達到 1.312 億。突然之間,我們變成了一家價值 90 億美元的公司。
然而,在我們蓬勃發展的業務背后,是一個保險絲已被點燃的技術火藥桶。當時我剛加入 LinkedIn,擔任工程主管,我對科技初創公司并不陌生,曾在 Google 和后來的 AdMob 領導工程團隊。初創公司在分配寶貴的資源時必須平衡許多條線。如果你在設法構建正確的產品之前,花費太多時間構建技術上完美的東西,那么你就會倒閉。這種情況每天都在硅谷和其他地方發生;另一方面,如果你在構建正確的產品時采取了太多的技術捷徑,最終你可能會背負大量技術債務需要償還;如果你像我們一樣的極為幸運,并且你的產品也非常好,以至于它開始經歷指數級增長,那么給你償還技術債務的時間窗口可能會非常短。
那是一個深秋的晚上,在取得如此巨大的成功之后,我發現自己所處在一個擠滿了沉思、焦躁的 LinkedIn 產品經理的房間。我站在他們面前,傳遞的是一個沒有任何工程主管想要去傳達的消息:我們將在接下來的兩個月內凍結所有 LinkedIn 新功能的開發,以重建我們的軟件開發基礎設施,在此期間將不會有很酷的新的功能。我們將有可能會窒息,因為我們將從頭開始重建我們的系統。
這些都是一群雄心勃勃的產品經理,所抱持的期望是,業務的成功所帶來的持續增長和出色表現。他們有責任幫助我們構建新功能和產品,使 LinkedIn 能夠繼續取得成功。在一個以“快速行動并打破常規”為主導心態的高風險世界中,停止兩個月并不是他們計劃中的一部分。而我,一個新人,告訴他們需要慢一點移動才能更快地移動,讓我成為不受歡迎的人。特別是他們看到我的前輩過去嘗試過類似的壯舉,并失敗了。
“你有且只有一次機會,所以你最好希望你做對了”,其中一位產品經理斷言。
“請大家不要擔心我,”我回擊道,“如果我們不能一起解決這個問題,我們誰都不會再有機會。”
LinkedIn 成立于 2003 年 5 月 5 日, 到 2011 年我們將公司上市時,我們已經積累了 8 年的善意和無辜的技術妥協,這些妥協已經累積成我們這些軟件工程人員所說的狗屎秀。我們的初衷是業務擴展的同時盡可能快地開發軟件的能力,此刻帶來了真正的壓力。加入團隊的工程師越多,事情進展得越慢。每個人都受夠了所有阻礙我們前進的摩擦,因為我們無法按照我們想要的速度前進,并且只有前進才能繼續成長。
技術債務是每個技術公司,無論大小,上市或私有,都必須處理的事情。在你構建軟件時,技術債務以各種令人眼花繚亂的方式累積起來。有時它是通過明確的、個人的妥協產生的:你有意識的選擇以不可持續的方式做某事,以便更快地將某事推向市場,并告訴自己稍后會清理這些事情;有時技術債務會悄悄的累積,因為構建技術很困難,人們會犯錯誤,即使是最聰明的工程師也無法預測未來,這意味著有時你會構建錯誤的東西;有時技術債務的產生,是因為你的團隊主要關注點在于如何更快地交付,而不是清理他們匆忙而制造的混亂。尤其是,你很難去解釋為什么需要額外的時間“以正確的方式”構建東西,而外面的世界正焦急的等待你把事情“做完”。
我們將這些妥協和錯誤稱為技術債務的原因是,真正的意義上,你是在借用你的未來以完成某事,而將在未來以某種方式為此付出代價。當你做出這些妥協或錯誤時,有時幾乎不會注意到它們。更多時候,即便你完全注意到了,它們也似乎是不錯的賭注,因為它們正在讓你獲得一些令人向往的東西,例如上市時間,因為未來似乎并沒有那么大的犧牲。但就像真正的債務一樣,技術債務,除非管理得當,否則會累積到你唯一要做的事情就是償還債務,而不是在你融資的產品上取得進展。
不管它如何累積,避免技術債務壓倒和壓垮你的訣竅是制定一種償還債務的紀律。不幸的是,沒有某種唯一正確的方法可以幫助你處理技術債務,而且我認識的每一家公司都以不同的方式處理這些問題。一些公司有嚴格的評審流程,有助于他們更加了解他們所承擔的債務。當他們選擇承擔技術債務時,他們有一個現實的計劃來償還它,即在合理的時間內修復這些技術妥協。一些公司承認,即使經過全面審查,技術債務仍會累積,因此,他們將一部分研發預算分配給不斷識別和償還技術債務。或許最開明的公司會嘗試預測技術債務的類型,考慮到他們所做工作的性質,哪些債務將最有可能自然積累起來,并嘗試構建基礎設施、工具和流程,以幫助最大限度地減少其累積。
無論采用哪種方法,每家公司遲早都需要償還債務。如果你正在判斷需要花費多少精力來償還技術債務,一個好的經驗法則是:如果你正在快速增長,那么你很有可能做得還不夠;如果你增長緩慢,或者根本沒有增長,償還技術債務可能還不是你最大的問題;如果你不知道什么是技術債務,以及你的計劃是怎么能確保它在未來不會成為你的問題,那么你可能已經陷入困境。
LinkedIn 的案例,對于快速發展的初創公司來說很常見,我們沒有為我們的技術債務支付足夠的利息,2011 年到期了。因此,在我們成為一家上市公司的短短幾個月內,在一支堅實的工程師團隊(包括該項目的負責人Mohak Shroff及其架構師Dan Grillo的帶領下,開始了我們稱之為InVersion 的項目,徹底重建 LinkedIn 破舊的、過時的軟件開發基礎設施。在為期兩個月的項目中,每個 LinkedIn 工程師都同時工作在 InVersion項目的不同點上。大約進行到一半時,我們真的燒毀了我們身后的橋梁,拆除了 LinkedIn 舊的軟件開發基礎設施。再次提供新功能的唯一方法是完成新平臺,我們需要將這一夢想變為現實。
InVersion項目有許多技術上的挑戰,讓大型工程師團隊高效和敏捷的處理超大的軟件,對任何公司來說都是一個巨大的挑戰。但是,我們通過InVersion項目為 LinkedIn 帶來的東西——持續集成、生產環境的自助化部署、基于主干的軟件開發、 A/B 測試、生產環境金絲雀發布等——并不是在放衛星。有大量的工作,我們正在做很多創新的事情,但我們有一個計劃并且知道該做什么。更為困難的事情,是決定做這項工作,然后不斷的重新說服自己,我們可以一遍又一遍地完成這項工作,因為我們只是遇到了在這種困難和復雜的旅程中自然會遇到的諸多障礙。
有兩件事讓我們渡過了難關——一個普遍的信念,我們正朝著正確的方向前進;以及足夠多的人承受著領導者的壓力,即在任何給定的時間里,至少有一個人油箱里有足夠的燃料,可以讓人們相信我們有能力最終成功的信念。
到 2012 年 1 月中旬,我們再次能夠為我們的成員部署很酷的新功能。即使在最初的幾周,開發基礎設施存在一些原始的錯誤,客觀上也比從前的更好。到了2012 年年中,InVersion項目取得了毫無疑問積極的結果。
我們每天多次的發布部分LinkedIn實驗,而不是每月發布一次。工程師更快樂,花更多的時間為會員構建東西,而不是與工具搏斗。考慮到我們過時的系統使創新工作變得多么困難,本可以發生的人才離職并沒有實現。外部觀察者開始注意到LinkedIn官網和我們的移動應用程序的改進速度正在加快 ,并想知道發生了什么變化,與此同時業務繼續表現良好。
對于你應該如何應對應對技術債務的挑戰,沒有唯一的正確答案。但存在唯一的真理——遲早你必須投入時間和工作來償還它。
總結
以上是生活随笔為你收集整理的当你的技术债务到期时,LinkedIn的故事 | IDCF的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OutOfMemoryException
- 下一篇: 拥抱开源!除了微软红帽,这些国际大厂你认