為什麼糟糕的軟體成功了
做為熱愛公平的軟體製造者,最難以接受的現狀之一,莫過於一款製作精良、設計優秀的軟體完全沒有用武之地。類似地,世界上嚴重被依賴的很多軟體卻是糟糕的——即使沒有完全的、不可否認的bug,也充斥著低劣的設計抉擇。這好像成為了有關軟體的、一種重要的讓人沮喪的事實。
到底什麼是糟糕的軟體?
成功的糟糕軟體(失敗的優秀軟體)的第一個也是最重要的理由,在於我們無法就“糟糕”的意思達成一致。大部分人都認為,如果軟體宣稱備份你的電腦而不是隨意地破壞你的資料,明顯因成功備份而佔用了更多的儲存空間,卻不包含你的資料,那麼這種軟體就是“糟糕的”。但是在此假想情況與我們開發者稱之為糟糕軟體之間,存在著大量的中間立場。
- 如果軟體比較適合初級使用者、但是不利於擴充套件、修改或二次開發,那麼這是糟糕的嗎?
- 如果軟體的設計意圖非常準確、但是需要長時間的訓練才能變得有效率,那麼這是糟糕的嗎?
- 如果軟體執行良好,相對易於上手,但是在實際執行某些操作時,卻不應該地慢了很多很多,那麼這是糟糕的嗎?
- 如果它能夠完成工作,但是真的看著很醜,該怎麼說?
- 完成了95%的工作或時間,然後不幸死掉了,因為當機而花掉剩下的5%的時間,該怎麼說?
人們不認同讓它成為糟糕的標籤,糟糕的軟體比你預期的這種標籤做得要好,因為所有這些例子都被理智地歸入了“糟糕軟體”之列,所以它比其中的原因之一要清晰些。如果你認為一款軟體因其GUI難看而被視作糟糕的,那麼當一款軟體在它的設計功能上出問題時,我想它就是糟糕的,我們很可能在業務依賴的老款Swing(Java)工具包上存在分歧。
當糟糕軟體是優秀的時候
理解上的衝突是關於糟糕軟體成功的原因核心所在。商人優先考慮的事情和開發人員極有可能不同。終端使用者優先考慮的事情,與商業主和開發者也可能不同。一個人認為好的東西,另一個人認為一般般,甚至認為是“非常痛苦的”。這就是問題的核心。
大多數剛接觸WordPress的開發者都厭惡它。作為一個開發平臺,充其量有點兒新奇。它的程式碼是很久以前寫的,十年前的一些不平凡的設計決策,到了今天仍然是健壯的。但是,由於該平臺優先考慮的事情是使用者便利性和持續性,它仍然執行在帶有PHP5.2的、陳舊的共享主機賬號上(它甚至好多年沒有安全方面的釋出了)。所有過去的模板和擴充套件(在WordPress,其術語是主題、外掛)仍然良好地執行在最新的版本里。
你可以不認同WordPress團隊關於他們優先考慮的事情,你可以認為他們的軟體只是不可挽回地、糟糕至極,但是你真的不能無視一個事實,那就是它仍然被相當數量(貌似還在增長)的使用者使用,他們覺得它簡單、舒服和強大。
為什麼糟糕的軟體沒有隨處可見
基本上,“糟糕”軟體繁殖的主要驅動力在於,有著不同優先目的的人們所做的決定,在影響著軟體開發的最後產品或購買程式。通常,這些組合,和目標以及成功的定義沒有多大關係。
擺脫糟糕軟體的辦法在所有層面都是深度相關的,取決於所有的利益相關人,既定軟體要完成什麼、它使誰受益、以及軟體的“優秀”版本應該是什麼。當它達到那個版本時,每個人最終認為它是優秀的,而不僅僅是實現了最重要的、最有權勢的利益相關人的版本。
基本上,清晰地、良好測試的、文件齊備的、明辨可懂的程式碼,僅僅和開發者相關。對於業務人員,它能否提供價值、以及幫助賺錢才是重要的。對於管理人員,成功通常是執行時間上的五個9(99.999%)。對於終端使用者,最重要的卻是容易和開心。但是這些利益相關人的每個目標,很容易與其他人在不可避免的優先權爭奪中發生轉移。
對於所有利益相關人而言,製作優秀軟體是一種政治平衡,更像是軟體藝術、敏捷實踐、TDD或任何其它東東的問題。在一個軟體團隊調整每個人的願景和工作,和在任何其他團隊一樣有難度。在所有利益相關人的願景根據他們的目標、優先考慮的事情和成功的條件做出調整之前,有人常常覺得他們被迫地與“糟糕的”軟體打交道。
原文:http://pressupinc.com/blog/2014/12/bad-software-succeeds/ 翻譯:labazhou
相關文章
- 為什麼拙劣的軟體也會成功?
- 軟體工程--為什麼軟體開發方法論讓你覺得糟糕軟體工程
- 為什麼軟體開發方法論讓你覺得糟糕
- 淺析--為什麼軟體開發方法論讓你覺得糟糕?
- 為什麼軟體外包不再“起作用”了
- 為什麼Joel不談軟體了?
- 為什麼糟糕的開發者更有成效
- 為什麼軟體會被稱為“軟體”
- [樂譯 第11期] 為什麼軟體開發方法論讓你覺得糟糕?
- 為什麼糟糕的科學程式碼戰勝了遵循“最佳實踐”的程式碼
- 為什麼說玩家是糟糕的遊戲使用者?遊戲
- 讀 why Software Development Methodologies Suck?為什麼軟體開發方法論讓你覺得糟糕?dev
- Linux為什麼能成功?Linux
- 為什麼軟體測試外包更好?
- 客戶成功管理用什麼專案管理軟體好?專案管理
- 為什麼Go是一種設計糟糕的程式語言Go
- 為什麼說php是最糟糕的,也是最好的程式語言PHP
- 為什麼Laravel會成為最成功的PHP框架LaravelPHP框架
- 為什麼 Laravel 會成為最成功的 PHP 框架?LaravelPHP框架
- Qualtrics XM Institute:糟糕的體驗後會發生什麼
- 企業為什麼換掉用了4年的FTP?檔案傳輸軟體怎麼了FTP
- 軟體專案管理實踐:專案成功的關鍵是什麼?專案管理
- 為什麼推薦好用的企業CRM軟體?
- 為什麼使用遊戲音訊中介軟體?遊戲音訊
- 為什麼軟體測試需要變革?
- 為什麼軟體外包開發不再可行
- 海外爆火的體育遊戲《網球傳說》,為什麼它能成功?遊戲
- 為什麼你的敏捷總是不成功?敏捷
- 為什麼PostgreSQL是最成功的資料庫?SQL資料庫
- CRM為什麼慢慢成為企業必備軟體?
- 中國軟體――為什麼傷心的總是我 (轉)
- 譯文 | 為什麼軟體架構如此重要?架構
- 為什麼我們仍在談論軟體整合?
- 為什麼學校應該使用自由軟體
- ERP軟體為什麼水土不服?(轉)
- 什麼是好的軟體
- MongoDB 如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體
- MongoDB如何使用記憶體?為什麼記憶體滿了?MongoDB記憶體