一个程序员的“无聊”故事
文 | Cat Chen@知乎
本文已獲作者授權(quán),禁止二次轉(zhuǎn)載
不同時期的生活方式是非常不一樣的。我覺得最重要的是意識到這一點,不要以為某一種生活方式會一直延續(xù)下去。這個世界上不會存在特定的程序員生活方式,你在不同的公司工作就會遇到不一樣的公司文化,你的人生處于不同的階段也會做出不同的選擇。
一
我實習(xí)的時候是在百度,畢業(yè)后也在百度做了三年。那時候我完全不介意加班,因為除了加班也沒別的事情好干了。
2007 年實習(xí)時周末天天加班,因為實習(xí)算日薪,每天 ¥200,周末加班就能把月薪從 ¥4000 推到 ¥6000。北京沒什么吸引我周末出去玩的地方,于是沒理由加班也要找理由加班!理論上如果不是工作有需要,實習(xí)生是不能自愿周末加班的。周末加班是需要申請的,申請時說明確實工作需要加班,然后才能拿到那 ¥200。于是我不用加班也想辦法找個理由來加班,在當今 996 程序員看來這應(yīng)該是非常不可思議的。
畢業(yè)后開始在百度上班,每天晚上都加班到 9:00。為什么是 9:00 呢?因為到了 9:00 就可以打車回家了。9:00 后的打車票還可以用來證明我加班了,于是晚餐也變得可以報銷了。當時百度這個 9:00 打車的制度產(chǎn)生了不少笑話。
第一個笑話:我 7:00 下班去擠北京公交,一路堵到 9:00 才到家。同事 9:00 下班打個車,環(huán)路和高速上狂飆,9:10 就到家了,只比我晚了 10 分鐘。
第二個笑話:一個同事 8:00 下班擠公交回家,因為忘記帶手表了就總問乘務(wù)員,「現(xiàn)在幾點啦?」別人被問得不耐煩了,就跟他說「正常人都是問現(xiàn)在到哪個站了,怎么你總是問幾點呢?」他說,「只要到九點了,我下一站就下車,然后打車回家」。
那個時候的加班,其實不會很忙,有時候還很閑。早上 10:00 到公司,12:00 去吃飯,理論上吃完就可以回來繼續(xù)干活了,但大家經(jīng)常吃完就坐下來玩殺人,磨蹭到 1:00 才回來干活。真閑的時候,1:00 回來了再打幾盤三國殺或者是 CS,打到 2:00 才開始干活。
晚上加班有時候是干活,有時候真的能夠沉醉于寫代碼,寫到 11:00 甚至 12:00 才回家。但吃完晚飯后召集一群同事打三國殺或者 L4D 也是很常見的。如果你可以選擇在北京公交和地鐵上擠一兩個小時,也可以選擇在公司跟同事一起玩,兩者都不太影響你回到家的時間,那你選擇什么?此外,你回到家后也同樣是在寫代碼和打游戲之間做選擇,那答案顯而易見啦。
二
我在百度那三年,到了后期真的完全沒有動力,每天基本上不怎么干活。在最沒心思干活的日子里,我 12:00 到百度大廈吃午飯,然后 2:00 從西二旗打車去三里屯逛街和買菜,4:00 打車回家慢悠悠地開始準備做飯。
那是一個很諷刺的階段,因為在那之前我努力干活,但技術(shù)委員會就總是卡著我的晉升,不愿意給我高級工程師的職稱,還說原因是「資歷不夠」。等我進入了幾乎不干活的階段,我狠狠地把我做的為數(shù)不多的事情包裝了一下,經(jīng)理們估計知道我再不升就要走了于是也狠狠地助推了一下,于是就成了。
諷刺的事情并沒有到此結(jié)束。拿到了「高級」職稱后,我就能坐在前端的技術(shù)委員會評審其它人的晉升了。看著 10 個人升高級工程師的申請,我們都不太知道他們具體做的事情有多難、影響力有多大,于是我們分成小組去跟每一個申請人訪談,了解他們申請晉升的項目。一圈訪談回來,10 份申請當中排最前面的 3 份是一定行的,排最后的 3 份是一定不行的。我們知道上一級的技術(shù)委員會大概會給我們 5 個名額,那中間 4 份申請誰上誰下呢?
經(jīng)過了長時間的辯論,4 份不確定的申請有 1 份上還有 1 份下,中間還是有 2 份辯論不出來。這時候已經(jīng) 7:00 了,大家都想快點搞掂去吃飯。這 2 份申請,都有跟申請人同組的高級工程師在技術(shù)委員會上挺他們,這如何是好呢?最終有人在評審會議上提出了那個終極問題:「這兩個人誰在公司的時間更長?」大家都松了一口氣,我也終于理解到什么叫做「資歷不夠」。
三
豌豆莢是我經(jīng)歷過的唯一一家星期六要上班的公司,跟同期的小米比,那絕對是假冒偽劣的 996。豌豆莢同事之間的氛圍很好,很多事情都能玩到一起去,而且公司也鼓勵大家一起玩,甚至出錢讓大家一起玩。
豌豆莢當年追有意思的地方在于午飯之后賭碗。那時候的豌豆莢還沒有自己的食堂,只是請了人做飯。大家自帶飯碗,吃完飯輪流去洗碗。因為洗一個碗和洗十個碗都是洗,于是就出現(xiàn)了賭碗,參與賭局的人都把碗放到一起,最后賭輸了的人把所有碗都洗了。賭的具體方式是 21 點,爆了的人自然算輸,否則點數(shù)最小的人算輸。并列的話,輸?shù)膸讉€人再開一盤,直到有一個人被選出來為止。
周六名義上是上班的,但其實只是上半天班。下午 2:00 各個社團就開始組織活動了,例如籃球社在外面租了個籃球場打球,然后籃球社的人就都打球去了。我跟他們一起走,但我去到之后不打籃球,在附近游泳館游泳。晚上等他們打完球,一起在附近找個地方吃一頓好的。
四
2012 年我去了 Facebook,早期的生活還是不錯的,我還曾經(jīng)寫過這樣一個獲得編輯推薦的答案:《在Facebook 工作是怎樣一番體驗?》為什么那個答案開頭要說「理想的一天生活是這樣子的」?因為現(xiàn)實大多數(shù)時候都是不理想的。每天去運動?這是不可能的。不是說我沒辦法早期就把運動時間調(diào)整到下午和晚上,事實上我?guī)缀跬耆霾坏皆缙稹V劣谶\動?每周能去兩次已經(jīng)是很好的了,有時候一次也去不了。
但無論如何,我在 Facebook 最初的一段時間是非常美好的,而且有點像在百度最初那端時間。無憂無慮,喜歡工作的時候就工作,沒有事情做的時候我完全不介意加班繼續(xù)做公司的事情。跟在百度不一樣的地方在于,灣區(qū)不是北京,吸引我周末出去玩的東西變多了,例如說爬山、劃船、品酒、釣魚、滑雪……周末很多時候我就出去玩了,周末用來工作的時間減少了。
最重要的是,那段時間我從來不擔心我的績效和晉升。我的績效好好的,我覺得時間到了自然會給我晉升的,一點也不著急。我覺得我努力去做了,結(jié)果都不會太差,沒什么好擔心的。
五
然后呢,我就晉升了,再次拿到了「高級工程師」,一個我在百度早已拿過的職稱,但感覺 Facebook 的更有含金量吧,所以要再爭取一次是正常的。接著災(zāi)難就開始了。
多年后來看,這是我當時的老板在一個糟糕的情況下做了一個糟糕的決定。因為我們團隊里的人都走了,只剩下我一個人,他決定讓我換個方向重新開辟一個新的團隊。這其實不是一個高級工程師應(yīng)該做的事情,這應(yīng)該是往上一兩級的人做的事情。這就如同直接給一個剛剛升到 P7 的人安排一個 P8 到 P9 的目標——這里開一個新坑然后從零打造一個新的團隊。做不出來是理所當然的……
那段時間的工作挺搞笑的。老板幫我找來一堆比我高至少兩級的人,說他們都對我要開辟的新方向感興趣,又已經(jīng)是各自領(lǐng)域的專家,讓我?guī)ьI(lǐng)他們一起把這個新方向搞起來。我就每周跟他們開會,沒有一周我們是能夠達成一致的。
我在會議上說,「這個新方向其實公司以前以做過,只是中間放下來好幾年了,現(xiàn)在我們繼續(xù)沿用之前的指標如何?大家對設(shè)定半年目標有什么想法?」立即會有人跳出來跟我說,「我們不應(yīng)該沿用老的指標,因為這個指標根本跟業(yè)務(wù)好壞沒有任何的相關(guān)性,尤其跟我負責的業(yè)務(wù)沒有任何的相關(guān)性」。我只能問他,「那要不你提一個新指標?」那個人說,「我也想不到有什么新的指標能更好地反應(yīng)跟我的業(yè)務(wù)的相關(guān)性,但總之我不同意沿用老指標」。
在那個時候,我完全不知道如何能夠「領(lǐng)導(dǎo)」比我高兩級的人,所以這群人就游離在我的新團隊的邊緣,既不參與也不拒絕,但每個人都有非常多的觀點和意見,導(dǎo)致我完全無法向前推進。一個正常的團隊,有幾個關(guān)鍵的指標(例如說月活),每個指標有個目標(例如說月活到達一百萬),那就可以進入執(zhí)行階段了。團隊里每個人的價值由他們對指標的貢獻來決定,大家都會想方設(shè)法把指標往前挪。但我要做的事情,連選用哪個指標都定不下來,更別說制訂目標了。
我選擇了縮進我的角落里,繼續(xù)做我最擅長的事情——寫代碼!半年過去了,團隊沒有帶起來,績效自然拿個不及格。隨后的一年里,我的績效就在及格和不及格的邊緣。因為 Facebook 是真會炒人的,被炒了我的 H-1B 簽證就失效了,理論上我就要立即離開美國。(那時候還沒有 Obama 釋法說 H-1B 擁有 60 天 grace period 這件事。)如果離開美國了,排了一半的綠卡不知道怎么辦,買了的房子也不知道要怎么處理。
在這段時間里,我的壓力非常大,一直擔心自己會不會被炒掉。最讓人抓狂的是,我不知道我需要改變什么。我每天還是正常地上班、寫代碼、開會。有時候別人覺得我做得好,有時候別人覺得我做得不夠好,但我覺得我并沒有改變什么,也不知道為什么別人的評價會發(fā)生變化。我身邊那群比我高兩級的人一如既往地諸多見解,而且他們的觀點往往是互相沖突的,我也不知道該聽誰的。
六
后來我拿到了綠卡,花了幾年的時間慢慢體會到了 Facebook 強調(diào) impact 和 ownership 的文化。
所謂的 impact,就好像李開復(fù)所說的那樣子,世界有你和沒有你之間的區(qū)別,那就是你的 impact。那些「改變世界」量級的 impact,更多是用嘴吹出來的。把 impact 吹大固然是一種重要的技能,但首先要把 impact 做出來。把 impact 做出來,本質(zhì)就是為別人創(chuàng)造價值,就是讓別人得到如果你不存在就得不到的好處。這是非常非常現(xiàn)實的事情。舉個例子,如果你寫個腳本,幫女朋友的論文跑數(shù)據(jù),使得她不用花時間人手處理數(shù)據(jù),晚上可以多睡幾個小時,這「多睡幾個小時」就是你寫的腳本的 impact。
在現(xiàn)實工作中,這意味著我花更多的時間去了解別人想要什么。這使得我的工作有時候很不像「程序員」。我的時間花在跟別人坐下來聊天,討論「如果這件事情做成了,對你來說意味著什么,對我來說意味著什么」。「對你意味著什么」,就是對你的 impact,例如說「需要多干活」、「可以少干活」、「可以學(xué)習(xí)到新技能」、「更可能獲得晉升」。基于這些信息,我們才能決定一件事情值不值得做。如果 impact 不夠,有些事情根本不值得做。
如果把 impact 看作一種貨幣的話,我的工作更像是「銷售」和「交易員」。我可以四處去兜售我和我們組能做的事情,如果產(chǎn)生的 impact 顯著大于時間成本,這就是一筆好生意。如果沒有客戶認為這是一件有 impact 的事情,就跟沒有客戶愿意為這件事情付費一樣,這件事情完全不值得去做。有時候我還可以把一個組做的事情包裝一下轉(zhuǎn)手賣給另一個組,一個組出力,另一個組認可這件事情 impact,我中間套個利。
這時候我用在寫代碼上的時間其實已經(jīng)很多少,因為我只寫必須要我寫的代碼。假設(shè)別人寫的代碼平均每行值一塊錢,我只寫每行值十塊錢的代碼。這并不意味著我的技術(shù)比別人好,我在技術(shù)上其實沒什么特別的優(yōu)勢,最多就是比別人更熟悉 Facebook 的環(huán)境,能夠更熟練地使用 Facebook 內(nèi)部的技術(shù)棧。我覺得我真正的優(yōu)勢在于理解公司業(yè)務(wù),然后我能兜售我和我們組能做的事情。我能夠有理有據(jù)地說清楚,為什么我提議去做的事情是當下最重要的事情,而且 impact 還很大。
什么叫做「只寫每行值十塊錢的代碼」和「有理有據(jù)地說清楚」?我就打個比喻吧。如果我要賣一罐機油給你,我不能說「我想要賣一罐機油,你有興趣買嗎?」這是站在我的立場思考,思考的是「我需要什么」而不是「你需要什么」。我要跟你說「你這車機油差不多沒了,前方幾百公里人跡罕見,就算不考慮沒機油之后燒發(fā)動機的維修成本,也要考慮一下車不能開之后如何活著出來吧。」這時候我是站在你的角度為你思考,「你的性命很重要,你不應(yīng)該冒不必要的險」。你不買這一罐機油,你就是拿自己的性命去冒險,那你覺得我可以賣你多少錢呢?
這種生意要能做成,前提是要非常了解客戶的實際情況,能夠站在客戶的角度想明白有什么需求是刻不容緩的,然后再想想這里面有沒有套利的空間。這需要我花很多時間跟別人聊天和問問題,去了解別人在做什么、在想什么。如果能夠設(shè)身處地想明白別人想要什么,撥開表面膚淺的需求找到底下深層次的驅(qū)動力,之后利用平庸的技術(shù)把需要的東西做出來往往并不太難。(這個世界上絕大多數(shù)東西都是使用平庸的技術(shù)做出來的。)
我花很多時間跟別人聊天,這看起來是非常沒有意義的活動,但實際上是最值錢的工作,因為這使得我可以只寫必須要我寫的代碼,避免花時間去寫那些不需要我寫的代碼。
后臺回復(fù)關(guān)鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復(fù)關(guān)鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結(jié)
以上是生活随笔為你收集整理的一个程序员的“无聊”故事的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学完文本知识,我就直接看懂图片了!
- 下一篇: 预训练语言模型真的是世界模型?