軟體品質感官上的下降:產業趨勢分析

軟體品質感官上的下降:產業趨勢分析

軟體穩定性的現狀

開發者與進階使用者之間正形成一種日益增長的共識,即現代軟體的穩定性與精緻度正在下降。雖然有些人將此歸因於確認偏誤,但許多產業從業者認為,極端的架構複雜性與開發激勵機制的系統性轉變,使得軟體在各方面都客觀地變得更加多 Bug。

Bug 密度增加的主要驅動力

架構與環境複雜性

現代軟體必須在比前幾十年更加碎片化的生態系統中運行。Bug 表面積的增加是由幾個技術因素驅動的:

  • 擴大的 I/O 與裝置碎片化: 應用程式現在必須適應眾多的瀏覽器、螢幕尺寸與硬體配置。
  • 依賴項膨脹 (Dependency Bloat): 現代應用程式通常依賴於「紙牌屋」式的架構,利用多種語言(例如 Java, JavaScript, CSS, HTML, SQL)以及數十個連結的函式庫與外部伺服器,而傳統軟體通常僅依賴單一語言與程序。
  • 使用者規模: 軟體現在是為全球數十億的使用者打造的,這使得在 2000 年代初期在統計上不具相關性的邊緣案例 (edge cases) 暴露出來。

品質保證 (QA) 的侵蝕

許多貢獻者指出,系統性地移除專門的測試階段是導致不穩定性的主要原因。

"QA 團隊被解雇/從一開始就沒被雇用(將報告與測試的責任轉嫁給開發者/支援人員/客戶)管理層想要的是功能與銷售,而不是產品的吸引力與精緻度。"

這種轉變的特徵是「最小可行性產品」(MVP) 模型,即軟體在「可交付」(roughly 80% complete) 時便立即發布,並期望剩餘 20% 的功能可以透過更新來修補。這與舊有的「金牌主版本」(Gold Master) 發布週期形成對比,後者在任何公開發布前都需要達到極高的品質標準。

錯位的激勵機制與「快速交付」文化

企業激勵機制往往獎勵交付速度而非長期穩定性,從而創造了一個很少被視為成本的重做週期。

  • 速度陷阱: 當 AI 工具讓開發者工作得更快時,管理層通常會用更多功能來填補節省下來的時間,而不是用它來穩定程式碼庫。正如一位貢獻者所言,如果一個原本需要一個季度的專案現在只需六週,領導層通常會在該季度內塞入兩個發布版本,而不是投入時間進行精緻化。
  • 衛生因素 (The Hygiene Factor): 軟體品質通常被視為一種「衛生因素」——當它存在時不會受到獎勵,但當它低於某個門檻時會受到嚴厲懲罰。這導致管理層會問「我們能瞞過多少事?」而不是追求卓越。
  • 重做週期: 在 FAANG 風格的文化中,「乾淨的程式碼很慢」這種迷思依然存在。這導致了更多 Bug 被發布,進而觸發重做週期。由於這種重做通常不被視為成本來追蹤,開發者在績效評估中看起來更忙碌且更有生產力,而整體品質卻在下降。

AI 對程式碼品質的影響

在目前的開發環境中,人工智慧被視為一把雙面刃。雖然 AI 工具增加了可以創建的軟體與功能的數量,但它們可能會降低產出的品質:

  • 自動化測試失敗: 有人擔心測試現在是由 LLMs 編寫的,且不再經過人類審查,這意味著「綠色流水線檢查點 (green pipeline checkmarks)」不再保證功能正確性。
  • 「氛圍編碼」(Vibe Coding): 使用者報告遇到一些網站看起來視覺上很精緻,但在功能上卻是壞掉的,這暗示了一種趨勢,即美學上的「氛圍」被置於運作邏輯之上。

各平台觀察到的失效案例

使用者引用了幾個近期穩定性下降的高知名度案例:

  • 作業系統: 有報告指出 Windows 11 更新導致了嚴重的啟動失敗或使用者的系統被鎖定。
  • 雲端與生產力套件: Google Drive, Sheets, Gmail, 與 Meet 的生產問題增加,以及 Azure ML 的分頁失敗。
  • **傳統軟體: 即使是像 StarCraft 2 這樣長期穩定的軟體,據報也曾在近期更新中引入了破壞遊戲的 Bug。
  • 行動裝置生態系統: 有報告指出 Android 更新中出現了嚴重失效,例如在不進行每日重啟的情況下無法撥打電話。

Sources