苦逼碼農加班猝死?不,掉進遊戲裡了
我叫朱熹,名字是不是聽起來很耳熟,沒錯,名字和宋朝“程朱理學”集大成者朱熹一模一樣,可惜人家是一代大儒,而我,呵,一個從母胎出生就單身了二十幾年的屌絲。父母給我取這個名字本來是想讓我和朱文公一樣出人頭地,怎奈我資質太差、學歷淺薄,是一個庸庸碌碌之輩,說起來我還真是配不上這個名字。
四年前剛從一個不知名的十三線二本大學畢業,大學專業學的是軟體工程專業。沒錯,我就是現在社會上所說的碼農,所謂“錢多話少,死的早”的人群之一。畢業的時候經濟不好,由於學校也不是什麼名校,給那些大公司投的簡歷都打了水漂,倒不是說面試不通過,而是連面試的機會都沒有!!!經濟不好,大公司都開始減少社招、不大規模裁員就不錯了,就算有崗位招聘,也都是招高階工程師,新人他們也只招985、211學校的,像我這種十三線二本大學的,估計簡歷剛傳送過去,就被人家的簡歷過濾系統設定的關鍵詞就過濾掉了,根本就到不了HR那裡。
沒辦法只能病急亂投醫,寫了個自動化程式,把我的簡歷自動傳送給各種公司的遊戲崗位,通過這種廣撒網的方法,我投個一百多家,至少能有幾家願意給我機會面試吧。皇天不負苦心人,終於是有幾家願意面試我了。其中有一家我覺得不錯,現在想來當時還是太年輕了,不諳世事,才會被騙過來,天天過著加班的苦逼生活。
公司遊戲架構早就寫好了,名叫ReAngView,像我們這種普通的碼農很多底層程式碼是無需觸碰的,只需要安心地寫好我們的業務程式碼搬磚就好了,但這一部分往往都是髒活累活,導致經常加班。老闆之前是一個玩世不恭的二世祖,而且是獨子,終日花天酒地,後來他那有錢的老爸過世給他留了一大筆資產,去世前囑咐他要找些正經事業做,這人彷彿就開竅似的、浪子回頭。他對遊戲沒有任何熱情,開遊戲公司純粹是聽說做遊戲很掙錢,做遊戲的方法也很簡單粗暴,換個面板、換個故事指令碼就當成一個新遊戲來賣了。
說倒是很輕巧,換個面板、換個故事指令碼就行了,就像某個國產瀏覽器,拿個谷歌瀏覽器,換個軟體圖示,就宣稱完全自主研發,然後去騙錢融資那麼簡單。實際上哪有那麼簡單,有很多繁瑣的細節程式碼要開發,就不別說遊戲框架本身的bug了,這個框架是幾年前一個大神開發的,我入公司不久後,他嫌工資低就被其他公司挖走了,這人叫什麼我不知道,我與他只有數面之緣,只知道大家都叫他贏神。
後來的新人誰敢動這個框架的程式碼啊,公司那麼多已經發行的遊戲執行在這個框架之上,動了出了問題誰負責啊。但是痛苦啊!基於這個框架來開發遊戲,終日就像戴著鐐銬跳舞的囚犯一樣,小心翼翼地躲開那些已知的坑點,如果你遇到一些前人都沒遇到的問題,那麼恭喜你,中獎了!你就在那裡慢慢加班除錯去吧,一除錯經常就是一兩點。
可以說苦不堪言,要離職吧,又不敢,因為沒有掌握什麼核心技術,今年又遇到行業不景氣、大裁員,害怕離職後找不到新的工作,怎麼辦呢?能怎麼辦,得過且過唄,至少熬過這個行業寒冬先,嗯,活下去要緊!今年,剩者為王!
最近開發的遊戲是關於元末農民起義的遊戲,裡面的主角就是大家熟知的明朝開國皇帝——朱元璋,玩家所要做的操控朱元璋就是打敗各路諸侯,最後建立明朝。聽起來很不錯是不是?但是就是個經營類遊戲。因為原本的遊戲框架就是專門針對經營養成類遊戲開發出來,無論你怎麼改、怎麼換面板、換腳步,也只能開發出一個經營類遊戲而已。
說到朱元璋,我與他之間唯一的關係,應該就是我們都姓朱?不,好像不止,仔細想想,我差點成了他的“祖宗”。傳聞朱元璋在建國之後,一度想認朱文公做祖先來著。在那個等級十分森嚴的封建社會來說,有個好出身、背景十分重要。如果你成功了,又沒有一個好出身怎麼辦呢?有辦法,那就是追認祖宗啊!
什麼?祖宗也能追認、亂認?當然能,而且這還是我中華民族的“傳統美德”哩。那這個“美德”的始作俑者是誰呢?就是西周王室。司馬遷的《史記》中記載了一段故事,說后稷的母親姜原出門的時候看到了一個很大很大的腳印,她踩了上去,然後呢?然後居然就懷孕了!生下來的這個孩子就是后稷,后稷及其後代又繼續繁衍,慢慢地就誕生了姬氏這一族來。後來武王伐紂,推翻了商朝,建立了周朝,定天子七廟的時候,就把后稷定位太祖。這就是中國可考的最早杜撰、追認祖先的例子,此後便一發不可收拾,後人頻繁效仿,這祖宗也就越認越亂了。
我去,這也太扯淡了吧。現代人會這麼想,但是我們的古人可吃這一套哩。想想漢高祖劉邦,《史記.高祖本紀》中說他是她媽媽被一條龍趴在身上後,懷孕生下來的,所以他是真龍天子,當上皇帝那是上天的旨意。哈哈,劉邦父親這綠帽戴的,還是龍給戴的,無可奈何,無可奈何啊。
不過,朱元璋沒認成。為什麼呢?因為朱熹生活的年代離得太近了,種種證據都擺在那裡,他們家也是世代農民,街坊領居也都在,自己父親、爺爺的墳墓在哪裡,兄弟姐妹是誰,大家都知道。說自己祖先是朱熹,騙誰呢,誰都騙不了,最後只好作罷。差一點,就差那麼一點點,我朱熹就成了朱元璋的“祖先”,成為皇親國戚了,以後就可以吹噓我乃大明之祖,好不威風,可惜可惜了。
“我說朱夫子,這半個月前提的需求,你改完沒有啊!趕緊吧,下週就要上線發版本了,你怎麼還磨磨蹭蹭的,我覺得你這裡不行,要改一改,這裡我覺得也不行……”,這個站在我眼前,一直說著“我覺得”、尖嘴猴腮的傢伙,名叫王望,是這個專案的經理。此人是十分狗腿,除了跪舔老闆、胡亂改需求、提需求之外,我看不出此人有何才能,對專案的推進有任何幫助,添堵倒是大大的有。天天把什麼遊戲模式創新、軟體工程管理、設計模式掛在嘴邊,其實他懂個屁遊戲,懂個屁程式設計,懂個屁軟體工程管理。現在掛在嘴邊這些名詞,是他報名參加一個什麼速成培訓班學來的,至於這些名詞是什麼意思,我估計他是搞不明白的,搞不明白沒關係啊,說起來覺得很厲害、高大尚就是了。他不是軟體工程科班出身,在進公司之前的也是和遊戲毛關係沒有,之前幹什麼的?二世祖唄,他唯一和遊戲沾得到邊的就是:他表哥是一家遊戲公司的老闆。而這個老闆就是我老闆。老闆的姑媽覺得他繼續鬼混下去不行,就拜託老闆讓他進公司工作工作,讓他漲漲見識,有些事做。果然,二世祖的親戚也是二世祖,祖傳的二世祖,世祖基因很永久,一根永流傳。
進來就進來唄,偏偏是在我們這個專案成立不久後進來的,剛好專案經理劉斌要離職,老闆讓他進來跟著劉斌學習,兩個月後劉斌離職,讓他來接手。劉斌還在的時候,這個人還不敢太放肆,畢竟是新人,規規矩矩按照劉斌的指示來,專案的推進還是有條不紊的。後來劉斌離職了,他正式上位了,噩夢就開始了!天天覺得這不行那不行,什麼玩法不創新啊,UI不夠精緻啊,然後各種胡亂提需求、改需求,導致專案組連續加班三個月了。有幾個人受不了這鳥人就離職了,就我最耐扛,堅持到現在,沒辦法我就是這麼勤勉耐勞,其實是我還有房貸、車貸要還,否則老子早就尥蹶子不幹了。此人也是沒禮貌、自來熟,喜歡給人取花名,不稱名字、不稱職位,說是這樣可以讓團隊更加親近親近,氛圍更好些,某個知名軟體大企業就是這麼做的,這叫企業文化,作為團隊管理者,他率先表態,叫自己令狐沖。噗,你可能要笑,為什麼這人要叫令狐沖呢?因為這樣他就是得到風清揚真傳的人了,必將帶領我們團隊橫掃遊戲武林!聽到我名字後,就立馬給我取了個“朱夫子”的外號,以後就不分場合地叫我“朱夫子”,上次去和合作方開會的時候就直接叫我這外號,搞得合作方一臉懵逼,最後會議上與會人員鬨然大笑,搞得我很是尷尬。總著,遇到此人,我算是倒了八輩子黴運了。
“嗯,好的,嗯,好,好,我會按照您說的改的,OK,OK,對,嗯,您說的很對,我會改的……”。我微笑虛心說到。你可能會詫異朱熹你不是很討厭這個人嗎?怎麼對他如此跪舔。因為我深知如果你不答應這瘟神,隨機而來的是更多的麻煩,你只要敢反駁,他會在你面前一直說下去,直到你屈服。其實他說什麼,我也是左耳進右耳出的,每次他在我面前唧唧歪歪的時候,我都是用手機錄音一下,他走後我再將語音轉成文字來看他所說的事情,然後再來改改程式碼。
由於有了這樣一個不靠譜的頭兒,我的程式碼也不敢把業務程式碼寫的太死,沒用的程式碼我也不敢刪除,要麼就放在那裡不呼叫,要麼就註釋一下,反正老子就是不刪,冗餘就冗餘唄。不是有程式碼版本和分支管理麼,為什麼要這樣做呢?因為此人反覆無常,今天說不要的功能明天可能又要了,什麼分支、版本,你是應付不了這種變動的。我經常和我的同事開玩笑說我的軟體有幾百個配置、開關,一切換就可以變動到另外一個邏輯分支去。
“吳道子,麻煩把那個新的圖片素材上傳到git倉庫中,我待會加班要用。”我站起來和對面的設計美工小姐姐說到。吳道子?小姐姐?這又是什麼鬼?這也是“令狐沖”王望整出來,他說這設計美工就是我們團隊的畫家,吳道子是我國古代的畫聖,所以就給這小姐姐取了這個花名。莫名其妙,一個妙齡女子硬生生被叫成了一個老頭子。一來二去,大家習慣了,也就這麼叫起來了,這個小姐姐也是隨和,居然絲毫不在意。
加班改功能是痛苦的,慢慢長夜難熬,其他專案組的人都早就下班了,偌大的辦公室只剩下我一個人。修改了五個多小時後,此時我已經意識模糊,頭痛欲裂。我編譯了一下程式碼,發現遊戲沒法運行了。我的天,什麼鬼,不要這樣啊,這還讓不讓人下班啦。沒辦法,只能慢慢除錯了,一步兩步,一步兩步,是魔鬼的步伐,經過半個多小時後,我發現這不是我業務程式碼的問題,問題出在了遊戲底層框架的程式碼的一個API邏輯判斷上,這可怎麼辦啊,框架的程式碼我又不能動,別慌,山人自由妙計,我可以程式碼熱替換啊,這樣我就可以在不動框架程式碼的前提上,在軟體執行時,動態替換掉對應的API,換成我自己修復好的API,這樣執行也正常,底層程式碼又不用動,哈哈我真是個天才!好,就這樣幹!
改完之後,我啟動電腦上的虛擬機器運行遊戲試玩一下,一個過場動畫後,突然遊戲節目白屏了卡死了,不會吧,我又沒有改到遊戲渲染那一部分的程式碼,怎麼就不行了,這個破框架,破輪子!時間已經到了凌晨四點半,這個時候回家睡覺,三個小時後又得擠公交換地鐵過來上班了,然後又得上一天班,搞不好還得加班。想到這裡我就氣不打一處來,我憤怒了,我用我手指在命令列終端胡亂敲了一段字,然後用拳頭狠狠砸中了鍵盤的回車鍵。
突然辦公室的燈忽明忽暗、不斷閃爍著,最後燈都滅了,看來是跳閘了,我走去門邊把電閘拉上,我回頭一看,此時我的電腦顯示器發出了刺目的白光,那光太亮了,亮到令人睜不開眼睛,我用左手遮擋著眼睛,慢慢顯示器發出巨大的吸力,許多桌椅、杯子、書都被吸進去,彷彿背後有著一個力大無比的抽風機,到底怎麼回事我不知道,我只知道我如果不緊緊抱緊這扇門就完蛋了!
我死命地抱緊門,但是吸力真的是太大了,猶如那二十級颱風的風力,我整個人居然就被吸得懸空了起來,手脫離了抓取物,整個人朝著顯示器飛去。見鬼了嚕,我命休矣!別人改程式碼頂多改出Bug來,大不了被炒,我這改程式碼改出了鬼,要命了!來不及我多想,我被吸入顯示器中去了。
“哎,頭好疼!”我開始醒了過來,只覺頭十分之疼,我用手揉了揉腦袋瓜,睜開眼睛,視線開始變得清晰,只看到了四周都是白茫茫的一片,看不到邊,完了,我死了?早就聽說有些程式設計師加班猝死的新聞,自己不以為然,好了吧,這下子自己“因公殉職”了吧。這裡是天堂還是地獄?看著白茫茫的一片,不像是地獄,至少我看過的電視劇裡的地獄不是這樣的,所以這裡是天堂?但是如果是天堂,那天使呢?上帝呢?
不等我多想,不遠處就傳來了一個聲音:“終於有人來了!”,這個人慢慢向我走來,隨著距離越來越近,我總於看清他了,他就是公司遊戲框架的作者——贏神。怎麼,他也死了?而且和我一樣,好事做多了,到了天堂?
“贏神!你怎麼在這裡?這裡是什麼地方?我又為什麼來到這裡?我是不是已經死了?這裡是天堂麼?我能不能復活?”我急忙問到。
“小夥子,你問題那麼多,你希望我先回答那一個啊?”贏神笑道。
“沒事,是我緊張了,贏神你說”,都到了這了,我也只能寄希望於贏神的解答了。
“這裡是ReAngView框架的太虛幻境結界,是我在框架程式碼中埋的彩蛋,我寫了個定時器判斷,如果到了今天的凌晨四點半還有人在加班,並且動態篡改了框架的API,就會觸發這個幻境結界,我本以為沒人會到這裡,沒想到你來了。”贏神解釋道。
“那贏神你是怎麼到這裡的?你剛剛也在加班改程式碼,然後自己中了自己的彩蛋?”我反諷道。
“非也,我從公司離職後,到另外一家大公司上班,本來以為是脫離地獄來到天堂,沒想到是進入了另外一個大坑,加班不止,終於在一年後的加班中猝死了,在我靈魂彌留之際,我的意識遇到了程式之神——林納斯,他看在我對於遊戲程式設計如此執著,賦予我意識永生之力,並允許我復活一小時,編寫我人生中最後一段程式碼,所以我就寫下了ReAngView框架的太虛幻境結界這個彩蛋,並將自己的意識注入到框架之中,默默地守護著ReAngView框架的使用者們,期望有一天能有人來到這個遊戲世界,這一等就是幾年,等來了你。”
“既然這裡不是天堂,那我已經死了麼?”,我連忙追問道。
“哈哈,沒有,你還沒有死,你只是剛好觸發了這個彩蛋,被捲入了遊戲之中了,只要你完成遊戲任務,通關了自然就可以離開這個結界。”贏神笑著對我說。
“那如果通不了關呢?”我急忙問道。
“在遊戲開始後的四十年遊戲時間內,如果通不了關,那麼你將”
“會怎樣,困在這裡?”我打斷了贏神的話,插嘴道。
“boy,你想多了,不是困在這裡,而是你在現實世界的身體將會死去,也就是你們說的猝死”。
什麼!居然要通關遊戲,才能離開這個鬼地方,不通關,太久還會死!!!問題是這個遊戲自從被王望接手後,便改得十分的困難,說什麼我們要玩法創新,要面向高玩、硬核玩家,難一點才能吸引玩家充錢啊。當初沒在意,反正玩的人有不是我自己,開發而已嘛,管他呢,好了,這下好了,受苦受難的第一人就是自己!果然出來混,遲早是要還的。
“好了,很快遊戲就要啟動了,我不能久留了,祝你好運,boy”,看著贏神開始變得虛空起來,我急了,“別啊!”我急忙想抓住他的手,可是我沒能抓得到,隨繼他就完成一堆0101幻化在空氣之中,漸漸消失了。
“遊戲要開始了喲,請玩家做好準備。”這聲音我很熟悉,因為這段聲音就是我前幾天錄製吳道子小姐姐那甜美的聲音,用來做遊戲進入時的過場音訊的。
怎麼辦?怎麼辦?遊戲馬上就要開始了,王望那傢伙魔改後的變態遊戲,贏神你好歹也給我點裝備啊,我這種非酋,拿什麼通關啊!
“5!4!3!2!1!0!遊戲開始!”
咦,怎麼沒動靜,莫非是遊戲啟動失敗了?我四處張望,沒有什麼變化啊,感覺腳下有點奇怪,低頭一看,呵呵,地面沒了,我整個人開始從空中墜落,原來我剛才是在這遊戲的天堂上啊!上帝啊,不,贏神啊,林納斯大神啊,保佑我至少掉到水裡吧,掉到山上的石頭上我可就完蛋了,丟落速度越來越快,本來就膽小的我昏厥了過去,等待著我的是什麼?死亡?狗命?還是通關?