大廠裁員逼出奇招,「防禦性編程」能否自救?

2023-12-12     51CTO

原標題:大廠裁員逼出奇招,「防禦性編程」能否自救?

「碼農們在工作中絕對不能按以前書上說的寫優美清晰代碼,要防禦性編程,確保自己被裁,剩下的代碼也是不可維護的」。

近日一則關於用「防禦性編碼」應對大廠裁員潮的消息衝上職場社交平台熱搜。這一策略背後的邏輯是,通過晦澀難懂、難以維護的代碼,確保自己一旦離職,留下的代碼難以替代,從而在某種程度上提高自己的「不可替代」性。

但這種方式真的能成為程式設計師保住飯碗的「護城河」,還是僅僅是心理上的安慰?抑或只是一句釋放壓力的調侃?

大廠裁員風暴逼出「奇招」

說起貫穿2023年全球科技領域的關鍵詞,「裁員」恐怕逃不出前三。

多家外媒和數據機構針對海外科技公司2023年裁員情況的盤點顯示,截至2023年11月中旬,科技行業已經裁撤超過24萬個工作崗位,同比增長50%。前7家裁員最多的科技公司中,Google、Amazon、Microsoft、Meta等大公司赫然在列。

再看國內的情況,據公開報道,騰訊阿里和快手三家公司,今年上半年合計減員超1.6萬人。此外,包括嗶哩嗶哩、美團、百度、拼多多、京東等公司也進行了一定程度的裁員。

面對各個大廠「降本增效」、「開猿節流」的浪潮,不少程式設計師們感到前所未有的不安,劍走偏鋒提出各種「奇招」保住飯碗。

「防禦性編程」就是其中一個究其背後的心理,可能有以下兩點

一是行業競爭的激烈不免讓程式設計師們擔心,如果自己寫出的代碼清晰可讀,可能很容易就會被他人理解和取代。將代碼變得晦澀難懂,或許可以成為保住自己在團隊中競爭優勢的一個「捷徑」。

二是通過「防禦性編碼」這種「自保」手段,就算自己被裁,留下的代碼也會成為企業無法維護的「定時炸彈」,有一種即使「魚死」也要爭個「網破」的報復感。

用「防禦性代碼」是自保,還是作死?

用「防禦性代碼」自保的策略一出,評論區可是炸開了鍋,網友們眾說紛紜。主要的意見大概分為三類:

一種表示支持,你不仁休怪我不義,主打一個互相傷害。

更有大廠員工直截了當給出了防禦性編碼的幾條入門技巧:

第二種是明確反對的,認為裁員主要和工作能力、公司戰略有關,此舉很難保全自己,還容易被認為價值觀有問題。

第三種認為這種情況在大廠基本上不會出現,因為有代碼審核(code review)機制。

也有人仿佛看穿了這是老程式設計師在給新手菜鳥們挖坑,直言不諱地指出這種說法只是個玩笑,不必當真:「如果你信老程式設計師們調侃的『防禦性編程』,那你距離被淘汰也不遠了」。

客觀來講,採用「防禦性編程」,就意味著一旦這位程式設計師離職,團隊將面臨巨大的技術債務,其他團隊成員要花費大量時間理解和重構這些代碼。有從業人員明確表示,無論從哪個角度來講,用「防禦性代碼」換取保住職位的安全感並不可取。

  • 首先,從個人能力提升的角度來看,故意寫晦澀難懂的「爛」代碼不利於提高自身的編程水平。
  • 其次,從團隊協作方面來看,如果你寫的代碼過於複雜或者難以理解,會嚴重影響項目的推進效率;此外,現代的開發環境和公司文化通常都強調代碼質量和團隊合作,許多公司和團隊都有 code review (代碼審查)機制,以確保代碼的質量和可維護性。
  • 最後,故意寫爛代碼有極大可能會對個人職業發展產生負面影響。

「防禦性編程」=屎山代碼?別混淆概念

討論至此,大家有沒有發現,以上提到的「防禦性編程」指的就是「爛」代碼,這不就是業內常提到的「屎山代碼」嗎?

有明眼人在討論伊始就發現了,所謂的用「防禦性代碼」自保,其實有些偷換概念了。

事實上,防禦性編程本身確實是編程領域的一個專業術語,本意是一種細緻、謹慎的編程方法。它要求程式設計師在編寫代碼時預見可能出現的問題,並提前採取措施來規避這些問題。這種編程習慣更多地強調錯誤的預防和控制,以減少未來可能出現的災難性後果。

