1
本文作者: 董飛 | 2016-05-04 10:38 |
雷鋒網(wǎng)按:本文作者Lan Langworth,翻譯周萌萌 Betty,首發(fā)公號”董老師在硅谷“。
Lan Langworth是前Google軟件工程師、O'Reily作者,現(xiàn)在他是Artillery的co-founder/CTO,致力于把游戲機(jī)質(zhì)量的游戲帶進(jìn)網(wǎng)頁瀏覽器。下文是他從Google離職到創(chuàng)業(yè)的心路歷程。
不久以前,我還是一名籌劃著自己第一家公司的軟件工程師。顯然,有許多需要考慮的地方,但是最讓我興奮的是那些「未知的未知」——我知道會出現(xiàn)、但不可預(yù)知的挑戰(zhàn)。雖然有一群可靠的商業(yè)伙伴和我這個(gè)技術(shù)宅一起工作,但是我深知從第一行命令開始,要建立一家成功的公司還要付出很多。正如你想象的,有許多我沒有預(yù)計(jì)的東西都發(fā)生了。所以,我寫了下面這些「未知」,獻(xiàn)給那些憧憬著去創(chuàng)業(yè)公司當(dāng)co-founder的工程師們。
2006年當(dāng)Google給我offer的時(shí)候,我開心地接受了。那個(gè)時(shí)候,Google幾乎是一名軟件工程師工作的最好選擇,意味著你可以和世界上最聰明的一群人一起工作,還可以隨意使用世界上最先進(jìn)的工具。
然而,它好壞參半。一方面,我真心相信在Google這樣的公司你距離參與創(chuàng)造奇跡近了一步,心安理得地享受Google提供的優(yōu)厚待遇。Google提供的基礎(chǔ)要求,如季度目標(biāo),使命,核心價(jià)值觀,代碼規(guī)范等能為你創(chuàng)立公司提供幫助。
另一方面,在Google,很難保持沖勁和創(chuàng)造力。離開Google、加入Redbeacom是我做過的最好的決定之一。我是他們的第一位雇傭的全職工程師,并幫助建立了整支隊(duì)伍,還為產(chǎn)品開發(fā)制定了排期。這些都是在Google做不到的,因?yàn)樵诖蠊?,軟件工程師很容易被隔離在業(yè)務(wù)線外,你唯一的責(zé)任就是輸出優(yōu)質(zhì)的代碼。但是,如果你以第五個(gè)人的身份進(jìn)入一家公司,你會看見整個(gè)公司正在運(yùn)轉(zhuǎn)的所有事情,你也在業(yè)務(wù)的前線,有機(jī)會參與重大決策。任何相當(dāng)技術(shù)Leader的人都應(yīng)該加入一家早期的公司獲得這種體驗(yàn)。
今天,作為Artillery的CTO和co-founder,我的生活一半是巨大的自由,一半是巨大的責(zé)任。Artillery正在努力創(chuàng)造一項(xiàng)發(fā)明(讓瀏覽器編程高質(zhì)量的游戲機(jī))。這是我作為工程師的沖動,可以任意地按我們的路線創(chuàng)造。同時(shí),我們都知道,如果我們的技術(shù)可行,很快就會面對更多的用戶,同時(shí)承受隨之而來的更大的壓力和期待。
在某些時(shí)候,你得相信自己做的是正確的事情。將「我想我們可以這樣做」換成「這就是注定要發(fā)生的」這種心理暗示并不容易,但這就是讓我進(jìn)步的原因。有人認(rèn)為這是信心,我不這樣認(rèn)為,我想它更關(guān)乎一種信念。
在加入Artillery的頭幾個(gè)月,其他的founders和我都已經(jīng)數(shù)次激怒了對方。我開始想在這樣一支小的隊(duì)伍,相對于在Google溝通應(yīng)該不在話下。但是我錯(cuò)了。
三位co-founders的溝通很混亂,一個(gè)人說給另一個(gè)人,第二個(gè)人又傳話給第三個(gè)人。作為一名軟件工程師,如果你在一支全是工程師的隊(duì)伍,溝通是相對容易的。當(dāng)這支隊(duì)伍混入了其他職位的人,且多于10個(gè),溝通會變得有點(diǎn)棘手。相信我,溝通會比你想象的難,但是必須好好地掌握。
所以我們準(zhǔn)備花更多的時(shí)間一起籌劃,花一個(gè)小時(shí)的時(shí)間坐在房間,清楚地寫出來當(dāng)下在進(jìn)行的事情。第一次這樣做的時(shí)候,在不到60分鐘的時(shí)候,我們就解決了能想出來的大部分問題,這些問題大部分都是由于溝通失誤造成的誤解(!)。從此每周,我們都會開一次這樣的founder's meeting。同時(shí),我們會把決定都記在一個(gè)常用的Google文檔,方便隨時(shí)查閱。從此我們再也沒有出現(xiàn)過嚴(yán)重的分歧。
但是,僅僅增加溝通的量是不夠的,更重要的是要更好地溝通。當(dāng)我們剛開始例會的時(shí)候,我們經(jīng)常陷入無休止的浪費(fèi)時(shí)間的爭論中。過了30分鐘后,我們才意識到方才是在用各自不同的話語表達(dá)同一個(gè)觀點(diǎn)。一個(gè)簡單的短語,比如「需要一項(xiàng)政策」,可以意味著一本10頁的手冊,也可以是一句話的規(guī)則。所以現(xiàn)在,在我們開始反駁的時(shí)候,我們會先花時(shí)間確保理解我們的出發(fā)點(diǎn)是什么。這樣會提高溝通效率,節(jié)約時(shí)間。
我們制定了這類會議中的三個(gè)原則:首先,會議是私人性質(zhì)的,所以我們會給與彼此最坦誠的反饋,這就讓我們把自我關(guān)在了門外,可以開誠布公地討論。這會導(dǎo)致我們中的某人說:「哦,我不認(rèn)為它會這樣?!菇ㄔO(shè)性的批判對話讓我們更好地完善自我。
其次,e-mail的問題。通過e-mail很難傳遞情緒,很容易成為誤解的發(fā)源地。誤解一封e-mail,變得心煩,甚至影響表現(xiàn)——實(shí)在太容易了。同樣的話語,如果是面對面的對話就會有完全不一樣的效果。
我有一個(gè)簡單的小技巧可以在e-mail中傳遞情緒:當(dāng)我懷疑我發(fā)出的某條信息可能會有歧義,我會加一個(gè)表情,比如[mood: agreeable],從而確保傳達(dá)出我樂意的態(tài)度。如果你也這樣做,你會發(fā)現(xiàn)它非常有效,可以讓所有人保持冷靜的情緒,避免爭端。
開始組建團(tuán)隊(duì)的時(shí)候,我們會說很多在Artillery工作的美好愿景,包括各種各樣的福利待遇。我們希望用有趣又有意義的工作來吸引最優(yōu)秀的人才。
于是我們在網(wǎng)站上掛了很多福利:免費(fèi)午餐、完善的醫(yī)療保險(xiǎn)、交通報(bào)銷、無限的假期、workstation預(yù)算、從東京買來的游戲原型手辦……然而,列出這些福利簡單,將它們落實(shí),建立一個(gè)「程序員烏托邦」卻是困難的。
開始,我以為無期限的假期是一個(gè)好主意。畢竟,它是Netflix(美國顧客滿意度最高的公司)著名的文化甲板,在他那里很奏效。然而,在我這兒,似乎卻給員工帶來了更多的壓力,優(yōu)秀的員工害怕他們休假太多而不敢提出請求。最后,我們決定還是采取固定期限的帶薪休假模式——既能緩解員工焦慮,又能足量地滿足員工的度假需求。
在有新員工提出各種奇怪需求前,自主選擇編程裝備是一個(gè)好主意。但是,誰知道20美元的Razer Goliathus鼠標(biāo)墊值不值?有員工提出用他們自己的筆記本工作,把它們的預(yù)算花在昂貴的外設(shè)上。還有員工想要高昂維護(hù)費(fèi)用的組裝系統(tǒng)。至此,我終于確定每個(gè)人都應(yīng)該用Mac OS X——因?yàn)樗銐蚋蓛簟⒑唵巍?/p>
要解決問題首先要理解福利的實(shí)質(zhì)是什么。比如說買設(shè)備,它的目的不是無限制地滿足員工的每一個(gè)細(xì)微的需求,而是為他們提供良好的工作環(huán)境,確保沒有人還在使用老舊、遲緩的電腦。讓每個(gè)人理解政策、福利背后的邏輯,可以幫助他們做出更好、更謹(jǐn)慎的決策。
福利一旦實(shí)施,就很難輕松收回??赡艹四阕约?,并沒有別人理解福利的目的。那些員工看似在浪費(fèi)你的好意,其實(shí)并沒有惡意。你得提醒他們理解這個(gè)福利的機(jī)制。
我知道CTO的職位意味著更多的責(zé)任,卻不代表冗長的會議和官僚主義。除了技術(shù),CTO還要承擔(dān)更多的管理職能:雇傭合適的員工,解雇不合適的員工,持續(xù)地創(chuàng)造和輸出idea,帶著目標(biāo)團(tuán)結(jié)隊(duì)伍。
當(dāng)我們籌集資金的時(shí)候,我第一次遇到這些挑戰(zhàn)。和投資者周旋對一位軟件工程師來說真是一件苦差事,如果你也習(xí)慣了坐在自己的工位,僅通過GChat彼此交流。突然之間,我得穿上沒有洞的襯衫參加各種大型會議,并試圖說服在場的人我們能實(shí)現(xiàn)不可能的事。
對于工程師來說,承諾一周以后的deadline已經(jīng)很難了。投資人卻會challenge你承諾今后1~2年的事情,并會在每一個(gè)節(jié)點(diǎn)問你問題?!刚娴膯幔俊顾麄冎械挠腥苏f,「你要做一個(gè)AAA游戲?你怎么把2G的內(nèi)容放進(jìn)瀏覽器?你怎么讓它有趣?」
幸運(yùn)的是,多年的軟件工程師生涯賦予了我一項(xiàng)珍貴的技能:直覺。我毫不懷疑我們在做的事情是可行的。一旦我自己深信不疑,讓其他人相信也就輕松多了。
就像說服投資人,團(tuán)結(jié)新的隊(duì)伍也是一項(xiàng)挑戰(zhàn)。多個(gè)月之前,我們決定做游戲,雖然不知道它會成為什么樣子,但是開始做是第一步。一位合作的藝術(shù)家給我發(fā)來了一張游戲的圖片,是一片郁郁蔥蔥的草地。我把它做成了36"X24”的大海報(bào),掛在墻上。從此,無論誰問我他們接下來要干嘛,我都會指著這張圖說:「只要能讓我們離這里更進(jìn)一步?!惯@是自我驅(qū)動型工程師需要聽到的話。我們有一個(gè)清晰的目標(biāo),就踏踏實(shí)實(shí)地掛在墻上,我們要做的就是努力實(shí)現(xiàn)它。
Web開發(fā)是一個(gè)有創(chuàng)造力的快速發(fā)展的世界。各種各樣的新idea和工具層出不窮,似乎換一個(gè)新框架或代碼就能解決你所有的問題。但是作為CTO你要記住,挑選怎樣的技術(shù)相當(dāng)于你花了一筆真金白銀,一旦你做了決定,很可能你就沒有時(shí)間和資源再走回頭路了。
在Artillery,我們清楚我們會寫很多JavaScript,即使大家都懂,JavaScript有各種讓你不爽的地方 。我們之前有使用過CoffeeScript,它運(yùn)作得不錯(cuò),我們也喜歡它的作者做的大部分決定,所以我們最終選擇了它。然而最關(guān)鍵的原因是,我們并不會被困死在CoffeeScript上。如果哪天我們想丟棄它,我們可以將輕量級的CoffeeScript全部編譯成JavaScript,并從那里繼續(xù)前進(jìn)。這么做合情合理,而且成本也很低。
服務(wù)器端的決定就沒有那么容易。Node.js顯然是我們的首選,它可以輕松分享客戶端和服務(wù)器端的代碼。然而,那個(gè)時(shí)候Node.js還很年輕,而且它的生態(tài)圈也不成熟。當(dāng)時(shí)很難評估Node.js的第三方庫的質(zhì)量和安全性,有很多相似功能、但又在開發(fā)的不同階段的庫。
這讓我們停下來思考了一下。但是經(jīng)過更多的研究,一件事情提醒了我們:Node.js的更新速度很快。Node.js基于的V8,已經(jīng)被證明在Google Chrome上跑得又快又干凈。如果只有一家公司擁有最多值得信任的聰明人在致力于語言,那就是Google。依靠這個(gè)框架似乎是一個(gè)安全的選擇。Node.js的代碼新版本是一致的,而且強(qiáng)大的Github社區(qū)又提供了頻繁代碼更新的便利。在仔細(xì)的審議后,我們決定用Node.js,現(xiàn)在很慶幸我們做了這個(gè)決定。
我很喜歡side project,我總是要做點(diǎn)什么——一個(gè)游戲、一個(gè)webapp,或其他的什么工具。這是我保持學(xué)習(xí),玩兒新東西的方法。但是當(dāng)Artillery成為現(xiàn)實(shí),我的興趣突然成為我的全職,我該怎么度過我的空閑時(shí)間呢?
我曾經(jīng)花了一個(gè)周末,和一個(gè)朋友做一個(gè)電商網(wǎng)站的原型?!富ú涣硕嚅L時(shí)間的」我記得我還這樣說過,「我只需要用Django、PayPal和一個(gè)購物車?!顾拇_只花了兩天,卻耗盡了我一個(gè)禮拜的精力。
從此,我才意識到精神充電是必須的。在其他項(xiàng)目上分腦力讓我在工作中降低了效率。作為CTO,跟上新技術(shù)是我的責(zé)任,為什么我還要做那些無益于我提高的事情呢?做外部的項(xiàng)目會給我的正職帶來壓力,對我的合伙人也不公平。
我停掉了side project,創(chuàng)造力和精力又回來了。雖然我有時(shí)還是會陷入卡殼,想修復(fù)一個(gè)bug卻怎么也辦不到,但是了解了生產(chǎn)力低谷周期后,我放輕松了。
如果此時(shí)狀態(tài)不佳,不如接受它,和周圍的伙伴交流一下,做一些簡單的活兒。這樣總比恐慌、錯(cuò)過deadline要好。
如果你真的什么都做不了,告訴你一個(gè)小技巧:想想那些你完全不想碰的事情。再做手邊的事情就舒服多了。
如果你知道某件事是對的,即使你還不能馬上知道原因,先開始做。推論是:如果某件事情感覺不對,無論是招聘、管理、談判,還是其他決策,聽從你的內(nèi)心。CTO的工作很辛苦,會用掉你全部的腦力和直覺——但是除了它也沒有別的什么我想做的了。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。