工程

Instagram联合创始人迈克·克里格是如何让其工程组织从0人发展到300人的

无论如何衡量,Instagram美国的主要里程碑是惊人的。在其成立仅一年半后,Facebook就以10亿美元的价格收购了它,整个初创公司的生态系统都开始关注起来。但这是其用户基础令人难以置信的指数级增长的结果和开始,从2012年被收购时的3000万月活跃用户到两年后的2亿,到今天的7亿多。

在公司内部,他是联合创始人兼首席技术官迈克Krieger他有自己的一套重要的里程碑——与他的技术团队如何扩大和发展,以达到其庞大的受众密切相关。在收购的时候,他只有6个通才开发人员.如今,他带领着一个300多人的工程团队迅速推出新功能和新产品。在短短7年时间里,克里格本人从第一次当经理变成了领导一个由专业工程师组成的多层次组织,其中许多工程师都是各自领域的佼佼者。

在这次专访中,他分享了他从这次经历中学到的东西——他希望在2010年的时候能够告诉自己.对于其他希望复制这种规模成功的初创公司,他讲述了如何从早期的技术团队优雅地过渡到更成熟的技术团队,如何引入新的管理层级,以及如何打造一个不断改进和创新的引擎。

建立你的早期团队来匹配你早期的需求

要让一家初创公司起步,你需要具备几样充足的东西——勤奋、精力和解决问题的能力。专业工程师吗?通常不会。根据克里格的经验,他定义了一些关键特质和能力,这些特质和能力对于打造多面手团队至关重要,并将你的初创公司带到下一个阶段:

1.知道什么时候给牦牛剃毛。

“你听过‘给牦牛剃毛’这个说法吗?”Krieger说。“有时候编程意味着解决超级复杂的技术问题。但很多时候,你需要完成一长串的任务才能到达目的地,例如,“我需要让这个iPhone应用程序在我的设备上运行,这意味着我需要生成这个配置文件,这意味着我需要为这个帐户设置,等等。”’最终,你是在给牦牛剃毛来完成最初的行动——你是如此地超脱于它。”

当您构建一个多面手的工程团队时,您需要有人准备好并愿意跟随这些线索一路走到最后。你需要那些渴望学习他们不知道的东西——那些可能超出他们职责范围的东西——来执行一项任务的人。

为了找到这些人,你可以试试下面这些面试问题:

和他们谈谈最近的一个业余项目或工作项目;在开始做真正的事情之前,他们需要刮掉哪些“牦牛”?

问他们什么时候做过跨多个学科的项目,甚至是他们在项目开始前不熟悉的项目。

2.知道什么时候牦牛不值得剃毛。

也就是说,对于初创公司来说,没有什么比工程时间更有价值了,你要确保自己合理利用了工程时间。克里格说:“人们可能会对牦牛剃须上瘾。”一个有效的工程通才知道什么时候该前进

克里格回忆起Instagram早期的一个时刻,当时他刚刚得到了一条他至今仍认为是自己最好的建议之一:监控所有

最初,这需要花费4到5个小时去执行Nagios,提供领先的基础设施监测服务。“最后我想,‘我得回去开发产品了。我要接受一个稍微不那么好的提醒方案,不那么灵活,我知道我今天可以完成,然后继续前进。”

类似地,您可能会遇到可以自己构建的情况。但如果已经存在一个好的解决方案,你应该这样做吗?“一开始,我们认为,‘我们可以想出如何制作自己的推送通知。但城市飞艇就在这里。’”Put pride aside and keep your eye on your real goal. “The goal is not to set up Nagios or Munin. The goal is to ship software so that you can get people using it.”

下面是他鉴别牦牛剃须成瘾者的最佳试金石:

克里格和他的团队会让工程师花几个小时来开发一个简单的移动应用程序或后端系统,如果他们有问题,可以完全访问Instagram团队。他说:“这有助于从那些(不是开玩笑)在4个小时中花了2个小时搭建编辑环境的工程师中找出务实的工程师。”注意他们是否明智地使用时间,而不仅仅是结果

3.行动导向的焦点。

你不可能一次完成所有的事情,那么你的初创公司需要首先处理的主要、次要和第三任务是什么?你记录它们的系统不需要很复杂,但你确实需要一个。在Instagram的早期,克里格和他的团队用滚动的谷歌Doc记录他们的行动项目,按主题组织。