值得注意的是,防禦性編程有時也被計算機科學家稱為安全編程(Secure programming),通常用於需要高可用性、安全性或安全性的地方。它是一種改進軟體和原始碼的方法,具體體現在:

  • 總體質量——減少軟體錯誤和問題的數量。
  • 使原始碼易於理解——原始碼應該可讀且易於理解,以便在代碼審計中獲得批准。
  • 使軟體以可預測的方式運行,儘管有意外的輸入或用戶操作。

說直白一點就是力求「哪怕用戶是個發狂的亂按鍵的猴子,也玩不壞我的系統」。

所以此「防」(防止代碼出錯)非彼「防」(提防被裁員),只是在「開源節流」的浪潮下,防禦性編程被賦予了新的含義。而防禦性編程的真正價值在於能夠幫助我們編寫出更加健壯、可靠的代碼,而不是成為一種職場生存的策略

為自保的「防禦性編程」違法嗎?

提到程式設計師為防止被裁員採用「防禦性編程」(屎山代碼),就不由得會聯想到此前程式設計師為發泄不滿,「刪庫跑路」而被判刑收監的案例。

同樣是程式設計師為了維護自己的利益而在計算機編程方面「動手腳」,那麼故意寫「屎山」代碼違法嗎?

據了解,《刑法》中已明確破壞計算機信息系統罪。根據《刑法》第二百八十六條,凡是違反國家規定,對計算機信息系統功能進行刪除、修改、增加、干擾,造成計算機信息系統不能正常運行,後果嚴重的,處五年以下有期徒刑或者拘役,後果特別嚴重的,處五年以上有期徒刑。

從勞動關係的角度來講,如果程式設計師寫的代碼能跑通,不影響系統運行,也能確保功能的正常使用,那他就完成了對其工作職責的交付,似乎也無可厚非;如果通過「防禦性編程」發泄情緒,因此給公司業務造成重大損失被追責,恐怕也很難逃脫法律的制裁。

要麼不寫,要麼就寫優雅的代碼

雖然能夠理解程式設計師們迫於裁員壓力提出自保策略的心情,但在編程的世界裡,寫出詩一樣的代碼,應該成為每個程式設計師追求的目標。

寫優雅代碼的原因很明確,首先邏輯清晰,簡單直觀,這樣你可以把更多精力花在功能開發上;其次清新的思維寫出的代碼能減少bug,也就減少了修復bug的時間;最後站在自己的角度想想,你的代碼質量應該取決於你自己,而不是任何其他人或者組織,應該對自己負責,不應該讓其他因素成為你降低要求的理由。

在寫優雅代碼這件事上,計算機領域的大佬們也達成了共識:

C++之父 Bjarne Stroustrup:我喜歡優雅和高效的代碼,代碼邏輯應該直接了當,叫缺陷難以隱蔽;儘量減少依賴關係,使之便於維護;依賴某種分層戰略完善錯誤處理代碼。性能調製最優,省得引誘別人做沒規矩的優化,搞出一堆混亂來。整潔的代碼只做好一件事。

wiki 發明者 Ward Cunningham:如果每個例程都讓你感到深合已意,那就是整潔代碼。如果代碼讓程式語言看起來像是專為解決那個問題而存在,就可以稱之為漂亮的代碼。

世界級編程大師,設計模式和敏捷開發先驅 Robert C. Martin:在代碼閱讀中說髒話的頻率,是衡量代碼質量的唯一標準。

除了國外的大佬,小米科技創始人雷軍也非常提倡代碼的簡潔性和可讀性,30年前寫的代碼都火了,被贊像詩一樣優雅。

寫在最後

無論是一時不爽的發泄,還是認真想通過這種策略「自保」,都反應出當下環境中,程式設計師的憂慮和不安。

就企業的角度而言,需要重視大廠程式設計師們面臨的困境和壓力,鼓勵開放、協作的編程文化,讓每個程式設計師都能在團隊中發揮自己的最大價值,從而提高團隊的整體效率。

就程式設計師個人而言,對於公司遵守勞動法,依法依規,給足賠償,沒必要搞小動作,不然確實是雙輸的局面。如果公司不遵守勞動法,躲避賠償,應該根據勞動法來維權,不要通過不正規的手段來維權。

此外,在這個快速變化的行業中,程式設計師更應該注重提升自己的技能和知識,以適應新的技術和挑戰,而不是依賴於編寫晦澀難懂的代碼來保住自己的工作。

文章來源: https://twgreatdaily.com/zh-tw/4c03fde628c2e01fc949b425ca62d0e9.html