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