一周前,我的朋友圈被一篇 #百度某新員工發飆:前人代碼寫得像一坨屎,顛覆了對大廠的認知# 的文章刷屏了,評論區也非常熱鬧。
但讓我驚訝的是,幾乎所有的聲音里都充滿著嘲笑與譏諷,有的劍指百度的價值觀,那架勢就好像李彥宏殺了他親爹似的,有的把這事與之前 “阿里云掛掉” 聯系起來,調侃技術大廠與技術 “大腸” 等同,都是一群垃圾貨抱團,還有的則借題發揮,拿出自己的代碼趾高氣昂的對老板說 “瞧瞧,百度的程序員也不過如此,我們可比他們強多了”。
早就想就此類現象發表一些觀點,借這個機會,談談自己的看法。
2007年初,我曾在杭州某游戲公司擔任架構師,負責在線游戲點卡交易平臺的設計與開發。當時游戲虛擬交易非常火爆,為了促進交易額的攀升,市場部的同學可算是動足了腦經,今天一個活動,明天一個促銷,搞得研發的小伙伴疲憊不堪,不僅白天寫代碼趕工,而且晚上還要與運維一起值班守護。
在當時那個時代,我覺得搞開發的都是一個祖師爺教出來的,無論你把任務分配給誰,也別管內容是啥,只要你連續指派同一類型的任務,他必定會給你抽象個公共服務出來,然后再和你大談 “代碼(或功能)抽象” 的強大特效,嘴里還不停地叨叨 “以后再遇上這樣的業務,再也不需要硬編碼了,只需要這么一配,那么一調,就搞定啦!”
很多歷史就是驚人的相似,信息產業的發展過去了那么多年,太多的事實表明,在缺乏經驗與業務背景的前提下,大多數的抽象設計都是 “過度設計” 的產物。
可想而知,隨著這些 “抽象特效” 的陸續上線,BUG數直線上升,臨時性補丁滿天飛,好幾次營銷活動都險些釀成了慘劇,還好運氣算不錯,都有驚無險。
就這樣,公司的業績也在技術顛簸中不斷的發展壯大,并在半年內完成了新一輪的融資。
2008年春節后,因部分核心開發的離職,我打算重新引入一些有經驗的架構師,并對系統進行部分的重構。
在連續看了幾名候選人之后,我們選定了兩名有電商背景的架構師,一個工作五年,一個工作七年,并確認一周后便能入職。正當我們打算大干一場的時候,這倆人卻在入職一周后同時提出離職,這速度刷新了我當時的世界觀。
我有些郁悶,立即找他們談話。
在離職面談中,他們向我傾吐了一些原因:
命名沒標準,無效命名太多,完全看不懂;
注釋幾乎為空,代碼邏輯全靠BUG;
類繼承關系混亂,把 “面向對象” 硬生生搞成了 “面向過程”,滿屏的IF…ELSE……
這幾點,我用今天的話總結下:代碼寫的太爛,注釋寫的太沒水準,這系統和人都帶不動,我走了,再見。
行,還算客氣,并沒有直接說出 “像坨屎” 這三個字。
也許是因為不甘心,我一直努力的向他們訴說著整個系統的發展過程,希望他們明白 “好的架構不是設計出來的,而是演進出來的” 道理,可他們卻在說完以上這些原因之后選擇了沉默,不再說話。
離開后,他們去了阿里,之后我也沒再和他們聯系過。
回憶起當年的我,那個內心還比較純真的年紀,如果你跟我說阿里的代碼和注釋都是金子鑲成的,我也絕對會相信。這些年,我經歷過一些所謂的大廠,也通過人脈關系了解過一些互聯網頭部企業的編碼質量。
不可否認,有些公司,有些團隊的某些代碼與注釋,的確看起來像坨屎。
幾年前,我在大智慧,團隊里有位五年經驗的工程師,為了用Javascript實現一個 “Next Day”,不僅花了整整一周,而且在實現NextCurrentDay的時候,居然用Javascript從0開始手擼了一遍,這么一個Date+1的計算,還忘記算閏年。
原本三天干完的活,他居然搞了一周,還居然不用Date對象,就算完全沒有腳本基礎,我想學過計算機的應該都會知道吧。
不僅如此,他還把這個方法名取名為 “getAbc”,并且沒有一行注釋。
在做CodeReview的時候,差點沒把我氣的背過氣去,瞬間點燃了我的火爆脾氣,指著他的鼻子,呵令他在三天內完成修改。
沒想到,這事過去沒幾天,他居然提出離職,并在離職面談時向公司投訴,說我對他進行了人身攻擊。
更有意思的是,他居然去了某某大廠,拿到了比在大智慧高1.5倍的薪水。
經過這件事,我覺得自己的人生觀又一次被顛覆了。“你說我的代碼和注釋都寫的像坨屎?恭喜你,答對了,那又怎么樣?老子不伺候了。”
你是否從這個事件中聞到了這股味道?
我曾在很多公開場合抨擊過當今的 “新一代” 程序員,而抨擊的內容也無非兩點,一是基礎知識薄弱,二是自我要求不高。
說到底,無非就是吐槽他們不了解內存結構,與數據庫范式,甚至連基本的數據算法、二進制八進制十六進制轉換之類的知識都不懂,或者是心態浮躁,滿腦充斥著得過且過的價值觀。
現在想想,這也怪不得他們。
互聯網時代,是一個浮躁的時代,也是效率優先的時代,這不僅體現在技術圈,其他領域也一樣。
如果我問你,現在考個駕照大概需要花費多長時間?相信很多人都會回答:3個月左右、6個月內。但在我當年,或許要三年才拿到駕照。
想要成為一名合格的司機,在這三年里,你不但要學習機械原理,還要掌握基本的修車技能,并通過 “師父帶徒弟” 的實習期,才能拿到駕照。
現在呢?只要你的智商能夠分辨 “油門” 和 “剎車”,似乎拿個駕照,也就是半年內的事。
有人說,時代造英雄,但別忘了,時代也造 “殺手”。
在馬路上,你會遇到 “馬路殺手”,在技術圈,你同樣會遇到 “一坨代碼”。從古至今,似乎效率與質量一直是個矛盾,很多人也習慣拿這事來做擋箭牌。
“為什么沒寫注釋?”
“因為趕工,沒時間寫呀”
“為什么不用這個對象?為什么不取有效方法名?”
“你又沒跟我說,跑動就行了,你那么認真干嘛?”
這些對話是不是特別熟悉?聽上去是不是特別有道理?
如果你也這么認為,我只想對你說,“你不但代碼和注釋寫的像坨屎,技術價值觀也像坨屎。”
真是人不要臉,天下無敵。
討教不虧是最專業的知識共享平臺