“我们的主题之一是成为世界上最快的照片分享应用程序。在这个主题下,我们的工作方向是什么?接下来,我们想让这些照片看起来不可思议,远远超出你对手机的期望。我们在那上面做什么?任何不适合这些东西的东西都被搁置了。而你需要的是能够接受这一点的工程师。”

谷歌Doc是一个完美的最低限度可行的产品,用于跟踪团队的所有任务,并确保每一个任务都符合组织最重要的目标或优先事项之一。它以天为单位,又以天为主题。每个主题下未完成的任务将迁移到第二天。优先级最高的任务被标记为这样的任务。这样,就不会在混乱中迷失方向,人们很容易评论和提问,他们的眼睛总是盯着他们需要实现的目标的下一个目标。

对于Krieger来说,尽早建立一支能够适应这种类型系统的团队,并专注于与公司成功相关的永不停歇的任务战斗是至关重要的。这意味着不要雇用或与那些不关注整个公司的执行计划,只会做自己事情的人合作,或者是那些只会把时间浪费在完成不那么紧迫的任务上的人合作。

以下是对有能力以行动为导向的人的要求:

请给出一个你为在功能完整性、优化和时间安排之间取得平衡而感到自豪的例子。克里格说:“要寻找的答案是微妙的,而不是绝对的。”例如,‘我们只在游戏准备就绪时才发布游戏’或‘我们在每个截止日期前完成任务。’这两种我都听说过。”

招聘热情灵活的通才

大公司有机械化招聘团队的好处,而创业公司有自己的优势:他们可以跳出思维定式来招聘——现有的招聘要求可能与T. Krieger和他的联合创始人不匹配凯文Systrom他是第一个被雇佣的工程师,肖恩沃德斯威尼,这是一个典型的例子。“他没有完成大学学业。他是一个完全自学成才的程序员。我们认识他是因为我们是在公司实验室在38号码头,他的办公桌就在我们对面。但他体现了创业的精神我有一个想法,我会为了实现它而学习一切’。”

但是,如果你没有观察到坐在你对面桌子上的人,你怎么能对那种干劲进行评估呢?Krieger的经验,它与作为基本人格特质的普遍而明显的好奇心密切相关.因此,对于初学者来说,倾听谈话中自然好奇的迹象。“让我们感到兴奋的候选人是那些会说,‘这周我真的对围棋游戏很感兴趣,所以我创建了一个围棋原型,并学习了这个东西。’而不是说,‘我工作的公司使用React,所以我也在使用React。’”

你也可以通过一些有策略的面试问题来试探别人的好奇心。“我喜欢问,尤其是在早期阶段,‘你最感兴趣的业余项目是什么?你上次在某个项目上陷入困境是什么时候?你学到了什么?“Krieger说。

当人们的眼睛放光,某些事情让他们兴奋时,你就找到了激情,而不仅仅是职业。你需要一开始就有激情,因为工作不会局限在一个小盒子里。

灵活性在一开始也很重要——这可能意味着雇佣一些最具技能的求职者(并接受这一点)。

“我们面试了我认识的一个人,他是我见过的最好的iOS工程师之一。但在我们的谈话中,他基本上是这样说的:‘你要知道,我拒绝做服务器端工作。我觉得这是在浪费我的时间。”And that's a valid opinion,” says Krieger. Trouble is, that mindset was too specialized for where Instagram was at the time. “We didn’t want people who would hit a wall and then say, ‘Hey, I need server-side work here.’”

雇佣能够在不同堆栈之间切换的人员可以使早期的工程组织保持敏捷。它还可以帮助您避免一些陷阱。”我记得我和凯文·罗斯他说,他们早期犯的最大错误之一就是招募的工程师与他们使用的技术过于匹配说:“克里格。“这是个问题,原因有二。第一,你最终会想要发展你的技术。第二,如果人们把自己的工作保障与继续使用PHP等联系在一起,你最终会做出错误的技术选择。”

他的最后一个建议是,要比一般的新公司更早地优先考虑多元化招聘.雇佣多元化团队的好处是多方面的,在最近的科技文献中有大量的论述。但在创业初期的疯狂阶段,创业公司可能认为这些经验教训并不适用于他们——或者它仍然是优先事项列表的底部。

