對不起,“熱愛編程”是什么鬼?
不知是因為各個互聯網公司在招聘時總是標注他們要招那些“熱愛編程的人”,還是因為很多人到處標榜“我熱愛編程”,這個詞匯在程序員圈子里已經隨處可見了。可惜的是我從業這么多年,還是發現自己并不是一個熱愛編程的人。不過,我真的很想問問他們:
熱愛編程是什么鬼?
解釋這個問題,先要確定一下對于“熱愛”的理解,百科上這樣解釋的:
情愿全身心投入地愛,激情四射,充滿幸福的幻想,去奮斗、去付出,享受其中過程(即使是酸甜苦辣),即使沒有回報也不后悔。尤其在遇到阻力、挫折時,才顯出什么是真正熱愛。
如果認可這個解釋,似乎就意味著只有當編程遇到阻力的時候,我們才能區分一個人是不是熱愛它。所以,正常情況下我們并不能確定一個人到底是不是熱愛編程。也就是說:
如果一個人和你說,她/他花了整個晚上去搭建服務器,我覺得我看不出其中的熱愛;
如果一個人和你說,她/他花了一個周末去解決一個算法題,我覺得我也看不到其中的熱愛;
如果一個人和你說,她/他一直花時間在學習、深入某個技術上,我覺得我還是看不到其中的熱愛……
別笑,我自己就是這樣的人,但是我并不覺得我是熱愛編程的。
而且有趣的是,有很多人還在鼓吹一種說法:如果你不熱愛編程,你可能就沒有辦法掌握好編程這門技能。也就是說,不熱愛編程就會影響程序員的能力?
不僅如此,編程的門派之別也好像武俠電視劇上看到的門派之爭一樣,武林正派鼓吹自己的派別才是正途,除了自己的方法以外,別人的方法都是異教徒 式的。同理,如果有的人通過某個編程技能成為了大師,而別人因為沒有掌握這個技能而沒有成為大師,于是這個大師就會告誡別人“你應該這樣走(用我所學習的 技能),你如果不這樣走,可能就成不了大師了”,所謂編程的門派便在于此。
光熱愛一點用處都沒有
熱愛編程才能成功,真的是這樣嗎?如果他所謂的熱愛編程,只是因為對于算法的熱愛,或者只是因為沉迷于編程呢?(在實際工作上能有多大用處呢?)
在我多年的編程歷程中,反而見到很多這樣的現象:有些“熱愛編程”的人,即使他再怎么熱愛,能力也沒有比一些“不熱愛編程的人”高,有的人還不如別人。
絕大部份公司需要的還是能解決問題的人。即使他們覺得一個程序員是否熱愛編程很重要,但最終聘用的決定還是會更看重他在現在、未來是否能解決更多問題。如果員工的“熱愛”與公司需要的解決問題能力不在同一個維度,那么再怎么熱愛也是無益的。
況且,編程是技術的一種,先不說技術在很大程度上只是一些業務的附屬品,重點在于,只要是技術,就是一種“可以被學習的方法”,也就意味著誰都 能夠掌握它(只是時間問題)。我們“熱愛”它并不保證能學得又快又好,但是“不熱愛”也不意味著我們學不好。況且在很多情況下,有目的的學習要比熱愛的學習效率更高。
拋開熱愛編程,你可以去熱愛什么?
一個單純只是熱愛編程的程序員更像是一個機器人,他甚至不需要知道自己的目的是什么,有可能只是在盲目地擴大或者深入某個知識范圍、知識點,心 里會覺得樂此不疲罷了,這種“爽”對實際工作來說往往并沒有多大用處,他深入的這個知識點恐怕鮮有機會能用到。編程只是表面的東西,比起熱愛“編程”,我 們應該可以再深入挖掘編程背后的東西。
那么可以去熱愛的還有什么呢?
對于我來說,更喜歡的應該是創造和解謎,就好比在造輪子之前,我們可以先去學會怎么拆輪子。解開一個又一個謎團的過程,比單純地訓練編程能力來得更有益處,也成長得更快。當我們把一個個謎團解開后,可能會發現生活變得索然無味了,這時候就可以利用習得的經驗去創造一些“更有意思的輪子”。
而創造并不意味著你需要去了解一門語言的所有,又或者去了解一個系統的所有。我們所要做的只是去依據需要的東西,了解這個“點”的所有。
舉例來說:我對自己需要的能力定義是“可以不斷地‘創造輪子’,快速完成開發”。這就意味著我需要學會讀懂別人的設計思想和系統性的框架設計。因此,我開始在我的 Github 不斷地“造輪子”,不斷地開發應用。直到某一天,我完成了我需要的那些知識和技術積累,我便覺得可以了。
比起“目的”,在一開始的時候,“熱愛”給人帶來的感覺的確會好一點,但是隨后兩者的差異會越來越少,直到有一天,我們看不出兩者的區別。事實 上,在某項事業的長期的實現過程中,我們往往會忘記初衷,無論出于目的還是發自熱愛,都會有足夠的驅動力讓我們完成它。所以,不需要太擔心“并不熱愛”就 意味著失敗,你更要去考慮的是解決擺在面前的事情。想要長時間在程序員這條路上走下去,把這個關于熱愛編程的問題想清楚是有利無害的。