我的程式碼和註釋都寫的像坨屎,那又怎麼樣?
題圖: 攝於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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式碼都寫不完,還寫個錘子註釋!
- 怎麼讓程式碼不再臃腫,寫的像詩一樣優雅
- 都問我萬能碼做得怎麼樣
- 我寫的 Python 程式碼,同事都說好Python
- 像蓋房子一樣寫程式碼:當我以測試驅動開發的時候,我在想些什麼
- 如何優雅地寫註釋:找到程式碼註釋的黃金平衡點
- 你寫註釋她幫你寫程式碼
- 【翻譯】編寫程式碼註釋的最佳實踐
- 有趣的程式碼註釋
- 怎麼提升寫程式碼的能力
- apidoc利用程式碼註釋書寫文件API
- python程式註釋寫在什麼位置Python
- SnippetsLab - 像納博科夫寫小說一樣寫程式碼
- 程式碼才是最好的註釋
- 註釋,今晚我不關心程式碼,我只想你
- p3c 外掛,是怎麼檢查出你那屎山的程式碼?
- 使用Spring的註釋和反射讓程式碼更精簡Spring反射
- 雲開發中的戰鬥機 Laf,讓你像寫部落格一樣寫程式碼
- Java 18 新增@snipppet標籤,註釋中寫樣例程式碼更舒適了!Java
- Redis作者談如何編寫系統軟體的程式碼註釋Redis
- 大牛的程式碼是這樣寫的
- Oracle PL/SQL程式碼中的註釋OracleSQL
- CSS程式碼註釋CSS
- 程式設計師是否有義務做好程式碼的註釋?你做好程式碼註釋了嗎?程式設計師
- 我們公司的介面,入參和出參都進行了 ase 加密,我怎麼加密
- 如何真正寫好程式碼註釋 — 現代 JavaScript 教程JavaScript
- 寫註釋就能自動出程式碼?copilot 嚐鮮
- 那些拼命加班的程式設計師們,後來都怎麼樣了?程式設計師
- 每一座屎山程式碼背後,都藏著一堆熟讀程式碼規範的研發
- 奇葩程式寫的神一樣的註釋,被老闆看見會不會開出呢?
- 程式設計師都遇見過什麼奇葩? 客戶: 你程式碼加這麼多註釋有病啊程式設計師
- 像寫部落格一樣寫程式碼,laf導致一個部門被裁
- 作為 Gopher,你知道 Go 的註釋即文件應該怎麼寫嗎?Go
- 竟有如此沙雕的程式碼註釋!
- 編寫高質量可維護的程式碼:一目瞭然的註釋
- 我TM都快30歲了,還像個小孩子一樣!
- 把視覺化大屏變得像PPT一樣簡單,我是怎麼做到的?視覺化
- PHP理想國--程式碼怎麼寫看的更舒服PHP