克里格说:“在早期阶段,我们没有足够重视招聘多元化的团队。这使得一旦女性和被低估的少数族裔成长起来,就更难让他们参与进来。“如果你在面试你的第一位女性工程师,她出现后想,‘哇,这个团队这么大,而且都是男的’,这只会让障碍变得更高。这种情况确实会发生,如果你能避免这种情况,你的状态就会好得多。”

尽早组建多元化的团队,你就能从良性循环中获益。克里格说:“一旦有几名女性加入我们的团队,我们就很高兴能轻松吸引更多女性加入。”“从参加活动到采访,再到撰写科技博客,再到只是公开露面,这催生了一个更强大的团队。”不要低估发声的价值。在招聘对话中,只说这是优先考虑的问题不会建立你的渠道,也不会引起你真正想要的候选人的兴趣。在潜在的求职者听到或看到你至少两次,甚至三次,以及你的团队反映出你的目标之前,他们不会开始理解你的想法。

不要抗拒专业化的需求

Instagram故事的下一部分如今已成为硅谷的传说:2012年,这家当时只有13人的公司被Facebook收购。届时,克里格和斯特罗姆既可以独立招募,也可以从Facebook的训练营中招募。在拥有了一个真正的品牌之后,他们也突然面临着那些带着不同期望来找他们的候选人。当然,不是每一家初创公司都会有这些条件,但接下来在技术团队多元化和专业化方面发生的事情,与你的环境无关。

随着对功能和增长的需求越来越多,团队觉得有必要引入特定的、专注的技能——也就是说,职业iOS和Android工程师可以将产品分解成多个部分,并使其比以往任何时候都更好。在创业过程中,这是一个很常见的时刻。你需要朝这个方向发展的迹象包括:

你所发明的东西超出了你所工作的平台所提供的能力。

你开始进入需要高度调整代码的新市场。以Instagram为例,这使得视频在新兴市场运行良好。

您的代码库已经扩展,需要技术引导来引导未来的增长。

随着越来越多的专业人士(如iOS和Android工程师)加入Instagram,现有团队的“无所不能”、多面手的能量首次与专业化发生了冲突。

“我们知道有一些规范的做事方式。有时它的教条;有时它的存在是有原因的,”克里格说。他回忆起一个简单,甚至愚蠢的例子:Instagram是他和Systrom的第一个大型Python项目,所以他们在早期就确定了一些代码约定。“后来,Python工程师会说,‘为什么等号周围要加空格?“我们只是觉得它看起来更好。他们说,‘没人会这么做。’”

最后,您希望导航到行业标准,因为这使新人更容易加入您的团队。(是的,克里格最终还是回去了,让他的Python代码看起来和其他人一样。)您可能会在某种程度上抗拒专业化,坚持您早期的、好斗的方式。这种诱惑作斗争。你雇佣专家是有原因的,所以让他们发挥自己的专长。

我把基础设施粘在一起,考虑到我当时的理解水平,它的健壮程度令人惊讶。但在某些时候,你需要有人来建造真正的墙,你已经在上面搭了脚手架。

当涉及到将现有的团队成员分配到一个日益专业化的结构中时,这通常会自行解决。“就连我们的多面手也喜欢其中一个领域。”这只是一个简单的问题,向每个工程师解释,成熟的组织需要什么,看看他们在哪里被自动吸引。有些人显然是被iOS所吸引,有些人则是被基础设施所吸引。一旦你观察到这一点,让他们坐下来,非常明确地告诉他们,如果他们愿意,你可以在那个特定区域全天使用他们的大脑。承认他们的技能是多么的优秀,以及他们能为公司创造什么利益。

专业化也不意味着放弃所有让您起步的灵活性,或者仅仅为了它而建立坚硬的墙。克里格说:“事实上,你早期的多面手拥有广泛的意识,这使他们成为更好的工程师。”

接受他的第一个雇佣,肖恩。“我们一度试图加快测试周期。构建和部署需要很长时间。解决方案最终是基础设施,这需要一堆Python脚本。我没有从基础架构团队中拉人进来,而是说:‘Shayne,你知道端到端的东西。你会想出这些想法,你会在你的办公桌上创建MacBuildServer。’”

