从 Google 工程师到创业 CTO,这 8 个理念让他一路坚持下来

公司

2016-05-02 14:32

原文:How to Go From Google Engineer to First-Time CTO 翻译:周萌萌 Betty。 Lan Langworth 是前 Google 软件工程师、O’Reily 作者,现在他是 Artillery 的 co-founder/CTO,致力于把游戏机质量的游戏带进网页浏览器。下文是他从 Google 离职到创业的心路历程。

不久以前,我还是一名筹划着自己第一家公司的软件工程师。显然,有许多需要考虑的地方,但是最让我兴奋的是那些「未知的未知」——我知道会出现、但不可预知的挑战。虽然有一群可靠的商业伙伴和我这个技术宅一起工作,但是我深知从第一行命令开始,要建立一家成功的公司还要付出很多。正如你想象的,有许多我没有预计的东西都发生了。所以,我写了下面这些「未知」,献给那些憧憬着去创业公司当 co-founde 的工程师们。

方向和信念

2006 年当 Google 给我 offer 的时候,我开心的接受了。那个时候,Google 几乎是一名软件工程师工作的最好选择,意味着你可以和世界上最聪明的一群人一起工作,还可以随意使用世界上最先进的工具。

google-budapest-office-2

(图片来自:OfficeLovin’

然而,它好坏参半。一方面,我真心相信在 Google 这样的公司你距离参与创造奇迹近了一步,心安理得地享受 Google 提供的优厚待遇。Google 提供的基础要求,如季度目标,使命,核心价值观,代码规范等能为你创立公司提供帮助。 另一方面,在 Google,很难保持冲劲和创造力。离开 Google、加入 Redbeacom 是我做过的最好的决定之一。我是他们的第一位雇佣的全职工程师,并帮助建立了整支队伍,还未产品开发制定了排期。这些都是在 Google 做不到的,因为在大公司,软件工程师很容易被隔离在业务线外,你唯一的责任就是输出优质的代码。但是,如果你以第五个人的身份进入一家公司,你会看见整个公司正在运转的所有事情,你也在业务的前线,有机会参与重大决策。任何相当技术 Leader 的人都应该加入一家早期的公司获得这种体验。

今天,作为 Artillery 的 CTO 和 co-founder,我的生活一半是巨大的自由,一半是巨大的责任。Artillery 正在努力创造一项发明(让浏览器编程高质量的游戏机)。这是我作为工程师的冲动,可以任意地按我们的路线创造。同时,我们都知道,如果我们的技术可行,很快就会面对更多的用户,同时承受随之而来的更大的压力和期待。

在某些时候,你得相信自己做的是正确的事情。将「我想我们可以这样做」换成「这就是注定要发生的」这种心理暗示并不容易,但这就是让我进步的原因。有人认为这是信心,我不这样认为,我想它更关乎一种信念。

沟通的失败

Team-Meeting

在加入 Artillery 的头几个月,其他的 founders 和我都已经数次激怒了对方。我开始想在这样一支小的队伍,相对于在 Google 沟通应该不在话下。但是我错了。 三位 co-founders 的沟通很混乱,一个人说给另一个人,第二个人又传话给第三个人。作为一名软件工程师,如果你在一支全是工程师的队伍,沟通是相对容易的。当这支队伍混入了其他职位的人,且多于 10 个,沟通会变得有点棘手。相信我,沟通会比你想象的难,但是必须好好地掌握。

所以我们准备花更多的时间一起筹划,花一个小时的时间坐在房间,清楚地写出来当下在进行的事情。第一次这样做的时候,在不到 60 分钟的时候,我们就解决了能想出来的大部分问题,这些问题大部分都是由于沟通失误造成的误解(!)。从此每周,我们都会开一次这样的 founder’s meeting。同时,我们会把决定都记在一个常常的 Google 文档,方便随时查阅。从此我们再也没有出现过严重的分歧。

但是,仅仅增加沟通的量是不够的,更重要的是要更好地沟通。当我们刚开始例会的时候,我们经长陷入无休止的浪费时间的争论中。过了 30 分钟后,我们才意识到方才是在用各自不同的话语表达同一个观点。一个简单的短语,比如「需要一项政策」,可以意味着一本 10 页的手册,也可以是一句话的规则。所以现在,在我们开始反驳的时候,我们会先花时间确保我们理解我们的出发点是什么。这样会增加沟通效率,节约时间。

我们制定了这类会议中的三个原则:首先,会议是私人性质的,所以我们会给与彼此最坦诚的反馈,这就让我们把自我关在了门外,可以开诚布公地讨论。这会导致我们中的某人说:「哦,我不认为它会这样。」建设性的批判对话让我们更好地完善自我。

其次,email 的问题。通过 email 很难传递情绪,很容易成为误解的发源地。误解一封 email,变得心烦,甚至影响表现——实在太容易了。同样的话语,如果是面对面的对话就会有完全不一样的效果。

Redbooth101-LetstalkAboutEmail-Redbooth

(图片来自:Redbooth

我有一个简单的小技巧可以在 email 中传递情绪:当我怀疑我发出的某条信息可能会有歧义,我会加一个表情,比如 [mood: agreeable],从而确保传达出我乐意的态度。如果你也这样做,你会发现它非常有效,可以让所有人保持冷静的情绪,避免争端。

建立「程序员乌托邦」并不容易

Ballmer

(图片来自:XDA

开始组建团队的时候,我们会说很多在 Artillery 工作的美好愿景,包括各种各样的福利待遇。我们希望用有趣又有意义的工作来吸引最优秀的人才。

于是我们在网站上挂了很多福利:免费午餐、完善的医疗保险、交通报销、无限的假期、workstation 预算、从东京买来的游戏原型手办……然而,列出这些福利简单,将它们落实,建立一个「程序员乌托邦」却是困难的。

开始,我以为无期限的假期是一个好主意。毕竟,它是 Netflix(美国顾客满意度最高的公司)著名的文化甲板,在他那里很奏效。然而,在我这儿,似乎去给员工带来了更多的压力,优秀的员工害怕他们休假太多而不敢提出请求。最后,我们决定还是采取固定期限的带薪休假模式——既能缓解员工焦虑,又能足量地满足员工的度假需求。

在有新员工提出各种奇怪需求前,自主选择编程装备是一个好主意。但是,谁知道 20 美元的 Razer Goliathus 鼠标垫值不值?有员工提出用他们自己的笔记本工作,把它们的预算花在昂贵的外设上。还有员工想要高昂维护费用的组装系统。至此,我终于确定每个人都应该用 Mac OS X——因为它足够干净、简单。

「福利」可能并没有什么用

TopGrovemade-Desk-Collection

(图片来自:Cult of Mac

要解决问题首先要理解福利的实质是什么。比如说道买设备,它的目的不是无限制地满足员工的每一个细微的需求,而是为他们提供良好的工作环境,确保没有人还在使用老旧、迟缓的电脑。让每个人理解政策、福利背后的逻辑,可以帮助他们做出更好、更谨慎的决策。

福利一旦实施,就很难轻松收回。可能除了你自己,并没有别人理解福利的目的。那些员工看似在浪费你的好意,其实并没有恶意。你得提醒他们理解这个福利的机制。

离开舒适区

Panasonic-Peoples-Triathlon-Mission-Bay-15.12.2013-026

(图片来自:奥克兰铁人三项俱乐部

我知道 CTO 的职位意味着更多的责任,却不代表冗长的会议和官僚主义。除了技术,CTO 还要承担更多的管理职能:雇佣合适的员工,解雇不合适的员工,持续地创造和输出 idea,带着目标团结队伍。

当我们筹集资金的时候,我第一次遇到这些挑战。和投资者周旋对一位软件工程师来说真是一件苦差事,如果你也习惯了坐在自己的工位,仅通过 GChat 彼此交流。突然之间,我得穿上没有洞的衬衫参加各种大型会议,并试图说服在场的人我们能实现不可能的事。

对于工程师来说,承诺一周以后的 deadline 已经很难了。投资人却会 challenge 你承诺今后 1-2 年的事情,并会在每一个节点问你问题。「真的吗?」他们中的有人说,「你要做一个 AAA 游戏?你怎么把 2G 的内容放进浏览器?你怎么让它有趣?」

幸运的是,多年的软件工程师生涯赋予了我一项珍贵的技能:直觉。我豪不怀疑我们在做的事情是可行的。一旦我自己深信不疑,让其他人相信也就轻松多了。

就像说服投资人,团结新的队伍也是一项挑战。多个月之前,我们决定做游戏,虽然不知道它会成为什么样子,但是开始做是第一步。一位合作的艺术家给我发来了一张游戏的图片,是一片郁郁葱葱的草地。我把它做成了 36″x24″ 的大海报,挂在墙上。从此,无论谁问我他们接下来要干嘛,我都会指着这张图说:「只要能让我们离这里更进一步。」这是自我驱动型工程师需要听到的话。我们有一个清晰的目标,就踏踏实实地挂在墙上,我们要做的就是努力实现它。

选择正确的技术

3034512-poster-p-1-treehousecoders

(图片来自:快公司

Web 开发是一个有创造力的快速发展的世界。各种各样的新 idea 和工具层出不穷,似乎换一个新框架或代码就能解决你所有的问题。但是作为 CTO 你要记住,挑选怎样的技术相当于你花了一笔真金白银,一旦你做了决定,很可能你就没有时间和资源再走回头路了。

在 Artillery,我们清楚我们会写很多的 JavaScript,即使大家都懂的,JavaScript 有各种让你不爽的地方 。我们之前有使用过 CoffeeScript,它运作的不错,我们也喜欢它的作者做的大部分决定,所以我们最终选择了它。然而最关键的原因是,我们并不会被困死在 CoffeeScript 上。如果哪天我们想丢弃它,我们可以将轻量级的 CoffeeScript 全部编译成 JavaScript,并从那里继续前进。这么做合情合理的,而且成本也很低。

服务器端的决定就没有那么容易。Node.js 显然是我们的首选,它可以轻松分享客户端和服务器端的代码。然而,那个时候 Node.js 还很年轻,而且它的生态圈也不成熟。当时很难评估 Node.js 的第三方库的质量和安全性,有很多相似功能、但又在开发的不同阶段的库。

这让我们停下来思考了一下。但是经过更多的研究,一件事情提醒了我们:Node.js 的更新速度很快。Node.js 基于的 V8,已经被证明在 Google Chrome 上跑的又快又干净。如果只有一家公司拥有最多值得信任的聪明人在致力于语言,那就是 Google。依靠这个框架似乎是一个安全的选择。Node.js 的代码新版本是一致的,而且强大的 Github 社区又提供了频繁代码更新的便利。在仔细的审议后,我们决定用 Node.js,现在很庆幸我们做了这个决定。

Harbor 你的资源

我很喜欢 side project,我总是要做点什么——一个游戏、一个 WebApp,或其他的什么工具。这是我保持学习,玩儿新东西的方法。但是当 Artillery 成为现实,我的兴趣突然成为我的全职,我该怎么度过我的空闲时间呢?

我曾经花了一个周末,和一个朋友做一个电商网站的原型。「花不了多长时间的」我记得我还这样说过,「我只需要用 Django、PayPal 和一个购物车。」它的确只花了两天,却耗尽了我一个礼拜的精力。

从此,我才意识到精神充电是必须的。在其他项目上分脑力让我在工作中降低了效率。作为 CTO,跟上新技术是我的责任,为什么我还要做那些无益于我提高的事情呢?做外部的项目会给我的正职带来压力,对我的合伙人也不公平。 我停掉了 side project,创造力和精力又回来了。虽然我有时还是会陷入卡壳,想修复一个 bug 却怎么也办不到,但是了解了生产力低谷周期后,我放轻松了。

如果此时状态不佳,不如接受它,和周围的伙伴交流一下,做一些简单的活儿。这样总比恐慌、错过 deadline 要好。

如果你真的什么都做不了,告诉你一个小技巧:想想那些你完全不想碰的事情。再做手边的事情就舒服多了。

相信你的直觉

如果你知道某件事是对的,即使你还不能马上知道原因,先开始做。推论是:如果某件事情感觉不对,无论是招聘、管理、谈判,还是其他决策,听从你的内心。CTO 的工作很辛苦,会用掉你全部的脑力和直觉——但是除了它也没有别的什么我想做的了。

题图来自:WallpapersXL

登录,参与讨论前请先登录

评论在审核通过后将对所有人可见

正在加载中

硅谷工程师,关注创业趋势,大数据,在线教育和社交自媒体。曾就职于亚马逊和 LinkedIn,现运营微信号“董老师在硅谷(donglaoshi-123)”。

本篇来自栏目

解锁订阅模式,获得更多专属优质内容