天天看點

被劣質代碼“殘害”的這些年

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

都已經 2020 年了,但我們仍然在生産劣質軟體。自從計算機誕生以來,已經過去了近 70 年,但我們似乎還沒有吸取所有的教訓,仍然在犯着重複的錯誤。

科技行業的變化日新月異,或許今天看起來有意義的事情五年後就失去了其意義。我認為,這正是軟體的一個迷人之處,因為它的可塑性很強。但是有一件事是不變的,那就是劣質軟體帶來的糟糕體驗,我們似乎短期内無法克服它。

現在,開源生态系統中的優秀軟體多如牛毛,以至于人們誤以為劣等軟體已經成為過去。其實不然,盡管開源軟體在過去十年裡呈現出爆炸式增長趨勢,但這其中依然混迹着不少非常糟糕的軟體,我每天都在“深受其害”。

劣質軟體緣何而來?

編寫優秀的軟體的确很難,但這不能成為産出劣質軟體的借口。你每天都在使用優秀的軟體,是以應該知道如何來編寫優秀的軟體。優秀的軟體總是“潤物細無聲”,在你沒有察覺時就已完成了工作,而糟糕的軟體會把你逼向崩潰邊緣。但是,通常情況下,你不會看到或使用到特别多的糟糕軟體,因為我們日常生活中使用的大多數軟體都是消費軟體,糟糕的軟體無法在消費市場生存,但糟糕的軟體确實存在,這是不争的事實。

據我所知,糟糕的軟體在企業生态系統中普遍存在。最主要的原因有以下幾點:

  • 在企業環境中,人對系統更加寬容;
  • 普通軟體研發人員比消費市場型軟體研發人員要少,普通軟體開發者對于他們自己編寫軟體沒有投入感情;
  • 軟體所做的大部分工作是以機器對機器互動的形式完成的,當某些東西不能工作時,機器檢查問題的能力不足;
  • 大多數情況下,編寫企業軟體的人不如為消費市場編寫軟體的人更了解他們的最終使用者和他們的問題。
被劣質代碼“殘害”的這些年

糟糕的軟體是缺乏思考和錯誤決策的結果。每一行代碼都很重要,每一個接觸軟體的人都會對其産生影響,甚至每一個決策都會影響軟體的設計走向。如果你不編寫單元測試,而是利用編寫單元測試的時間來進行一些新特性的開發,那麼這時系統中的 Bug 就會無孔不入,這種目光短淺又無知的決定是對幾十年來積攢的經驗智慧的一種亵渎。

軟體不隻是一個冰冷的機械,它也有情感。你可能會問為什麼?因為它是工程師的邏輯和情感狀态的精确展現,工程師開發軟體時并不是隻有一種情緒,軟體是在工程師的多種情緒和狀态下編寫而成的,或難過、或開心、或高興、或生氣、或激動、或厭煩、或充滿鬥志,抑或沮喪憋悶,軟體既能反映工程師的情緒,還能反映出工作場所的文化氛圍。糟糕的企業文化幾乎總是會産生糟糕的軟體,這是顯而易見的,因為大多數組織在規模變大後卻因為糟糕的企業文化而最終衰敗。

劣質軟體帶來的惡果

糟糕的軟體會陷入惡性循環。技術債務不斷堆積,會議越來越多,完成的工作卻越來越少。會議上淨是些陳詞濫調的方法和管理實踐,卻沒有人懂。糟糕軟體就像癌症,大多數時候在最後階段才顯現出來,它會帶來非常嚴重的後果,它也會降低工作效率,讓人失去動力。軟體工程是一項充滿創造性的工作,但糟糕的軟體會把工程變成維護工作。花在 Bug 修複上的時間比花在為改善終端使用者體驗上的時間要多。公司内部的一些問題開始滲透進來。雖然糟糕的軟體是源于失敗的團隊,但是沒有人承擔責任,大家開始互相指責,在此情況下很容易滋生腐敗,最終讓員工備受煎熬。簡而言之,糟糕的軟體就是糟糕的企業文化的縮影。

被劣質代碼“殘害”的這些年

Bug 是軟體工程中不可避免的存在,但是如果 Bug 一直存在下去,那就是危險的信号,它會産生連鎖反應。由于沒有動力和缺少獎勵,情況會變得更糟,在一切以傳遞為首要目标的情況下,鮮有人會對軟體進行改進或在其中增加新的特性。它變成了一個沒人敢碰的、失控的爛攤子,後患無窮。

如何改善劣質軟體?

如何将糟糕的軟體變成優秀的軟體?這是個棘手的問題。我雖然不是專家,但我也願意在這裡與讀者分享我的觀點。首先,它變得如此糟糕,很大程度上說明了該組織的文化也出現了嚴重問題。改變文化比改變代碼要難得多。文化是一個組織的支柱,即使有望改善它,也要面臨很大的阻力,因為已經投入的資源是一個更大的問題,預防勝于治療。

關于這個主題的文章不多。也許這個行業發展得太快了,以至于人們都來不及進行反思,或者與其把精力浪費在寫作上,不如去解決其他緊迫的問題。總有更多的東西被發明,更多的問題等待着我們去解決,更多的工具要開發,但投入一點時間反思将有助于整個行業的發展。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-03-31

本文作者:Ankit Singh

本文來自:“

InfoQ

”,了解相關資訊可以關注“

繼續閱讀