拥有深入的端到端知识的人是一种总资产,远远超出了你的专长。他们可以让团队的其他成员更有效率。

在你认为你需要经理之前,你需要经理

就像你的工程师团队会发展一样,你的领导也需要成熟。一开始,你的组织可能是扁平的。不必要的管理陷阱只会损害小公司最大的资产——开放性和灵活性。不过,这并不意味着创始人可以简单地离开早期团队,自己去领导他们。

在正式管理之前,你就需要有管理者的行为。

“管理者行为”是如何体现的?举个简单的例子:一对一。克里格说:“我们花了整整一年半、两年的时间才开始做这些事情。”最后,Instagram在Benchmark的主管合伙人马特·科勒(Matt Cohler)推了他一把。“我记得在第一次与人进行一对一交谈时,我想,‘哇,还有很多隐藏在表面之下的内容是没有人谈论的。’”

现在回想起来,克里格发现压力正在积聚,他们幸运地及时释放了压力。“但对我来说,这是一个大开眼界的时刻。当你是一名创始人时,你含蓄地感到快乐——或者这甚至不是你要问的问题,因为公司是你的孩子,你试图让它成长,”他说。“加入的人对它的成功有所投入,但他们也是活生生的人,有欲望、有需求,也有问题。在多面手和专家之间的过渡时刻,我们开始有更多的管理。现在回想起来,我早就这么做了。”

实施管理行为本身是至关重要的,但它也是一个有价值的衡量标准。当你,一个创始人或早期的领导者,不能满足自己的工作成果和管理任务的要求时,是时候找另一个经理了。当你认为你可能需要,十有八九,你真的需要。

我一次又一次地看到,在Instagram和我建议的公司,一旦你增加了一个管理职位——一个你甚至不确定自己是否准备好了的职位——你会意识到,你只知道需要完成的最重要的5%。剩下的95%都没有完成,因为没有专门的人来做。”克里格说。“对我们的经理来说,这是加快招聘流程、计划活动、思考应用程序的未来。我每周有一天考虑这些事情是完全不够的。”

以下是他对从公司内外招聘经理的建议:

1.从公司内部提拔。

克里格开始采用这种方法,Instagram最初的工程经理基本上是团队中任职时间最长的成员。这提供了几个天然的优势,主要是很容易向团队的其他成员推销。“选择那些最能获得终身职位的人的好处是,他们往往是那些招募他们现在的报告的人。这已经像是管理者的行为,而且已经成为他们与团队中其他人的动力。”

不过,他承认,他很幸运这种方法能奏效,因为它并不总是自动或最佳的做法。他说:“查看终身职位一直是识别技术领导的好方法,但不一定是识别经理的正确方法。”只有当他们有兴趣以这种方式成长时,你才会想让他们成为管理者。所以一定要弄清楚。

现在,克里格确保他的所有经理都与他们的团队进行职业对话,并让他们寻找对管理感兴趣或天生有亲和力的工程师。“我的理念是,如果我们有工程师对此感兴趣,我们通常应该让他们尝试一下,并为他们提供指导。”

与新上任的经理沟通,让他们知道,如果他们需要的话,可以有一个退路。即使是那些认为自己想要这个角色的人最终也可能会发现,这个角色让他们很痛苦。“在这个过程中创建签到,比如每六个月一次。“你还幸福吗?”你想接更多的案子吗?你想做回个人贡献者吗?”Make sure people are working in the capacity that they're most excited about. If they’re not, they'll be unhappy and leave, or their teams will be unhappy.”

2.从外部招聘。

即使你从内部晋升开始,你最终也需要从外部寻找新的经理。以Instagram为例,当它的基础架构团队需要一个经理时,现有的工程师都不感兴趣。“如果说在内部提拔经理很可怕,那么雇佣第一位外部经理就更可怕10倍。那是我们面试的第一位经理。”

目前很少有管理年轻团队的人会出去找工作,所以这样的候选人很少。“如果你处于这个阶段,你通常会拼命地坚持下去,努力发展你的团队。”通常情况下,你在招聘管道中寻找的人是曾经在那里工作过的人,现在管理着一个更大的组织。“也许他们觉得自己脱离了工作,很高兴能回到工作的最深处。真正地审查为什么他们想要加入你更小、更有斗志的团队。”

