別人家的程序員:如何克服騙子綜合癥,避開自我懷疑的陷阱
騙子綜合癥(Impostor Syndrome)困擾著很多人,即使他們?cè)谀承┓矫嫒〉昧顺晒?,卻把成功歸因于外部因素,否定了自身做出的努力。對(duì)于程序員來(lái)說(shuō),他們?cè)撊绾慰朔_子綜合癥,避開自我懷疑的陷阱,讓自己變成一個(gè)自信的大神?
你是否會(huì)有這樣的感覺(jué),總擔(dān)心自己不夠好?抬頭看看周圍的人,他們好像都比你強(qiáng)。他們的代碼寫得比你好,他們的調(diào)式速度比你快,他們只要瞄上一眼文檔就能理解其中的內(nèi)容。他們自信,他們享受寫代碼的過(guò)程。
再回頭看看自己,擔(dān)心自己對(duì)某某框架不夠了解,擔(dān)心對(duì)某一門編程語(yǔ)言掌握得不夠熟練,擔(dān)心寫代碼出現(xiàn)bug。你擔(dān)心趕不上新的技術(shù)潮流,擔(dān)心自己沒(méi)有技術(shù)天分。于是你開始懷疑自己:“或許***注定我成為不了一個(gè)好的程序員”。
“你不是一個(gè)人在戰(zhàn)斗”
如果你也有過(guò)類似的疑慮,那么我可以告訴你:“你不是一個(gè)人在戰(zhàn)斗”。曾經(jīng)有一段時(shí)間,我也經(jīng)常懷疑自己。在大學(xué)畢業(yè)找工作那段時(shí)間,我為面試做準(zhǔn)備,那些算法題給我?guī)?lái)了無(wú)盡的挫敗感。所幸的是,我的努力最終還是讓我獲得了回報(bào),我拿到了幾家大公司的offer。從這一段經(jīng)歷當(dāng)中,我學(xué)會(huì)了如何從不同的角度來(lái)看待編程以及如何避開自我懷疑的陷阱。
卡殼是正常的
編程就像健身,要練出一身好肌肉,就要去健身房舉啞鈴,要學(xué)習(xí)編程,就要耐心坐下來(lái)寫代碼。去完健身房最多就是第二天會(huì)感覺(jué)累,而如果卡在一個(gè)編程問(wèn)題上,你會(huì)感覺(jué)到挫敗。
身體上短暫的痛苦并不會(huì)讓你停下鍛煉的腳步,因?yàn)槟阒肋@是不可避免的過(guò)程。而如果你卡在一個(gè)編程問(wèn)題上,你可能會(huì)懷疑自己的編程能力。因?yàn)槟銜?huì)覺(jué)得卡殼是自己的錯(cuò),而同樣的問(wèn)題對(duì)別人來(lái)說(shuō)可能很容易就能搞定。
或許沒(méi)有人告訴你,卡殼是再正常不過(guò)的事情了,即使是編程大牛也會(huì)卡殼。編程是一個(gè)尋找正確答案的過(guò)程。我記得以前卡殼的時(shí)候,我恨不得抓著自己的腦袋往墻上撞。我對(duì)那種沮喪感深有體會(huì),特別是在處理那些與開發(fā)環(huán)境相關(guān)問(wèn)題的時(shí)候。但如果你能夠稍安勿躁,借助搜索引擎、問(wèn)問(wèn)其他人,或者出去透透氣,問(wèn)題最終總能得到解決。而隨著經(jīng)驗(yàn)的積累,以后卡殼的情況就會(huì)越來(lái)越少。
如果下次再卡殼,不要陷在其中不能自拔。告訴自己,這不是你的錯(cuò),這只是整個(gè)過(guò)程不可避免的一部分。
先天和后天
在大學(xué)的***一個(gè)學(xué)期,朋友們非常驚訝我的數(shù)據(jù)結(jié)構(gòu)和算法這門課程為什么可以學(xué)得那么好。他們都學(xué)得很吃力,而我看起來(lái)似乎很輕松。
但他們并不知道,在這門課開始前的幾個(gè)月,為了準(zhǔn)備工作面試,我已經(jīng)花了無(wú)數(shù)個(gè)小時(shí)練習(xí)這些算法,而這些算法剛好與這門課程的內(nèi)容差不多:動(dòng)態(tài)規(guī)劃、深度優(yōu)先搜索、廣度優(yōu)先搜索,等等。我看起來(lái)學(xué)得毫不費(fèi)勁,那是因?yàn)槲乙呀?jīng)付出了很多。
在剛開始學(xué)習(xí)這些算法的時(shí)候,一道題目可能花上我?guī)讉€(gè)小時(shí),到***還是解不出來(lái)。于是我在網(wǎng)上查找答案,試著去理解別人的解法。雖然到***能理解了,但卻感到愈加挫敗,因?yàn)槲視?huì)覺(jué)得單靠自己的能力永遠(yuǎn)無(wú)法解決這些問(wèn)題。
所以,請(qǐng)相信我,自我懷疑的滋味我已經(jīng)品嘗過(guò)無(wú)數(shù)次了。在這個(gè)問(wèn)題上,我們并不孤獨(dú),很多優(yōu)秀的程序員也都有過(guò)這樣的經(jīng)歷。
如果下次再陷入這種心境,不要總想著自己沒(méi)有天分,也不用總覺(jué)得別人比你好,他們只是比你付出了更多努力來(lái)跨過(guò)這個(gè)陷阱。在你經(jīng)歷過(guò)這些掙扎,你也會(huì)像他們一樣,看起來(lái)那么聰明,解決起問(wèn)題來(lái)那么不費(fèi)吹飛之力。
忘了你自己吧
不要再浪費(fèi)時(shí)間去思考自己是不是一個(gè)好程序員。如果你在團(tuán)隊(duì)里屬于墊底的那幾個(gè),那么你肯定想讓自己變得更好。如果你在團(tuán)隊(duì)里屬于佼佼者,你仍然會(huì)想著讓自己變得更好。不管你處在什么位置上,總會(huì)有人在你前面,也總有人在你后面,那么為什么還要浪費(fèi)時(shí)間去想這個(gè)問(wèn)題呢?反過(guò)來(lái),不如多想想怎樣才能提升你的代碼質(zhì)量,怎樣才能把代碼寫得更好、讓人更容易讀懂、運(yùn)行得更快。
記錄你的每一個(gè)進(jìn)步
想想上一次你是在什么時(shí)候卡殼的,后來(lái)又是怎么解決問(wèn)題的?
把它記錄下來(lái),下次再卡殼的時(shí)候,就拿出來(lái)看看,然后提醒自己:如果我能解決上次的那個(gè)問(wèn)題,那么這個(gè)問(wèn)題應(yīng)該也能解決。
把你解決過(guò)的問(wèn)題和從中學(xué)到的東西都記錄下來(lái),每一次都給自己一些鼓勵(lì)。如果有可能,把你的經(jīng)驗(yàn)分享給那些還在自我懷疑困境中掙扎的人,告訴他們——“你不是一個(gè)人戰(zhàn)斗”。