工作10年感悟:小公司里如何精進?
前幾天,我在現(xiàn)在的公司工作滿五周年了,想想還蠻意外的,意外在于,沒有想到在一家公司居然會呆上五年之久。
圖片來自 Pexels
在我之前的印象中,在一家公司呆兩年是比較合適的,也許一年就夠。理由很簡單,在一家公司真的呆了一年,假如你足夠勤奮,應(yīng)該足夠?qū)W習(xí)到你想學(xué)習(xí)的東西了,尤其是你的 Mentor 的技能。
全部學(xué)習(xí)到不可能,但是學(xué)個五六成應(yīng)該沒問題了,否則只能怪自己太笨了。
那時候我覺得,在一家公司呆五六年的人好奇怪,什么工作值得干上五六年?
在來這邊工作后,知道谷歌那邊有一些人干了十幾年,一呆就呆到至少當(dāng)上 Staff Engineer,覺得也是很莫名其妙。
公司再好,一個事情干好幾年總會膩,并且容易瓶頸。我前公司的領(lǐng)導(dǎo)們,不少是在百度呆了五六年以上,還都是一畢業(yè)就在百度的。
那會我覺得挺神奇的,百度呆這么久,高 T 也沒混上,不知道圖什么?,F(xiàn)在我對之前的想法有所改變。
下文會說一說在一家公司呆五六年到底還能學(xué)什么。還是從自己的工作經(jīng)歷總結(jié)起吧。
十年一瞬
大家別奇怪,標(biāo)題是工作八年,怎么這里成了十年了?因為我真的工作了十年,其中前兩年是全職實習(xí)生。
工作的經(jīng)歷大概如下:
- 2009-2010 年,在一家小公司做服務(wù)器開發(fā)和 IM 客戶端開發(fā)。接觸 Linux 開發(fā)和 Windows 開發(fā)。當(dāng)時后期帶四五個人的團隊。
- 2010-2012 年,在云壤工作,1 年實習(xí),1 年正式。云壤是我知道的迄今為止谷歌工程師最密集的創(chuàng)業(yè)公司,我去的時候大概二十幾個員工,谷歌來的十個以上,來來往往的前谷歌人估計接近二十個。
在云壤接觸了搜索引擎,對爬蟲,索引挑選,網(wǎng)頁處理等有較多的接觸。當(dāng)時沒有帶人,一心當(dāng)小弟。
- 2012-2014 年,在宜搜科技,做移動搜索引擎。宜搜目前沒什么名氣,當(dāng)時還是移動搜索的重要玩家,云壤當(dāng)時從網(wǎng)頁搜索轉(zhuǎn)型移動搜索,競品分析里就有宜搜。
入職時擔(dān)任的是爬蟲組負(fù)責(zé)人,工作主要是爬蟲。后來也負(fù)責(zé)索引和一些新業(yè)務(wù)的整個后端。在宜搜大約一年,升職搜索架構(gòu)師,當(dāng)時在宜搜我應(yīng)該是最年輕的架構(gòu)師了。
不過可惜,在宜搜學(xué)習(xí)到的技術(shù)并不多,主要是技術(shù)輸出。后來一位 exGoogler 告訴我說,我在宜搜兩年其實有點耽誤了,一定程度上我是認(rèn)同的。當(dāng)時最多帶十幾個人。
- 2014 年至今,在當(dāng)前公司任職。在這邊工作接近兩年后,升職技術(shù)總監(jiān),又過三年,升職高級技術(shù)總監(jiān)。
開始的時候帶人兩三個,中間幾乎單干,后來五六個,十來個都有。目前多點。
多變的時代和行業(yè)
回顧十年的工作經(jīng)驗,蠻多感慨的,這樣的感慨也發(fā)生在閱讀《浪潮之巔》《硅谷之謎》時。時代變快真是快,尤其是 IT 行業(yè)。快到連追逐浪花的勇氣都快沒有了。
在 2009 年的時候,當(dāng)時還是百度當(dāng)霸主,大家以能進百度為榮。那會我也去百度面試了,沒記錯的話我在實習(xí)和應(yīng)屆校招都面試過,人家沒把我當(dāng)回事。后來在畢業(yè) 1 年后,百度給過個 Offer,接近 T6,不過我沒去。
目前,百度對人才的吸引力更弱了一些。我認(rèn)識的一些人,目前也都在猶豫要不要離開百度。
后來實習(xí)做 IM 的時候,那會大家都認(rèn)為能去騰訊開發(fā) QQ 絕對是很牛逼的事情,錢多,有成就感,你想,幾億用戶在使用 QQ 這個產(chǎn)品。
這會別說開發(fā) QQ 有多牛逼,開發(fā) Windows 客戶端都快涼涼了。微信都面世八年多了。
那會我剛來這邊的時候,大家還不知道人工智能是啥玩意,聽過的就是推薦,廣告,搜索,最多機器學(xué)習(xí),意圖理解等。
我在加入這邊的時候,還搜索了一番,覺得語音不靠譜,難度太大,后來沒多久,鋪天蓋地都在炒作人工智能,應(yīng)屆生不管什么專業(yè),都在簡歷上寫自己在人工智能上多有積累和造詣。
也許過幾年,又會回到語音技術(shù),圖像處理技術(shù),搜索技術(shù),推薦技術(shù),廣告技術(shù),而不是目前人人皆說人工智能的狀況。
異于常人的選擇
我呆過的最大的公司就是目前的公司,最多達到 800+ 人,估值在獨角獸水平。呆的第一個公司,入職時 10 個人不到。
第二家去的時候工號 21,離開的時候大概兩百人。第三家去的時候五六百人,離開的時候估計三四百人。
目前的公司加入時三十幾個,在 A 輪階段,后來有了 B 輪、C 輪、D 輪等。
我也和幾乎所有的應(yīng)屆生一樣,有大公司情結(jié)。不過我屬于比較懶的人,有了選擇后,可能就放棄再次面試和比較了,比較能說服自己:“想學(xué)習(xí)哪里都一樣”。
不過我懂得學(xué)習(xí)的法門,卻是花了好幾年的時間,以后有時間再專文分享。
實習(xí)的時候,大部分同學(xué)去了大公司,比如微軟,人人網(wǎng),Adobe,百度,網(wǎng)易有道等。
不過目前來看,人人網(wǎng)幾乎掛了,Adobe 退出中國了,網(wǎng)易有道早就和搜索沒啥關(guān)系了。死不死其實和大公司與否沒啥關(guān)系。
而我呢,當(dāng)時因為比較懶,有了選擇后,第二天就去報道了,我告訴自己,Offer 其實還可以的,實習(xí)薪資一天還有 120 呢,可以了,加上飯補 20,一天 140 了,一個月三千多呢。
當(dāng)時就是這么樂觀,算錢的時候算“Total Package”來安慰自己,不過在實習(xí)快一年的時候,我離開了這家小公司。
雖然當(dāng)時我還在公司的“管理層”,公司的管理層會議,我還參與過幾次。不過我覺得自己應(yīng)該追求技術(shù),而不是太早將精力花在管理上。
畢業(yè)的時候,大部分同學(xué)也都去了大公司或者國企等。比如阿里,EMC,百度等。
而我當(dāng)時幾乎沒有投過簡歷,記得當(dāng)時可能唯一面試過的互聯(lián)網(wǎng)公司就是宜搜科技和 3G 門戶了。
Offer 都有,但是都不如云壤有吸引力。另外還有一個面試,記得是做視覺的,還是國企,給軍方做項目,面試的時候問了很多個人隱私信息。
2011 年那會,我說要年薪 30 萬(有戶口),他們的 HR 覺得我有病,要價這么高,浪費大家時間,原因很簡單,犧牲了技術(shù)發(fā)展,我當(dāng)然要多一些,否則去了就得立馬后悔。
現(xiàn)在我反倒慶幸當(dāng)時沒去,要是那會去了,可能當(dāng)時在班級里我會是薪資最高的(那會微軟的 Offer 一般 22 萬左右,人民搜索大部分在 17-20 萬左右,百度特殊 Offer 在 22 萬),但是絕對會是目前看來最傻的決定。
剛開始的時候錢多個十萬八萬,對整個職業(yè)生涯而言沒有什么幫助。那會也有一些人,選擇去日本外包公司,待遇相當(dāng)于人民幣 40 萬/年左右。
和國內(nèi)的 Offer 相比,簡直高得嚇?biāo)廊?,目前在我看來,選擇這樣的 Offer,都是很蠢的決定。
小公司里如何精進
小公司往往因為創(chuàng)始人的背景,決定了團隊的平均水平。大佬創(chuàng)業(yè),一般都是精英團隊,而普通創(chuàng)業(yè)者,招聘能力還是比較弱的。
原因很簡單:
- 一來,沒能力融資就意味著沒錢招聘。
- 二來,創(chuàng)始人們的能力不夠強,也會導(dǎo)致沒能力吸引到優(yōu)秀人才。
不過團隊里的能力有強弱,但是在不同的團隊,個人能夠?qū)W習(xí)的東西還是很多的,比如:
①在我第一家公司里,我學(xué)到了問題到我為止的求學(xué)精神
我算是 Team Leader, 我第一次學(xué)會了怎么編譯大規(guī)模軟件,怎么去構(gòu)建團隊,怎么做招聘,怎么去解決軟件穩(wěn)定性問題,怎么處理編譯和鏈接的各種詭異的問題,怎么去構(gòu)建代碼基礎(chǔ)庫和共同的代碼風(fēng)格。
不過很多事情都是自己瞎折騰,毫無體系,而提出的解決方案,也沒有什么水平。
因為當(dāng)時的自己,搜索技巧也不成熟,連谷歌搜索引擎都不知道怎么使用(那會公司沒有谷歌搜索,而自己也沒有買過 VPN),沒有能力去搜索到業(yè)界成熟或先進的技術(shù)方案。
不過客觀來說,當(dāng)時開源的氛圍還沒那么強,很多谷歌等的知名項目,都是在 2011 年后出來的。
②在第二家公司,我不是 Leader,也沒有帶過人
畢竟當(dāng)時我在的時候還幾乎沒有應(yīng)屆生加入,而我自己還是實習(xí)生,工程師里幾乎是最嫩的,怎么可能有機會讓我去帶人?
不過沒關(guān)系,我還是發(fā)揮主人翁精神,在實習(xí)階段就承擔(dān)了很多基礎(chǔ)庫的開發(fā),承擔(dān)了幾個重要模塊的開發(fā)。
因為開發(fā)或者維護了不少基礎(chǔ)庫,因此找我咨詢問題的同事倒是蠻多的。有人找你問問題是好事,問題找上你,你就有機會去總結(jié)和歸納,這樣別人問你的時候你才會說得有條理。
而別人找你,就會給你提新的需求,新的需求的實現(xiàn)過程,其實就是不斷突破自己的過程。這時候我的 Mentor 的風(fēng)格間接促成了我獨立解決問題的習(xí)慣。
當(dāng)時的 Mentor 不太喜歡做員工溝通,也很少與我溝通技術(shù)方案,更多的是告訴我要做什么任務(wù),而不是告訴我要怎么做。
我曾經(jīng)心里有過一些抱怨,覺得公司在培養(yǎng)人方面太不積極,但是另一方面想,知識就在那里,人就在那里,他們都為好奇的人隨時準(zhǔn)備著。
只能怪自己當(dāng)時太嫩,沒有足夠強的好奇心,沒有足夠明確的學(xué)習(xí)計劃和求學(xué)心態(tài)。機會總是留給有準(zhǔn)備的人的。
另外一點,當(dāng)時覺得有一些問題不好意思去問,因為自己并不參與那塊的研發(fā),而那些還是公司的核心模塊,也許因為保密,也不適合問太多吧?
現(xiàn)在想來,這個想法太幼稚了。大部分技術(shù)人都會因為別人找自己請教問題或者討論問題而開心,大家會因為分享而提高存在感和成就感。
你要是問了不該問的,回答者不回答就是了,絕不會因此而對你打上“偷師”的標(biāo)簽,而很可能會心里想:“這小朋友真不錯,勤學(xué)好問,是個苗子”。
很可惜的是,我在第二家公司呆的時間并不夠長。當(dāng)時覺得爬蟲也沒啥好做的了,自己參與過大部分模塊的開發(fā),算是元老了。
而別的新的活兒也沒什么挑戰(zhàn)。其實回想起來,當(dāng)時應(yīng)該花大力氣去學(xué)習(xí)索引、檢索和排序技術(shù),把相關(guān)的技術(shù)學(xué)個遍。
那會雖然云壤的搜索質(zhì)量不算太好,但是卻有好幾個聰明人在。比如后來 360 要和百度在搜索上硬碰硬,找的移動搜索和 PC 搜索的技術(shù)負(fù)責(zé)人,都是云壤出去的。
我們覺得自己學(xué)得差不多了,其實是自己的眼界受限,自己不敢在公司內(nèi)去承擔(dān)更多責(zé)任,自己沒能在公司內(nèi)發(fā)揮更大的作用罷了。很多時候,不是沒有學(xué)習(xí)的機會和空間,而是自己沒有認(rèn)識到、沒有抓住。
③在第三家公司,我花了很多的時間重新造輪子
原因很簡單,這里的輪子太舊了、太爛了。每一次重新造輪子,我們對輪子的理解就又深了一層。
當(dāng)時造的輪子包括:編譯器的選擇,開發(fā)環(huán)境的選擇(操作系統(tǒng)和 IDE),編譯工具的選擇(Google Bazel 之類的 Build System,不是指 GCC 這樣的編譯器層面),源碼管理工具的選擇,Code Review 平臺的選擇,代碼風(fēng)格的選擇和推廣,基礎(chǔ)庫的編寫和舊代碼的重構(gòu),單元測試的引入,內(nèi)存泄露的檢測等。
當(dāng)然,重新造的輪子主要還不是上面這些,而是重寫了大部分爬蟲的模塊。網(wǎng)頁爬蟲系統(tǒng)其實挺龐大的,代碼規(guī)模也不小。
算上網(wǎng)頁解析和排序信號抽取的話,代碼規(guī)模更是龐大。當(dāng)時我的主要工作就是重寫這些主要模塊,讓爬蟲抓取規(guī)模上來,讓穩(wěn)定性上來,讓新的數(shù)據(jù)抓取需求能快速響應(yīng),讓搜索的時效性上來等。
后來爬蟲沒什么好做的了(主要是因為搜索沒做起來,流量不增長的話,對爬蟲的需求就沒那么強,因為搜索質(zhì)量小幅度提升的價值有限)。
后來去負(fù)責(zé)好幾個新 App 的后臺開發(fā),包括一個應(yīng)用商店,一個類似頭條的新聞應(yīng)用,一個視頻搜索網(wǎng)站等。
那個視頻搜索網(wǎng)站大概是融合了網(wǎng)頁視頻搜索和種子搜索的形態(tài),這基本是我自己的 Idea,雛形也是自己做出來的,包括爬蟲,索引,檢索,排序,以及最開始的網(wǎng)站前端。
那會當(dāng)真是把自己當(dāng)全棧工程師了,并且產(chǎn)品心爆棚。宜搜這段經(jīng)歷,學(xué)會了怎么在整個搜索產(chǎn)品的視角看問題,怎么帶一個十來個人的團隊,怎么去培養(yǎng)其他人成長,怎么去站在整個部門的資源看問題。
前面說了,我離開宜搜的時候,公司人員大幅減少,估計才剩下不到 400 人。減少了三分之一不止。
我歷來對公司的運途還算敏感:我離開云壤后,大部分谷歌人慢慢開始離開了;我離開宜搜的時候,那會大部分人也開始離開了。
在互聯(lián)網(wǎng)公司,被動離開其實很高頻,比主動離開還多。公司還欣欣向榮的時候,很少有人會主動離開,因為多多少少都還有機會在。
我一直很討厭在一家進入沉默階段的公司待下去,這可能也是我習(xí)慣性選擇在創(chuàng)業(yè)公司的原因吧。
畢竟創(chuàng)業(yè)公司要么爆發(fā),要么死亡,不太可能不死不活,不死不活的公司,老板也會覺得食之無味。
④離開宜搜就來到了目前的公司 C
剛開始半年差不多也是重新造輪子,把垂直搜索重新寫了一遍。每次重寫都能找到新的感覺,有更進一步的理解。
比如爬蟲,解決的問題差不多,模塊也可能差不多,但是每次重寫,對問題的認(rèn)識,對有限資源下的目標(biāo)最大化,都有更深的理解。
小公司做搜索沒什么機會,做了半年多,我甚至都開始寫 Windows 腳本了。
做了半年多,我開始寫語音合成。當(dāng)時幾乎對機器學(xué)習(xí)完全白癡,對語音技術(shù)更是白癡,不過這并不妨礙我轉(zhuǎn)去做語音合成。
當(dāng)時公司沒有人做過語音合成,我自己一個人帶一個實習(xí)生琢磨,竟然在三四個月左右就做上線了。
后來做了一兩年搜索和合成后,開始做語音識別。目前幾塊都有所參與,算是公司里工作范圍跨越的組別最多的工程師之一。
如何實現(xiàn)自我突破
小公司里,不是沒有牛人,不過往往比你牛的人都比你忙,可能他們是 VP 或者 CTO,甚至是 CEO。
人家總不能天天帶著你成長吧?大部分管理者事情多,并且不太做微管理,更喜歡下屬自己主動成長。后續(xù)我會寫一篇文章說一下管理者喜歡的工作風(fēng)格。
小公司里,你如果稍微有一些能力,往往還會是個 Leader,甚至是總監(jiān),有時候還身兼數(shù)職,學(xué)習(xí)的時間更少。那往往讓人很容易天天迷失在瑣事之中,技術(shù)得不到成長。
這里結(jié)合我自己在 C 公司的一些經(jīng)歷,做一些總結(jié)分享:
①學(xué)會閱讀最好的書籍
比如計算機行業(yè),應(yīng)該閱讀《計算機體系結(jié)構(gòu)——量化研究方法》,《計算機組成與設(shè)計》,《計算機程序設(shè)計藝術(shù)》,《重構(gòu)》,《代碼大全》,《TCP/IP詳解》,編譯器龍書,Linux 內(nèi)核源碼相關(guān)書籍,《深度探索C++對象模型》等書籍。而不是僅僅翻閱國內(nèi)課本,技術(shù)博客,翻譯很水的外文書籍。
②學(xué)會閱讀最專業(yè)的論文
很多 Topic,其實自己想破了腦袋,都不如找?guī)灼獦I(yè)界的論文看看。論文里除了說明現(xiàn)狀以外,也會提出一些新的想法去改進。
畢竟論文比書籍更新,為了了解最新的研究成果,必須養(yǎng)成搜索和閱讀論文的習(xí)慣。
③學(xué)會閱讀最好的開源項目
很多時候論文里的想法沒有開源,所以應(yīng)該看論文。而很多時候論文里的想法又太飄,導(dǎo)致很難完全理解,這時候就可以借助開源項目了。
在我前幾年的編程生涯中,我基本只是做到知道怎么用,知道復(fù)雜度,但是不知道這樣的復(fù)雜度是怎么實現(xiàn)的,而不同的設(shè)計目標(biāo),又會導(dǎo)致不同的項目有怎樣不同的 trade-off。
④保持好奇心,學(xué)會順藤摸瓜
很多時候圍繞一個問題,順藤摸瓜,可以花了一年半載去學(xué)習(xí)和鉆研。而這往往更有延續(xù)性。
去年開始我花了很多的精力做性能優(yōu)化,也因此閱讀了很多的相關(guān)資料,包括操作系統(tǒng)的實現(xiàn),體系結(jié)構(gòu)的設(shè)計、歷史與進化,指令集,編譯器的性能優(yōu)化,C++ 的性能優(yōu)化,常用的數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)復(fù)雜度,常用的性能優(yōu)化技巧等。
基本上圍繞著性能優(yōu)化這個事情,我一路閱讀了 Google gperftools 的源代碼,想到了一些改造方法,改進了很多開源項目的性能(比如 Word2vec,LevelDB,Crf++,Openfst,SRILM,KenLM,Xapian 等),并一路學(xué)到了操作系統(tǒng)的 CPU 調(diào)度和存儲器管理。
⑤學(xué)會發(fā)揮自己的長處,也學(xué)會忘掉自己的長處
比如我之前一直做的是搜索引擎,那么爬蟲,分布式系統(tǒng)等是我的長處,我就可以在語音工程里發(fā)揮這些長處。
同時,忘掉自己的長處是說,很多時候你的長處在公司不一定有發(fā)揮的空間。
這個時候要么選擇離開,找一個適合自己的坑,要么既然選擇留下了,那么就改變思路,找一個更適合公司戰(zhàn)略,更重要或更有難度的事情去做。
我以前經(jīng)常想著,我的搜索經(jīng)驗也不錯,懂爬蟲,擅長網(wǎng)頁解析,懂索引檢索,還能做一些排序。技術(shù)視野可以說相當(dāng)可以了。
何況我自己還做過很多的垂直搜索,熟悉垂直搜索的構(gòu)建過程。我想找工作,分分鐘找一個垂直搜索團隊的負(fù)責(zé)人。
我?guī)н^的人,出去做搜索都可以拿到百萬年薪了,我為什么不繼續(xù)堅持把搜索做透,繼續(xù)提高我的搜索能力呢?
因此花了不小的精力在搜索上。后來因為公司對搜索的需求其實沒那么強,個人的貢獻也沒有充分發(fā)揮出來。搞得自己偶爾會有懷才不遇的郁悶感。
⑥站得更高,應(yīng)該看得更遠
假如你已經(jīng)是技術(shù)總監(jiān)了,其實可以充分利用職位給予的權(quán)利和空間,找到更多適合自己發(fā)揮的地方。
看得更遠是說,你應(yīng)該多想想哪些事情對公司是有價值的。不僅是創(chuàng)業(yè)公司,商業(yè)這個事情都是在有限資源下的競爭游戲。如何提高績效,本質(zhì)上還是在各種限制條件下,去追求目標(biāo)最大化。
那么怎么去最大化目標(biāo),關(guān)鍵就在于你對公司目標(biāo)和戰(zhàn)略的理解,你對團隊資源的理解,對各種限制條件的理解,對內(nèi)外部競爭優(yōu)勢的理解,對個人能力和貢獻空間的理解。
⑦成就別人,從而成就自己
工作開始的幾年,總是更為“自私”,老想著怎么更快地提高技術(shù),做一個事情時,很多人不管對公司有沒有價值,只要能夠讓自己學(xué)習(xí)到技能,他們就干,并且一意孤行。
而工作越久,負(fù)責(zé)的任務(wù)越多,帶的團隊越大,這些時候越能明白,其實成就別人的樂趣更大,并且成就更多的人,反過來也能成就更好的自己。
⑧把自己當(dāng)成公司的主人,一起打造公司這個產(chǎn)品
最近流行說張一鳴 Run 公司,宿華 Run 產(chǎn)品。其實真想成長,多想想怎么讓公司成長才是正道。公司成長了,你的薪資,你的期權(quán)價值,才有上漲的空間。
公司成長了,你的團隊才有可能有更優(yōu)秀的人才加入,你的才華才有更大的施展舞臺。
有了這樣的視角和想法后,你會發(fā)現(xiàn),每天面對的問題太多了,能夠?qū)W習(xí)和成長的技能數(shù)也數(shù)不清。
互聯(lián)網(wǎng)的變數(shù)太多,而身在互聯(lián)網(wǎng)的小公司,變數(shù)更多。倘若說我以前僅僅是沒勇氣和信心去挑戰(zhàn)大公司的機會,目前我反而蠻喜歡在小公司不斷超越自己的感覺。
我可以說我自己的自信心越來越強了,你可以說我越來越?jīng)]有追求了。在未來的八年里,我也許還會在小公司,也許有機會一起把一家小公司打造成我所喜歡的大公司。
路漫漫其修遠兮,誰知道呢,且看腳下的路,一步一個腳印吧。
作者:葉順平
簡介:北大碩士。多年搜索研發(fā)經(jīng)驗,對網(wǎng)頁搜索和語音交互有豐富經(jīng)驗?,F(xiàn)為某知名人工智能公司技術(shù)總監(jiān)。愛編程,喜文藝,業(yè)余時間寫有“技藝叢談”公眾號(ID: jiyicongtan ),主張“談技術(shù)要有趣,論藝術(shù)要飄逸”。