将那些对你的小团队规模感到厌烦,并且看不到其发展潜力的人排除在外。“如果你看看2012年的Instagram,我们大约有一个8人的工程团队,3000万个月。你知道我们必须成长。我们没有办法不雇佣一个能够亲自处理这些问题的人。”

克里格回忆起与吉姆Everingham他于2015年聘请他担任工程主管。“他原本在雅虎管理着一个1000人的团队,现在将加入我们120人的团队。他告诉我,‘这个团队将在几年内达到500人。克里格本人也对这个数字感到惊讶。“但吉姆知道,”他说。这些都是强有力的候选人——你不需要推销他们,因为他们已经知道会发生什么。

简而言之,你要找的是对建设有真正热情的人——在很多情况下,他们的热情如此之大,以至于他们愿意在多年来第一次从一个大的,成熟的团队随时待命。作为交换,创始人应该对早期的管理者开诚布公。

作为一个第一次创业的人,你必须诚实地面对自己,你正在学习。你必须谦逊地对经验更丰富的经理说,‘我将管理你们,因为我管理着工程团队,但我很高兴能向你们学习。你找到了什么作品?”

所有关于如何组织团队会议的内容都适合在早期投入。不要试图向经理隐瞒你的经验不足;利用他们的专业知识。

“建立这种关系非常有价值。能够说,‘看,我们在一起学习。我知道为什么Instagram是这样运作的。我有直觉知道我们该怎么做。但你有经验,能够根据直觉执行。’”

让你的团队接受新的管理方式

即使你和你早期的经理能很容易地达成共识,你仍然需要让你的团队的其他成员了解环境和他们角色的变化有多快。首先,不要害羞。当招聘经理的时候,要让每个人都知道。“总是从一个为什么开始。我不知所措。我们需要有人来管理团队。’这就奠定了基础。”

当涉及到招聘本身时,有几种方法你可以选择。“你可以采取共识驱动的方式,决定让团队中的所有工程师面试候选人。你决定在招聘标准上与他们达成一致意见。”但要记住,这些团队成员本身并不是管理者,他们的评价往往取决于他们是否喜欢某个候选人。“这很难,你可能无法达成共识。”

克里格倾向于对早期的管理人员采取一种相关但温和的方法。首先,要评估候选人的资格,依靠经验丰富的领导者;他拉拢了Facebook的其他管理人员,不过其他没有同样支持的公司可能会拉拢投资者或其他企业家。然后,一旦录用条件确定——但在签署任何东西之前——把候选人带到办公室一整天。

“你很少能从现有的团队那里得到欣喜若狂的兴奋——毕竟,这是一种改变。这个团队以前是直接向你汇报的。现在他们要向另一个人汇报。但你至少可以得到‘不要雇用这个人’的信号,”克里格说。

你不太可能得到这种破坏交易的回应,但要注意一个事实,你的工程师可能仍然有担忧——他们的担忧可能不一样。“我和同一个高管教练共事多年。她告诉我的一件事是,如果一个人在一个地方的资源枯竭了,而你在另一个地方给他资源丰富了,那就没用了。这就像如果有人对他们的爱情生活感到沮丧,而你说,‘但你的工作进展得很好。’这不是让他们堕落的原因。”

(顺便说一句,指导是克里格对新领导人的最高建议之一。“我从从未管理过一个团队,到管理几十人的团队,然后是数百人。如果没有指导,我不可能做到这一点。”与他共事玛吉Hensle他通过Facebook的一个管理培训项目找到了合适的人选。)

当你提拔你的第一任或两位经理时,特别要问问自己:这对团队中的每个人有什么影响。“当我们雇佣第一个经理时,我的一个工程师说,‘你看,我刚刚离开的公司在两年内换了八个经理。两个月后我还会有新的经理吗?“那个人需要我提供担保。所以我说,‘不。我觉得他会在这里待很久。这是连续性的计划。这些是我要转交给他的优先事项。让我们继续一对一的相处几周吧。”

此外,提醒你的早期团队,这些变化对公司和他们个人都是积极的。“告诉他们,‘你也会从这个人身上学到东西。你会成长,’”克里格说。“我想我所有早期的工程师都会完全同意这一点。”

