当你的技术债务到期时,LinkedIn的故事 | IDCF

22db4f32b86d48f597094dd28855c9d5.gif

原文:https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/

译者:冬哥

bd66829588b658e65dd5311d1394947d.png

那是 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官网和我们的移动应用程序的改进速度正在加快 ,并想知道发生了什么变化,与此同时业务继续表现良好。

对于你应该如何应对应对技术债务的挑战,没有唯一的正确答案。但存在唯一的真理——迟早你必须投入时间和工作来偿还它。

8e73f8cf750cca1ee79910097510a612.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........

全世界只有3.14 % 的人关注了爆炸吧知识鲁迅先生曾说,记录这东西,就是用来打破的。前阵子程序员圈子一定热呼的不可开交,咋回事?还不是因为有个程序员妹子捅出了一个大篓子。事情是这样的,在德国慕尼黑有一个名叫 Leah…

拥抱开源!除了微软红帽,这些国际大厂你认识几个?

在上世纪 90 年代,开源操作系统 Linux 出现时,有能力自行安装使用的用户并不多。因此,早期开源社区和开源软件厂商的一大工作就是向用户售卖书籍,提供初始的技术支持。比如基于 Linux 的内核,一批开源软件厂商开发出不…

湖南工业职业技术学院计算机协会,计算机网络协会

一、协会简介于2005年成立,系信息工程系直属协会。以学习网络知识理论及技术实践为主,以业余活动为辅的双向协会。由我系专业教研团队亲自授课教学,达到教学合一效果。注重培养高技能、高素质综合能力人才。二、协会宗旨以普及计算机基础知识…

浙大月赛C题(2012/8)Cinema in Akiba(线段树)

http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId4791 (1)第一次写浙大的题目,这题让我十分意外,基本的线段树类型(求第x个空位)。 (2)电影院里,一次…

生病了女朋友说要「陪床」,结果真的是陪床不是陪我......

1 生病住院了女朋友说要来陪床结果真的是陪床不是陪我......▼2 气氛突然微妙......▼3 隔壁的一家人都馋哭了!▼4 上街偷拍帅哥的正确方法▼5 WOW!AMAZING!▼6 史上最强小学生出现了!▼‍7 养二哈不光挺费家具的还挺废人的▼你点的每个赞&#x…

System.Text.Json 自定义 Conveter

System.Text.Json 自定义 ConveterIntroSystem.Text.Json 作为现在 .NET 默认提供的高性能 JSON 序列化器,对于一些比较特殊类型支持的并不太好,业务需求中总是有各种各样的需要,很多时候就需要用到自定义 Converter ,对于微软新出…

50张图,带你认识大学各专业

全世界只有3.14 % 的人关注了爆炸吧知识专业选的好每天像高考掐指一算,开学就近在眼前。当初纠结自己是考清华还是北大的那一幕也还是历历在目。不过,最后还是没有选择他们,一是因为北京离家太远,怕自己想家,二是因为他…

通达学院计算机组成原理试卷及答案,2021全国网络工程专业大学排名(5篇)

2018全国网络工程专业大学排名(5篇)高考填报志愿选择专业的话,考生需要了解你选择的专业在全国排名怎么样以及选择学校开设的专业在全国排名怎么样?高考升学网小编带你一起了解关于网络工程开设专业的大学排名。以及网络工程就业前景排名怎么样&#xff…

第一次去四川的广东人是什么下场?

1 第一次去四川的广东人▼2 酒店:好的,下次把床头柜也粘地上▼3 朋友家楼下有一窝乌鸦重点是乌鸦窝是晾衣架做的那么问题来了......它们从哪里偷的那么多衣架??▼4 没有妈咪编不出来的毛衣▼5 这简直一毛一样▼6 我今天非要…

在java中写出html代码,在java里写html代码

在java里写html代码[2021-02-09 07:31:38] 简介:php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:《…

简单的比较两数大小

