我的程式碼和註釋都寫的像坨屎,那又怎麼樣?

吃草的羅漢發表於2019-06-05

我的程式碼和註釋都寫的像坨屎,那又怎麼樣?

題圖: 攝於2019年 - 紹興東湖

一週前,我的朋友圈被一篇 #百度某新員工發飆:前人程式碼寫得像一坨屎,顛覆了對大廠的認知# 的文章刷屏了,評論區也非常熱鬧。

但讓我驚訝的是,幾乎所有的聲音裡都充滿著嘲笑與譏諷,有的劍指百度的價值觀,那架勢就好像李彥宏殺了他親爹似的,有的把這事與之前 “阿里雲掛掉” 聯絡起來,調侃技術大廠與技術 “大腸” 等同,都是一群垃圾貨抱團,還有的則借題發揮,拿出自己的程式碼趾高氣昂的對老闆說 “瞧瞧,百度的程式設計師也不過如此,我們可比他們強多了”。

早就想就此類現象發表一些觀點,借這個機會,談談自己的看法。

2007年初,我曾在杭州某遊戲公司擔任架構師,負責線上遊戲點卡交易平臺的設計與開發。當時遊戲虛擬交易非常火爆,為了促進交易額的攀升,市場部的同學可算是動足了腦經,今天一個活動,明天一個促銷,搞得研發的小夥伴疲憊不堪,不僅白天寫程式碼趕工,而且晚上還要與運維一起值班守護。

在當時那個時代,我覺得搞開發的都是一個祖師爺教出來的,無論你把任務分配給誰,也別管內容是啥,只要你連續指派同一型別的任務,他必定會給你抽象個公共服務出來,然後再和你大談 “程式碼(或功能)抽象” 的強大特效,嘴裡還不停地叨叨 “以後再遇上這樣的業務,再也不需要硬編碼了,只需要這麼一配,那麼一調,就搞定啦!”

很多歷史就是驚人的相似,資訊產業的發展過去了那麼多年,太多的事實表明,在缺乏經驗與業務背景的前提下,大多數的抽象設計都是 “過度設計” 的產物。

可想而知,隨著這些 “抽象特效” 的陸續上線,BUG數直線上升,臨時性補丁滿天飛,好幾次營銷活動都險些釀成了慘劇,還好運氣算不錯,都有驚無險。

就這樣,公司的業績也在技術顛簸中不斷的發展壯大,並在半年內完成了新一輪的融資。

2008年春節後,因部分核心開發的離職,我打算重新引入一些有經驗的架構師,並對系統進行部分的重構。

在連續看了幾名候選人之後,我們選定了兩名有電商背景的架構師,一個工作五年,一個工作七年,並確認一週後便能入職。正當我們打算大幹一場的時候,這倆人卻在入職一週後同時提出離職,這速度重新整理了我當時的世界觀。

我有些鬱悶,立即找他們談話。

在離職面談中,他們向我傾吐了一些原因:

  • 命名沒標準,無效命名太多,完全看不懂;

  • 註釋幾乎為空,程式碼邏輯全靠BUG;

  • 類繼承關係混亂,把 “物件導向” 硬生生搞成了 “程式導向”,滿屏的IF…ELSE……

這幾點,我用今天的話總結下:程式碼寫的太爛,註釋寫的太沒水準,這系統和人都帶不動,我走了,再見。

行,還算客氣,並沒有直接說出 “像坨屎” 這三個字。

也許是因為不甘心,我一直努力的向他們訴說著整個系統的發展過程,希望他們明白 “好的架構不是設計出來的,而是演進出來的” 道理,可他們卻在說完以上這些原因之後選擇了沉默,不再說話。

離開後,他們去了阿里,之後我也沒再和他們聯絡過。

回憶起當年的我,那個內心還比較純真的年紀,如果你跟我說阿里的程式碼和註釋都是金子鑲成的,我也絕對會相信。

我的程式碼和註釋都寫的像坨屎,那又怎麼樣?

這些年,我經歷過一些所謂的大廠,也透過人脈關係瞭解過一些網際網路頭部企業的編碼質量。

不可否認,有些公司,有些團隊的某些程式碼與註釋,的確看起來像坨屎。

幾年前,我在大智慧,團隊裡有位五年經驗的工程師,為了用Javascript實現一個 “Next Day”,不僅花了整整一週,而且在實現NextCurrentDay的時候,居然用Javascript從0開始手擼了一遍,這麼一個Date+1的計算,還忘記算閏年。

原本三天干完的活,他居然搞了一週,還居然不用Date物件,就算完全沒有指令碼基礎,我想學過計算機的應該都會知道吧。

不僅如此,他還把這個方法名取名為 “getAbc”,並且沒有一行註釋。

在做CodeReview的時候,差點沒把我氣的背過氣去,瞬間點燃了我的火爆脾氣,指著他的鼻子,呵令他在三天內完成修改。

沒想到,這事過去沒幾天,他居然提出離職,並在離職面談時向公司投訴,說我對他進行了人身攻擊。

更有意思的是,他居然去了某某大廠,拿到了比在大智慧高1.5倍的薪水。

經過這件事,我覺得自己的人生觀又一次被顛覆了。

我的程式碼和註釋都寫的像坨屎,那又怎麼樣?

“你說我的程式碼和註釋都寫的像坨屎?恭喜你,答對了,那又怎麼樣?老子不伺候了。”

你是否從這個事件中聞到了這股味道?

我曾在很多公開場合抨擊過當今的 “新一代” 程式設計師,而抨擊的內容也無非兩點,一是基礎知識薄弱,二是自我要求不高。

說到底,無非就是吐槽他們不瞭解記憶體結構,與資料庫正規化,甚至連基本的資料演算法、二進位制八進位制十六進位制轉換之類的知識都不懂,或者是心態浮躁,滿腦充斥著得過且過的價值觀。

現在想想,這也怪不得他們。

網際網路時代,是一個浮躁的時代,也是效率優先的時代,這不僅體現在技術圈,其他領域也一樣。

如果我問你,現在考個駕照大概需要花費多長時間?相信很多人都會回答:3個月左右、6個月內。但在我當年,或許要三年才拿到駕照。

想要成為一名合格的司機,在這三年裡,你不但要學習機械原理,還要掌握基本的修車技能,並透過 “師父帶徒弟” 的實習期,才能拿到駕照。

現在呢?只要你的智商能夠分辨 “油門” 和 “剎車”,似乎拿個駕照,也就是半年內的事。

有人說,時代造英雄,但別忘了,時代也造 “殺手”。

在馬路上,你會遇到 “馬路殺手”,在技術圈,你同樣會遇到 “一坨程式碼”。

我的程式碼和註釋都寫的像坨屎,那又怎麼樣?

從古至今,似乎效率與質量一直是個矛盾,很多人也習慣拿這事來做擋箭牌。

“為什麼沒寫註釋?”

“因為趕工,沒時間寫呀”

“為什麼不用這個物件?為什麼不取有效方法名?”

“你又沒跟我說,跑動就行了,你那麼認真幹嘛?”

這些對話是不是特別熟悉?聽上去是不是特別有道理?

如果你也這麼認為,我只想對你說,“你不但程式碼和註釋寫的像坨屎,技術價值觀也像坨屎。”

真是人不要臉,天下無敵。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901778/viewspace-2646867/,如需轉載,請註明出處,否則將追究法律責任。

相關文章