从个人身份转移到团队身份

随着组织的成熟,你不仅仅是在完善工程师的角色。您还在团队级别创建了一个新的身份单位。“人们会觉得他们过去什么都要做,而现在他们不用了。现在他们有了一个团队。”当这种情况发生时,开始重新关注影响。“我会告诉人们,‘你们现在正在做的功能?一旦上线,它的用户数量将超过你刚开始工作时Instagram的用户数量。”

这可不是说说而已。随着公司的发展,不仅可以塑造公司的产品,还可以塑造公司的理念。克里格指出了工程组织发展的两个关键阶段,每个阶段都对公司的发展有重大影响:

从多面手到平台团队。在这个阶段,当你处于规模化的风口浪尖时,你雇佣和培养的工程师将决定你长期的工程文化。“显然,早期的建造者让我们起步。但事实是,我们今天有一个成功的工程组织,我把它归功于在这个阶段围绕工程建立了正确的环境、正确的质量标准和正确的精神。”

在早期,你的通才们可能没有意愿或带宽去考虑建立规模。然而,当你朝着更专业的方向迈进时,创造这种期望是至关重要的。“你需要创造人们可以在其中操作的车道,而不是让它成为一个绝对混乱的过程,两年后你会产生大量的技术债务。”对于Instagram来说,这意味着围绕平台培养身份。

“作为Instagram的iOS工程师,或Android工程师,或基础设施工程师,我们创造了一个非常强大的身份。我希望人们认为,‘我们现在只有8名Android工程师,但几年后可能会达到30或40名。我们今天需要做些什么来建立解决问题的机制呢?’”

通过围绕平台进行组织,克里格可以让他的团队加倍关注质量。“以Android为例。从一开始,我们就希望能够推出一款高质量、优化的Android应用,甚至超越该平台当时的水平。”这种专注体现了他们的工作方式和雇佣对象。

“我们说的是先做简单的事情,力求简单,而不是过分抽象。应该为结果而自豪,而不是为你创造出来的抽象概念而自豪。”这些对Instagram的成功至关重要的价值观,在公司发展的这一阶段得到了具体化。

人们经常把按平台组织的阶段视为产品团队的必经之路。我认为这实际上是当你形成你的工程文化。

从平台团队到产品团队。多年后,Instagram已经超越了平台,成为其核心工程部门。现在他们围绕产品团队建立身份。

说到这种转变,时机就是一切。如果做得太快,你就失去了中间阶段文化建设的好处。但是,做得太晚了,你可能会播下不和的种子。克里格说:“我们大约有150名工程师进行了转换,但为时已晚。”“我认为临界点——也是我们需要改变的最明显的迹象——就是你的产品经理和你的工程经理开始互相憎恨。”

在转换之前,任何新产品的产品经理都必须找到每个工程经理,并从他们的团队中招募一名工程师。克里格说:“很好,现在你要和四位工程经理以及至少四位工程师一起完成一件事。”“你挑选了非常聪明的人,让他们成为人力资源配置人员。”与此同时,没有人对公司正在做什么有一个广泛的看法。“每个人都在努力做出全球优先级的决定,但他们只有当地的能见度。”

通过围绕产品进行组织,克里格恢复了以目标为导向的效率(和良好意愿)。克里格发现,就像从多面手到专业文化的最初转变一样,这在很大程度上是自我选择。他说:“你所做的一切就是把以前隐含的偏好变得明确起来。”“例如,我们会说,‘谁想从事现代化工作?”Whereas we used to have a ragtag crew of interested people on different platform teams, now they’re working together.”

当你围绕所有核心产品组建团队时,你可能也会发现没有人特别感兴趣的缺口——这没关系。“现在你有了下一步行动,那就是招募那些对iOS的发展感到兴奋的人。”

最终,7年、300人之后,Instagram工程组织的使命与谷歌文档式的任务相比并没有改变。“你必须记得再问一次,目标是什么?你在解决什么问题?在我们的墙外,没有人关心我们是如何做到这一点的,他们只关心产品的质量。作为一项指导原则,我们一直在组建工程团队,共同承担创造高质量产品的责任,最终,这是你们在任何规模或阶段都应该朝着的目标。”