要問當(dāng)下最熱門的就業(yè)方向是啥,那必然無出程序員之右。在本科階段,計(jì)算機(jī)專業(yè)的報(bào)考競爭強(qiáng)度就高居不下,從B站到小紅書再到各類技術(shù)論壇,更是無處不見“轉(zhuǎn)碼”經(jīng)驗(yàn)貼,分享非計(jì)算機(jī)專業(yè)人士跨行走上程序員道路的心路歷程。
為啥如此火爆?除了信息時(shí)代急速擴(kuò)大的程序員缺口外,更重要的原因是遠(yuǎn)高于平均水平的薪資水平,這注定讓不少人眼紅。一名就職于大廠的技術(shù)類應(yīng)屆生,拿到三四十萬的年薪,如今都不是什么罕事。而游戲公司們花費(fèi)高價(jià)雇傭的,也必然是頂尖人才……而這真的是這樣嗎?
在Reddie的游戲開發(fā)者聚集地板塊r/gamedev,就有這么一位程序員對自己的同僚們產(chǎn)生了一些懷疑。這名名叫prooheckcp的程序員在Reddie上發(fā)出這樣的靈魂質(zhì)問:“難道大部分程序員的代碼水平都這么爛嗎?”
prooheckcp自述稱,他擁有較為豐富的開發(fā)經(jīng)驗(yàn):他曾經(jīng)作為一名個人游戲開發(fā)者工作過五年,并在兩年前加入了一個100人左右的獨(dú)立工作室進(jìn)行全職游戲開發(fā)。而在最近兩個月,prooheckcp入職了一家3A游戲開發(fā)商擔(dān)任程序員。然而,他舉目四望,卻發(fā)現(xiàn)過往一并工作過的專業(yè)同僚們似乎不如自己曾想象得那么“高大上”。
prooheckcp表示:“自從我開始成為職業(yè)程序員以后,我發(fā)現(xiàn)90%的人都完全搞不清楚自己在干什么。每天我都要應(yīng)付一堆塞滿2000行垃圾代碼的文件,不遵守公司制定的風(fēng)格規(guī)范的代碼、乃至干脆就是水平得一塌糊涂的代碼。我一起共事過的人里面,絕大多數(shù)新手和中級程序員都壓根不知道怎么寫代碼,有些資深程序員還會時(shí)不時(shí)表現(xiàn)得一無所知。我有一次說出‘單例模式’這個詞,居然還有一個資深開發(fā)者問我這是做什么用的。這可是有著超過1000個員工,有大型3A作品的大公司?。〉降资俏疫\(yùn)氣不好還是怎樣?!?/p>
乍一看,這一經(jīng)歷似乎和我們的常識相違背——能夠進(jìn)入3A游戲公司的似乎都是經(jīng)過層層面試篩選的代碼大神,怎么還能出現(xiàn)這樣的問題?但GameLook立刻聯(lián)想到R星的一個著名翻車案例:自發(fā)售以來,《GTA 5》聯(lián)機(jī)模式超長加載時(shí)長曾經(jīng)遭遇過無數(shù)玩家的吐槽。過半玩家反映,游戲普遍需要進(jìn)行3-6分鐘的加載,部分人甚至曾經(jīng)歷過超過15分鐘的加載時(shí)長。
而在《GTA 5》發(fā)售長達(dá)7年后,才由一名民間黑客探尋出這一問題的成因:在“屎山”代碼中,一個if語句被了運(yùn)行19.8億次!這一錯誤之低級讓發(fā)現(xiàn)這一問題的黑客都忍不住發(fā)出嘲諷——要知道,R星的一名資深程序員年薪可是輕松超過10萬美元!
顯然,不少Reddit上的開發(fā)者同僚們也對此感同身受。這條帖子下獲得1500贊的最高贊回答就如此說道:“我的專業(yè)不是游戲開發(fā),但我的領(lǐng)域里80%的人都是工程師。在我的經(jīng)驗(yàn)里,我有一半的同事壓根不知道自己在干什么,另一半的同事里有很聰明但沒什么上進(jìn)心的,又或是單純?yōu)榱松毤有蕉疵摹硗酢?。只有極少數(shù)一部分人是真正又聰明又能夠做好工作的。這甚至治好了我的自卑感——哪怕這個領(lǐng)域里有很多創(chuàng)意天才,我依然能保持頭部10%的產(chǎn)出?!?/p>
另一名高贊回答也經(jīng)歷了類似的“幻想破滅”的過程:“我還記得很多年前,年幼無知的我從‘那個人有著這個職位,那他一定是個領(lǐng)域內(nèi)的專家吧!’到驚恐地發(fā)現(xiàn)‘我們?nèi)祟惒顺蛇@樣,迄今為止到底是怎么辦成任何一件事兒的’這么一個轉(zhuǎn)變的瞬間?!痹诨貜?fù)中,有來自獸醫(yī)、金融咨詢、心理治療師行業(yè)的Reddit網(wǎng)友都紛紛表示,他們在他們的行業(yè)也觀察到了類似的現(xiàn)象。
這一情緒的廣泛出現(xiàn)甚至也很難被稱為海外獨(dú)有。無獨(dú)有偶,在多年前的S1論壇,國內(nèi)也曾經(jīng)誕生過一個著名的“草臺論”:“我工作以后才發(fā)現(xiàn),大家都是草臺班子。企業(yè)草臺,我也草臺,大家都草臺,湊合賺錢過日子。一個企業(yè),看著像一臺奔馳在高速公路上的豪華轎車,里面其實(shí)是幾個人蹬著自行車頂個殼。路上的車都是這樣,大家誰都不戳破。”
究竟為何會出現(xiàn)這樣的落差感?GameLook也斗膽提出一個理論??苹米骷椅鲓W多·史特金曾經(jīng)提出過一個史特金定律,即任何事物,90%都是垃圾。換句話說,90%的人都并非天才。
成長于互聯(lián)網(wǎng)一代的新程序員們在知識獲取和成長過程中長時(shí)間仰望著行業(yè)頂端的大神——無論是技術(shù)達(dá)人或是各路“神童”——但我們往往忽視了,他們是高速流動的互聯(lián)網(wǎng)層層洗牌后屹立不倒的尖子。這些萬里挑一的牛人拉高了我們對個人能力的預(yù)期,但當(dāng)我們回歸現(xiàn)實(shí)生活,我們依然無法逃離史特金定律的掌控,認(rèn)清生活最真實(shí)的樣貌。
但正如這條回復(fù)下另一些人所指出的,這樣的看法恐怕也可能是另一種傲慢的體現(xiàn)。一名網(wǎng)友自稱他所就職的公司開發(fā)的游戲在過去5年連續(xù)保持Steam在線人數(shù)前50名,而在他眼中,用代碼的整潔程度和格式來判斷代碼能力很不公平。
他表示,很多的項(xiàng)目,尤其是長期運(yùn)行的游戲項(xiàng)目,往往擁有數(shù)十成百名程序員貢獻(xiàn)的代碼,這其中想要保持代碼的一致性和整潔性,這本就不可能。而更重要的是,代碼質(zhì)量本身更重要:“如果你開發(fā)的代碼架構(gòu)能容納個別無能的程序員,并且能在十個思路和想法各異的程序員手上還能運(yùn)轉(zhuǎn)良好,貢獻(xiàn)有價(jià)值的服務(wù),那么這個代碼就是極為成功的?!?/p>
另一名認(rèn)證為3A工作室程序員的Reddit網(wǎng)友也指出3A游戲開發(fā)的復(fù)雜性。在3A游戲的開發(fā)中,項(xiàng)目的進(jìn)展往往受到嚴(yán)格的控制,這導(dǎo)致大多數(shù)代碼往往是在較為緊迫的死線中趕寫出來的。尤其是在項(xiàng)目后期,從Alpha走到Beta階段,開發(fā)組往往需要加班加點(diǎn)進(jìn)行飛速開發(fā)。在這種情況下,代碼的風(fēng)格和整潔往往不是項(xiàng)目的關(guān)注重點(diǎn),讓開發(fā)者回頭檢查校對自己的代碼更是不可能。而對于一個項(xiàng)目來說,更重要的目標(biāo)是保證各項(xiàng)功能能夠如期上線。
以這個Reddit問題為鏡,我們聽到了各種各樣的聲音。讀者們也可以借此自?。涸谝环矫妫€在學(xué)習(xí)階段,因擔(dān)心技術(shù)不過關(guān)而陷入焦慮的讀者們可以以此進(jìn)行一些寬慰,適當(dāng)放低預(yù)期,以免自己陷入無意義的精神內(nèi)耗。但這并不意味著我們就可以以此為借口,逃避學(xué)習(xí)和自我提升——畢竟在互聯(lián)網(wǎng)上,我們始終逃不脫小馬過河的誤區(qū),而在總體上,3A開發(fā)公司依然代表了行業(yè)最領(lǐng)先的程序和圖形學(xué)水平。而作為個人,我們依然需要不斷向行業(yè)中的領(lǐng)頭羊們看齊,畢竟“取法乎上,得乎其中”的道理,永遠(yuǎn)不會過時(shí)。