程序員的宇宙時間線
周六晚上,我把車停在了親戚家小區門外的路邊。在三個小時之后我準備開走的時候,突然發現,前車門外面似乎有一根銀色的細線,在遠處路燈投下的微弱余光中輕輕地顫動。我借助手機屏幕的亮光才得以看清,原來是一只蜘蛛正在左后視鏡和前車門之間織網。
一陣晚風吹來,裹挾著旁邊溫榆河的水氣。蜘蛛和它的蛛網,也在這一陣風中搖搖欲墜。但我知道,這還不是最糟糕的,因為汽車馬上就要開動了。
于是我在心里不禁為它感到一陣惋惜。它本來應該選擇把自己的網建在一個更恰當的地方。
人生之事業,也猶如在織一張大網。要想把事業之網織的牢固,選擇最重要。首先要讓自己立足于一塊良田沃土之上,深耕數年,方得收獲碩果。選擇一個適合自己,并讓自己的才智得以發揮的領域,這是每個人都要面臨的課題。
棧式時間線和多重宇宙
六月夏季的一個晚上,小白獨自行走在校園里。最近畢業季的各種告別聚會和酒精帶來的刺激,讓他不禁感到有些恍惚。他隱隱地感覺到又一個面臨人生重大抉擇的時刻到來了。他剛剛把女朋友送回宿舍,然后獨自一人來到這片還算僻靜的地方,就是想靜下來仔細想一想。
他就讀的學校算不上一流大學,但學的是當前熱門的計算機專業,所以找到一份糊口的工作并不成問題。實際上,他現在手里已經有了兩個offer了。
一個offer來自一家知名的互聯網公司,給他提供的工作崗位也是他比較喜歡的編程工作,只是需要他離開當前所在的北京,南下深圳。小白是個北方人,他擔心自己會不習慣南方的生活習慣,而且更重要的是,他女朋友肯定短期之內不會跟他過去。他已經和女友反復討論過這個問題,雖然不會就此分手,但恐怕要陷入異地戀的糟糕狀況。而一份異地的感情,往往兇多吉少。
另一個offer來自北京一家體制內的研究所。他本來覺得自己年紀輕輕,不會喜歡體制內那種按部就班的工作狀態。但是他家里人都極力勸他接受這份工作,理由是工作穩定,福利也有保障。而且他這個offer確實得來不易,要不是他二舅的表哥的鐵哥們跟里面的熟人打了招呼,他能進入這家研究所的可能性恐怕連萬分之一也沒有。
小白正在左思右想,難以抉擇之時,突然間,他聽到附近有人發出一聲怪笑:“哈哈哈,我終于成功了!”小白心里不禁一驚,原來他不知不覺間來到了科學怪才博士的實驗室旁邊。
好奇心驅使他來到博士的實驗室門前,他發現博士手里正拿著一個類似空調遙控器一樣的設備,嘴里正嘿嘿地笑著。博士發現了小白,喊他進去,把那個遙控器一樣的東西遞給他看,“小伙子,這是我新研制出來的設備,正想做個實驗,想不想試試?”
小白隱約察覺到博士的嘴角流露出一絲陰險的笑意。但當他低頭看到遙控器上的一行小字時,心里頓時樂開了花。那行字寫的是:“多重宇宙控制器”。
小白輕輕按下存檔鍵,幽幽的藍光閃過,“存檔-1”瞬間被創建好。然后小白輕松地做出了他的選擇,宇宙時間線也開始向著他所選擇的分支延伸。
小白進入了那家北京的研究所,在IT技術部門負責維護網站和數據庫。開發的需求大部分來自于部門領導王處長。
一轉眼兩年過去了。雖然工作比較乏味,但是小白每件事情都認真去做,王處長對他的工作非常滿意。他逐漸贏得了領導的信任,感覺被提拔的日子指日可待。
有一天,傳達室的張大媽突然找到小白,告訴他王處長的侄女對他有意思,問他愿不愿意試著和她交往。王處長的侄女也在這個研究所工作,只是跟他不在一個部門,他平常與她只是有些業務上的往來。小白心想,領導的這個侄女長相一般,脾氣也不好,實在不是一個理想的人生伴侶。而且在這兩年中,小白與原來大學期間的女朋友感情也很穩定,他不能辜負她的感情。不過王處長人家是大領導,如果駁了他的面子,會不會被穿小鞋?
小白婉言拒絕了張大媽的提議,不過心里也很忐忑。他偷偷拿出了科學怪才博士送給他的“多重宇宙控制器”,幽幽的藍光閃過,“存檔-1-1”瞬間被創建好。
果然不出所料,從那以后,王處長對他態度大變,經常指責他做的工作不到位。轉眼間又過去了兩年,他眼瞅著周圍的同事一個個都被評上了工程師或高級工程師的職稱,只剩下他自己排不上號。他和女朋友也到了談婚論嫁的年齡,但是他們在北京買不起房,而且以他現在這個狀態,在單位里分到房的希望也很渺茫。迫于現實的壓力,女朋友提出跟他分手,投入了別人的懷抱。
小白極度悲憤。他又一次拿出“多重宇宙控制器”,這次他按了恢復鍵。刺眼的紅光閃過,宇宙時間線開始倒退,一直退到了“存檔-1-1”的位置。
對面的張大媽正等著他的回答。這次他做出了不同的選擇。
小白與王處長的侄女交往得還算順利。而他自己的個人評級,職稱評定,工資上調之類的事情,也從此異常地順利。他原來的女朋友知道了這事之后,傷心地離開了。
一年之后,他與王處長的侄女結婚了。然而,婚后生活卻很不太平。他這個老婆在婚后終于露出了粗俗的本性,經常對他大發脾氣,動不動就拿王處長來壓他,還經罵他是吃軟飯的。這讓他感覺沒有一點男人的尊嚴。
小白實在忍無可忍。他再一次拿出“多重宇宙控制器”,按下了恢復鍵。刺眼的紅光閃過,宇宙時間線瞬間退到了“存檔-1-1”的位置。
他又按了一次恢復鍵。刺眼的紅光閃過,宇宙時間線瞬間退到了“存檔-1”的位置。
小白滿臉沮喪地看著科學怪才博士。博士一臉壞笑,“這里還有一條1-2時間分支,看起來似乎不錯,要不再試一下這個?”
小白心里清楚,博士說的“1-2時間分支”,指的是讓他接受第二個工作offer。
他遠赴深圳。在這家互聯網公司里,他工作得兢兢業業,每天加班到很晚。功夫不負有心人,一年之后,他被提升為技術主管。又經過兩年,他進入了中層管理層。他的個人收入在過去的三年里也連續翻了兩番,并在深圳購入了他人生的第一套房。
然而,危機也隨之而來。由于工作繁忙,分居兩地,他與女朋友缺乏相處的機會,終于這一份感情被時間消磨地所剩無幾。最后兩人以分手告終。同時,他也沮喪地發現,在公司內中層以上的晉升非常困難,很多要職已被公司元老們占據。在可以預見的未來五六年內,他都不太可能會有什么大的突破。他又一次開始懷疑自己當初的選擇,甚至懷疑自己是否適合技術開發這個行當。
在一次與朋友一起喝酒敘舊之后,小白回到家里,一時激動,拿出了科學怪才博士的“多重宇宙控制器”,哆哆嗦嗦地按下了恢復鍵。刺眼的紅光閃過,宇宙時間線再次退到了“存檔-1”的位置。
小白發現自己又一次回到了博士的實驗室。他舉頭望去,淚水已經模糊了他的雙眼。他看到博士臉上戲謔的笑容不見了,而是發出了悲天憫人的一聲嘆息。
好了,故事講完了。我們先暫時舒緩一下情緒,分析一個技術問題。在小白的多重宇宙里,時間線是按照棧式來組織的。大體來說,按下存檔鍵相當于進棧操作(push),而按下恢復鍵相當于出棧操作(pop)。作為程序員的你,看懂了嗎^-^
然而,在我們這個現實世界里,時間線可不是什么棧式的,而是一維線性的。這意味著我們一旦做出選擇,就無法像故事中的小白那樣悔過重來。
無論你是剛剛畢業,即將踏入社會的學生,還是已經在程序員這個行當干了若干年,卻遇到了上升瓶頸期的老手,都要面對一個對于未來重新選擇的問題。
而人生的很多焦慮,都來源于對未來的不確定性的恐懼。一旦選擇,便無法挽回。
我們的選擇正確嗎?我們選擇做了程序員,這適合自己嗎?我很想與你討論討論。
感性
對于有些人來說,在他/她走出校園之前,就很清楚自己不太適合做程序員了。理由很簡單,就是不喜歡。沒有為什么,就是不喜歡。
比如很多科班畢業的同學,在學校的學習成績很好,但只要一看到代碼就感到頭痛。如果這樣的事發生在你身上,不要感到沮喪,這并不是什么糟糕的情況。越早地發現自己的劣勢,越能夠以小成本的方式避免進入錯誤的行當。
而更常見的一種情況是,各方面的興趣都很泛泛,不知道自己喜歡什么,不喜歡什么,也不知道自己擅長什么,不擅長什么。這樣選擇起來就難了。這樣的同學如果選擇做了程序員,多半會發生這樣一種情況:工作了兩年之后,發現自己越來越不適合做這這份工作,很多方面都跟當初自己想象的不一樣。比如需要長時間獨自一人坐在電腦前面,特別是在調試程序時發生了意想不到的情況,百思不得其解而又無人求助,心里會越來越沮喪。再比如,每次技術討論,周圍的技術牛人們都在發表自己的見解,而他自己卻越來越聽不懂他們在說什么。長期如此,自己會變得越來越沒有自信,不敢在別人面前發表技術上的看法。他們得不到周圍同事的贊許,也得不到leader的青睞。
這樣的情況,也還不算太糟糕,至少試錯的時間成本還不算太高。這時要做的就是盡早轉型。
真正糟糕的情況是那些在程序員這個行當混了五六年以上的,仍然沒能發現自己有這方面的天分,在團隊中一直無法出類拔萃。可以想象,這個時候如果再轉型,壓力是巨大的。
不過,按我個人的猜測,大多數從事編程工作的從業者,很可能都會陷入這樣一種困境而無法突破。在任何行業,都是只有少數人才能夠成為精英。在整個互聯網甚至整個IT行業內,正是這樣的“大多數”默默無聞地工作在各個崗位,辛辛苦苦地維護著各種各樣的業務,為更多的人提供著互聯網服務的便利。
這對于整個社會來說,或者對于一個大的公司組織來說,是一種常態。但對于深處其中的個人來說,是一場人生悲劇!
我們怎樣做才能避免這種悲劇發生呢?
理性
在很多情況下,我們如果不去花費時間和精力去嘗試做某一件事情,我們就不知道自己能不能把它做好。而職業選擇的目標就是要讓我們避免不必要的嘗試,最好能每次都選擇正確。這是一件事情相互矛盾的兩個方面,而矛盾的焦點就在于時間成本只能付出一次,一旦付出,就無法收回。
我們沒有前面故事中講的“多重宇宙控制器”,我們每個人都要面對的,是唯一的一條線性時間線。那我們應該怎么做呢?
我們唯一能做的就是:一旦選擇,就全力以赴。
我經常聽到有一些技術人員會說,我將來的志向是做管理,所以現在沒有必要鉆研一些特別深的技術細節。而且不知道從什么時候開始,在程序員職場上有一種流行的說法,說是做技術的歲數大了都無法再做技術,必須要轉管理。甚至很多畢業生也都是這樣想的,把第一份編程的工作只是當成一個過渡。我們先不管這種說法正確與否,我們只是來分析一下這種思潮對我們會帶來哪些負面的影響。
首先,它可能讓你心猿意馬,無法專注于眼前的工作。時間長了,它可能讓你產生一種錯覺,感覺自己總是無法深入到技術底層,從而愈發覺得自己不適合做技術。
其次,如果你當前這一件事情沒有做到最好,那哪來的信心能把下一件事做好呢?要知道,做任何事情的技藝都是相通的,成功的經驗比失敗的經驗更重要。
所以,不管你未來的遠景規劃是什么,對于當前的事情你都應該全力以赴。即使你打算遨游整個宇宙,是不是可以先從研究發動機開始呢?
那好,我已經全力以赴了,我非常刻苦了,但還是感覺追不上周圍的技術大牛。怎么辦?
這個時候就不要做橫向比較了,周圍的技術大牛可能比你積累的時間長多了。而且,并不是任何人都能成為Dennis M. Ritchie,也不是任何人都能成為Jeff Dean。你周圍的技術大牛恐怕也不能。
這時就需要從自身出發去考慮了:我是不是每天都在進步,比昨天的自己更好一點?我當前還有沒有突破的可能?如果沒有的話,那么我的時間資源是固定的,我要把它投放到哪里才能發揮最大的價值?比如我轉行去設計產品的話,我能否成為杰出的產品經理?再比如我轉行去做銷售的話,我是否每天愿意和不同性格的人打交道?如果我干脆自己去創業的話,那么我有沒有堅定的想法和不斷向前的驅動力,以及足夠的抗壓能力?如果我打算轉行去當一名作家,我能否寫出驚世駭俗的作品?
當對于這些問題你都有了堅定的答案了,也許你就能做出你的選擇了。
結局
在前面小白的故事中,小白的錯誤就在于他總以為有博士的控制器為他撐腰,所以選擇過于輕率,而放棄也過于輕率。
每個人都有選擇的自由。
選擇也無關乎好壞。
在現實世界中,我們也無法真正比較兩個不同的選擇分別會帶來什么樣的結果。
但是,我們必須學會要對任何一種選擇的后果負責。
實際上,小白的故事還有一個結尾。
博士在一聲嘆息之后,喃喃自語,“看來這終究是個害人的東西。”說完,他拿起一把錘子,把“多重宇宙控制器”砸了個稀巴爛。
小白選擇留在了北京,留在了女友的身邊。這一次他下定決心,不管發生什么事,他都要堅持這份感情。他先是在北京找了一份技術工作,工資不算太高,但每天都能學到新東西,也能有更多的時間陪伴女友。
兩年之后,小白辭職出來,與女友一起創業。經過多年打拼,雖然中間也經歷了種種難關,他們創辦的公司也幾近倒閉,但他們最終還是堅持了下來。終于,他們的業務規模越做越大,賺的錢也越來越多,在北京也購置了房產。
又過了幾年,小白把公司賣掉,變身為億萬富豪。然后,他帶著老婆開啟了去仙境瀑布探險的幸福旅程。
(完)
后記:
最開始當我決定寫一篇有關程序員職業選擇的文章的時候,并沒有想要寫成現在這個樣子。但編到那個故事的時候,突然有點收不住了。于是,刪掉了原來寫好的大段文字,就變成了現在這篇有點怪的文章。雖然故事有些無厘頭,但卻是在討論一個嚴肅的關乎選擇和責任的問題。