#!/bin/bash#testecho "----- 比较两数大小-----";while (true) do{echo -n " 请输入a:";read a;echo -n " 请输入b:";read b;if [ $a -eq $b ]then echo "ab&#xff01;";elif [ $a -lt $b ]then echo "a 小于 b || $a < $b…

大咖来了!今年的 COSCon 主论坛你可以见到这些大咖

“ 点击蓝字 / 关注我们 ”| 作者&#xff1a;COSCon21 组委会| 编辑&#xff1a;王玥敏| 设计&#xff1a;朱亿钦COSCon21 主论坛已经开始了紧锣密鼓的筹备工作&#xff0c;大咖们走进影棚&#xff0c;录制主题演讲。那么在本次主论坛中&#xff0c;你都能见到哪些大咖呢&…

3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你

全世界只有3.14 % 的人关注了爆炸吧知识宇宙深邃美丽&#xff0c;是黑夜的荧光&#xff0c;是夏天里冒着凉气的西瓜&#xff0c;总是诱人地勾起一代又一代人探索的欲望。对于宇宙思索与探索&#xff0c;人类的脚步从未停止。正是人类对宇宙的好奇&#xff0c;撑起了人类发展的大…

2014全国计算机二级ms office,2014计算机二级MS Office真题及答案

根据光盘中素材文件夹中“操作题素材”子文件夹中“操作题4.2”中所提供的“迎春花”及其中的图片&#xff0c;制作名为“迎春花”的演示文稿&#xff0c;要求如下&#xff1a;(1)有标题页&#xff0c;有演示主题&#xff0c;制作单位(老年协会)&#xff0c;在第一页上要有艺术…

nginx file not found 错误处理小记

2019独角兽企业重金招聘Python工程师标准>>> 安装完php php-fpm nginx 后访问php出现file not found错误&#xff0c;html就没问题配置文件server 段如下 server {listen 80; server_name 192.168.1.11;root /home/www;location ~ .*\.php${ try_files $uri 404;…

1300多名硕博研究生被清退!全都是活该?真相有时候比表面更让人无奈......

全世界只有3.14 % 的人关注了爆炸吧知识有时真相很像结果近日&#xff0c;西安电子科技大学公布了一份名单&#xff0c;拟清退33名“失联博士”。这些被清退的博士研究生中&#xff0c;最长的就读时间竟然是15年&#xff01;更令人震惊的是&#xff0c;自2019年来&#xff0c;已…

SQL Server数据库同步问题分享[未完,待续](一)

SQL Server数据库同步问题分享[未完&#xff0c;待续](一) SQL Server数据库同步问题分享(二)---操作步骤[未完&#xff0c;待续] SQL Server数据库同步问题分享(三)---创建订阅 合并发布(复制)通常也是从发布数据库对象和数据的报表快照开始。并用触发器跟踪在发布服务器和订…

中国最美街景,带你一次看个够

全世界只有3.14 % 的人关注了爆炸吧知识生活永远比电视剧精彩&#xff0c;真正的美景永远比图片美&#xff01;中国960万平方公里的土地上&#xff0c;拥有无穷无尽的美景&#xff0c;足以将你的眼睛搁在天堂。抛开那些耳熟能详的景区不谈&#xff0c;单单是一些普通街道&#…

[031] 实战:书大师网站开发准备

.NET大牛之路 • 王亮精致码农 • 2021.10.19前面我们花了二十篇左右的文章讲 C# 基础和高级知识点。由于后面要讲的东西还有很多&#xff0c;所以 C# 的内容没办法做到讲得细而全&#xff0c;只能走马观花一扫而过。在后面的内容中如果有遇到 C# 高级知识点&#xff0c;我们再…

依赖Zookeeper生成全局唯一序列号

下面2张图来自&#xff1a;http://www.open-open.com/doc/view/2e0a82e0081d489dace301a2c512053c 关于Zookeeper服务安装&#xff0c;配置&#xff0c;启动, 客户端操作参见&#xff1a;http://aiilive.blog.51cto.com/1925756/1684451 http://aiilive.blog.51cto.com/1925756…