對于一個公正的軟件制造者,一個很難接受的事實就是——一些花費了很多心力去設計的精美軟件竟然會被棄之不用。相反,一些拙劣的軟件——粗糙的設計、遍布 bug 的代碼——卻大受歡迎。讓人心塞的是,這似乎已經成為了軟件行業的一個基本現狀。
怎么樣的才是拙劣的軟件?
這些拙劣的軟件之所以會成功的第一原因也是最重要的原因就是我們對于這個“拙劣”的定義并沒有達成共識。對那些聲稱可以備份計算機但是卻在隨機破壞存儲數據的軟件,以及表面上數據已經備份成功但實際上數據依然丟失的軟件,大家都會認同是“拙劣”的軟件,這是毋庸置疑的。但是,還是有很多處于中間地帶的軟件,該如何定義尚不能達成共識。比方說,對于下面這些軟件,你是怎么看的?
如果一個軟件,基礎用戶使用的時候工作良好,但要當需要擴展、改變或者再次開發就特別麻煩?如果一個軟件,用戶服務目的明確,但是需要經過長時間的培訓之后,用戶才能高效使用它?如果一個軟件,工作原理不錯,了解起來也比較直觀,但是執行預期操作的時候要命的慢?如果一個軟件,雖然能工作,但是界面實在是丑陋不堪?或者這個軟件 95% 的時間能正常工作然后剩下的時候就會系統崩潰并死機?上面這些例子就足以說明我們對于軟件的“拙劣”是有分歧的。比如說,你覺得用戶界面丑就說明軟件不好,但是我覺得那些不能實現預先功能的軟件才是拙劣的。所以如果拿出來一個企業依賴度非常高的 Swing(Java)應用,我們之間的看法可能就會截然不同。
當拙劣的軟件貼上 GOOD 的標簽
知道了這個原因我們就能明白為什么拙劣的軟件也會成功了。企業人士側重的要點可能和開發人員的不同。而最終用戶的側重點又與企業和開發人員的不同。所以可能這一個認為“一級棒”,另一個則只是覺得“差強人意”,但是到了還有一個眼里就是“太爛了”。而這,就是問題的根源。
大多數開發人員第一次接觸 WordPress 的時候都會認為不好。作為一個開發平臺,充其量最多只能說有點標新立異。代碼是很久以前的老代碼,設計還是十年前的那個模樣。由于平臺著重于用戶的易用性和連貫性,到現在它依然運行在 PHP 5.2(已經好幾年沒有安全更新過了)上面,而且所有的舊模版和插件仍然可以在最新的版本上良好地運行。
我們可以認為 WordPress 這個軟件實在是差得不可救藥,但是卻不得不承認,它有大量的用戶(甚至還在不斷增加中),因為使用過 WordPress,用戶大多會被它的簡單舒適以及強大的功能所折服,大概就是俗話說的,誰用誰知道吧。
為什么拙劣的軟件也并不是萬能的?
從根本上來說,之所以這些“拙劣”的軟件也會收到歡迎,是因為不同結構層次的人他們的決策優先方向不一樣。
也就是說,整潔、測試良好、文檔記錄明確、易于理解的代碼是開發人員關注的重點;而企業只注重它是否能帶來價值是否能賺很多錢;至于管理員則希望軟件正常使用時間能達到 5 個9——99.999%;但是最終用戶關注的則是軟件是否討人喜歡是否易學易用。總而言之,這些利益相關者的目標雖然都很容易實現,但是卻會不可避免地發生碰撞。
制作軟件就像是平衡這些利益相關者之間的利益一樣,因為我們需要權衡軟件的制作工藝、敏捷實踐、TDD,以及其他很多很多問題。想讓每一個人滿意那是不可能的事情。哪怕甚至于所有的利益相關者的目標和關注重點等條件都一致,還是會有很多人覺得他們面對的是“拙劣”的軟件。