為什麼糟糕的軟體成功了

labazhou發表於2014-12-15

  做為熱愛公平的軟體製造者,最難以接受的現狀之一,莫過於一款製作精良、設計優秀的軟體完全沒有用武之地。類似地,世界上嚴重被依賴的很多軟體卻是糟糕的——即使沒有完全的、不可否認的bug,也充斥著低劣的設計抉擇。這好像成為了有關軟體的、一種重要的讓人沮喪的事實。

  到底什麼是糟糕的軟體?

  成功的糟糕軟體(失敗的優秀軟體)的第一個也是最重要的理由,在於我們無法就“糟糕”的意思達成一致。大部分人都認為,如果軟體宣稱備份你的電腦而不是隨意地破壞你的資料,明顯因成功備份而佔用了更多的儲存空間,卻不包含你的資料,那麼這種軟體就是“糟糕的”。但是在此假想情況與我們開發者稱之為糟糕軟體之間,存在著大量的中間立場。

  • 如果軟體比較適合初級使用者、但是不利於擴充套件、修改或二次開發,那麼這是糟糕的嗎?
  • 如果軟體的設計意圖非常準確、但是需要長時間的訓練才能變得有效率,那麼這是糟糕的嗎?
  • 如果軟體執行良好,相對易於上手,但是在實際執行某些操作時,卻不應該地慢了很多很多,那麼這是糟糕的嗎?
  • 如果它能夠完成工作,但是真的看著很醜,該怎麼說?
  • 完成了95%的工作或時間,然後不幸死掉了,因為當機而花掉剩下的5%的時間,該怎麼說?

  人們不認同讓它成為糟糕的標籤,糟糕的軟體比你預期的這種標籤做得要好,因為所有這些例子都被理智地歸入了“糟糕軟體”之列,所以它比其中的原因之一要清晰些。如果你認為一款軟體因其GUI難看而被視作糟糕的,那麼當一款軟體在它的設計功能上出問題時,我想它就是糟糕的,我們很可能在業務依賴的老款Swing(Java)工具包上存在分歧。

  當糟糕軟體是優秀的時候

  理解上的衝突是關於糟糕軟體成功的原因核心所在。商人優先考慮的事情和開發人員極有可能不同。終端使用者優先考慮的事情,與商業主和開發者也可能不同。一個人認為好的東西,另一個人認為一般般,甚至認為是“非常痛苦的”。這就是問題的核心。

wordpress-糟糕的軟體

  大多數剛接觸WordPress的開發者都厭惡它。作為一個開發平臺,充其量有點兒新奇。它的程式碼是很久以前寫的,十年前的一些不平凡的設計決策,到了今天仍然是健壯的。但是,由於該平臺優先考慮的事情是使用者便利性和持續性,它仍然執行在帶有PHP5.2的、陳舊的共享主機賬號上(它甚至好多年沒有安全方面的釋出了)。所有過去的模板和擴充套件(在WordPress,其術語是主題、外掛)仍然良好地執行在最新的版本里。

  你可以不認同WordPress團隊關於他們優先考慮的事情,你可以認為他們的軟體只是不可挽回地、糟糕至極,但是你真的不能無視一個事實,那就是它仍然被相當數量(貌似還在增長)的使用者使用,他們覺得它簡單、舒服和強大。

  為什麼糟糕的軟體沒有隨處可見

  基本上,“糟糕”軟體繁殖的主要驅動力在於,有著不同優先目的的人們所做的決定,在影響著軟體開發的最後產品或購買程式。通常,這些組合,和目標以及成功的定義沒有多大關係。

  擺脫糟糕軟體的辦法在所有層面都是深度相關的,取決於所有的利益相關人,既定軟體要完成什麼、它使誰受益、以及軟體的“優秀”版本應該是什麼。當它達到那個版本時,每個人最終認為它是優秀的,而不僅僅是實現了最重要的、最有權勢的利益相關人的版本。

  基本上,清晰地、良好測試的、文件齊備的、明辨可懂的程式碼,僅僅和開發者相關。對於業務人員,它能否提供價值、以及幫助賺錢才是重要的。對於管理人員,成功通常是執行時間上的五個9(99.999%)。對於終端使用者,最重要的卻是容易和開心。但是這些利益相關人的每個目標,很容易與其他人在不可避免的優先權爭奪中發生轉移。

  對於所有利益相關人而言,製作優秀軟體是一種政治平衡,更像是軟體藝術、敏捷實踐、TDD或任何其它東東的問題。在一個軟體團隊調整每個人的願景和工作,和在任何其他團隊一樣有難度。在所有利益相關人的願景根據他們的目標、優先考慮的事情和成功的條件做出調整之前,有人常常覺得他們被迫地與“糟糕的”軟體打交道。

  原文:http://pressupinc.com/blog/2014/12/bad-software-succeeds/ 翻譯:labazhou

相關文章