如何開發用戶需要的軟件。

       我向來不是一個惟技術論者,可能也是因爲我的技術不夠好。《軟件創新之路》、《軟件工藝》告訴我們軟件開發最終的目的是什麼:爲用戶建造真正令他們滿意的軟件產品。一個軟件從業者的信用建立於持續爲用戶建造令他們滿意的軟件產品的履歷。
學技術有兩個方向,求廣和求深。求廣就是學習更多新的技術,求深就是儘量在現在掌握的技術中尋求答案。從求廣的角度,我認爲我們很多時候並不需要更多的新技術才能達到上述的目標。從求深的角度,我認爲我們確實需要更多的技術,我們需要對現有技術更加深入的掌握。

要建造真正令用戶滿意的軟件,就要了解清楚用戶真正在關心什麼。下面我按照一般情況下用戶關注的優先級排了序:
1、真正實現了用戶的業務需求,而不是錯誤地實現了業務需求。用戶得到了他們真正想要的東西。當然用戶真正想要的東西並不一定就是他最初告訴你他想要的東西。你要想辦法去理解他的思路、理解他的思考方式(最好能和他交上朋友)以瞭解他真正想要但沒有表達出來的東西,也許你可以很輕易地爲他提供比他的期望更多的東西,爲什麼不去做呢?如果你做到了,你將獲得人際關係方面的巨大成功,有一天他可能都離不開你了。
2、界面的美感,包括界面的佈局、配色、漂亮的圖片、按鈕。這個很多時候超出了我們作爲程序員的能力限制。當然,美工能夠幫助我們。但是美工不是我們的救世主,我們有能力做好的還是應該盡力作好的。
3、系統的易用性,要從一個普通用戶的角度去思考系統如何被使用,而不是作爲一個程序員來思考。要想盡一切辦法來改善產品的易用性,要讓用戶的生活更加輕鬆而不是體驗到艱苦和挫折。
4、系統的性能,如果一個頁面刷新需要十幾秒種,毫無疑問用戶是不會認爲你建造了一個成功的軟件的。爲了改善性能,甚至你需要寫大量“邪惡”的存儲過程,只要能令用戶滿意,管他某大師如何說呢。
5、系統的穩定性,三天兩頭出故障的系統肯定是不能令用戶滿意的。而且你也要不斷去救火不是?這些工作對你來說難道是有很多回報的嗎?
6、系統的安全性,容易被攻破的系統用戶是不會滿意的。
7、系統的可擴展性(scalability),能夠保護用戶的投資,平滑過渡到將來更大規模的 IT 方案。

        這幾點做好了,就完全可以說就是一個成功的軟件了。我對成功軟件的界定就是令用戶滿意的可以良好運行的軟件。這些標準很容易達到嗎?不是那麼容易吧?
軟件的質量分爲外部質量和內部質量,程序員往往只關注軟件的內部質量,而忽略了很多軟件的外部質量。這幾點基本上就是我所理解的用戶所關心的軟件的外部質量。
至於你用什麼技術,Java、Python、C# 都無關緊要,你是否用了很時髦的設計模式、AOP、MDA、IoC、TDD 同樣也是無關緊要的,因爲這些用戶都看不到。那麼你是否需要明天就爲這些用戶看不到的東西投入 sink lost 呢?還是可以慢慢來,先把手頭的急活幹完呢?我要是明天不把用戶提出的這個問題解決掉就會有麻煩了,而我明天不懂 AOP 卻沒什麼要緊。
我喜歡 KISS。傻並不是我的錯,雖然我懂的很少,但是我卻每天都在做事情。我喜歡當一個做事情的人,而不是當一個做學問的人。你懂的很多,寫寫文章還可以,但是你從來不爲用戶建造令他們滿意的軟件產品,因爲那些都是髒活累活。“我可比他們光鮮的多啊”,你常常這樣想。但是我敢說未來是我的而不是你的。呵呵,不出所料,你不信,你憤怒了。那我們走着瞧吧。Mono 1.0 出來了,不過才兩三年時間,這些源代碼難道都是靠理論堆出來的嗎?

       有一本書《面向使用的軟件設計》(Software For Use)可能是最接近我的想法的書了,有空了找來讀讀。還見過幾本人機界面設計的書,挑一本經典的讀一讀。Alan Cooper 的書國內只出了一本,實在是很可惜啊。
發佈了29 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章