淺談軟件設計人員應具備的基本能力
設計的好壞,直接影響到后續的開發,這個我們都知道,我也深有體會。我自己也試著做一些東西,但都因為設計不合理,做不下去。有些功能雖然能實現,但運行速度很慢,我的一位同事,寫的SQL語句,運行頁面要花3個小時。這樣的程序能交給用戶?所以一個有經驗的設計者,做設計時也會考慮到效率的問題。
在這里只談一下自己想法,軟件設計人員應具備的基本能力。
先看一幅圖片:

每次談到溝通問題我都會想到這幅圖片,知道溝通有多么重要。
這就是設計人員要具備的基本能力之一:溝通。
溝通貫穿于軟件的整個生命周期中。從需求分析開始,溝通就開始發揮它的重要性了,這里要注意不同對象要采用不同的語言,用戶并非像我們一樣明白我們的專業術語,這就要我們采用自然語言進行溝通,避免在理解上產生偏差。有時用戶滔滔不絕的描述了一大堆,可能并不是我們想要的,這時就要我們設計人員盡力引導用戶,將我們要了解的都弄清楚,以免以后引起不必要的變更。在聆聽用戶闡述時,設計人員需將所有的功能點羅列出來,注意不要遺漏。
設計人員要具備的基本能力之二:尊重事實,客觀理解需求。
用戶只會告訴我們他想要什么,不會告訴我們怎么去做。因此,設計人員要將用戶需求進行分析、歸納和整理。在這里設計人員都實事求是,不能夸大,也不能縮小,要這樣做的目的就是:“讓用戶花錢,買一件稱心如意的商品”。如果用戶給出的需求是模糊或不合理的,設計人員就要幫助用戶進行分析,告訴用戶不合理的原因等,并建議用戶采取何種方案,重新確認需求。
設計人員要具備的基本能力之三:編寫文檔。
文檔也是軟件產品,沒有文檔的軟件,不稱其為軟件。
從用戶那里收集需求時,可能是每一個業務人員都只跟你描述他所知道的那一部分業務流程和需求,在文檔里,我們需要把每個人的描述都記錄下來,然后再綜合整理成一個完整的業務流程和需求文檔。很多在腦海中似是而非的內容也會在文檔化的過程被加以細化和規范化。
有人會認為需求都明白了,不寫設計文檔,也能做出程序,這樣理解就錯了,這樣就可能引起本文開頭所說的那些問題了。文檔是一種幫助我們整理自己思路的工具。許多問題只有在你要落筆記錄下來時,才會更加仔細地考慮其完善性。比如說我參與的一項目,項目組討論并定下了數據庫所用到的表和字段等,但當我寫文檔時,卻發現了不少問題,多余表、字段及表連接問題等等。想更清楚表達軟件設計的各個方面,可以通過UML來提高文檔的質量。
設計人員要具備的基本能力之四:設計應以用戶為出發點。
這是我讀《設計心理學》(唐納德.A.諾曼著)一書后的最深體會。我感覺這應該是設計的最高境界,如果這里做好了,就差不多達到我們常說的“真-善-美”了。我把這點列到基本能力中,是因為我們做設計時,要有這種思想,要體會用戶的心理。盡管我們做不到最好,但是我們考慮到這一點了。如果只單純的實現功能,用戶使用產品時,找不到北,全是用戶的錯嗎?
設計人員要抓住用戶的心理,確保:1、用戶能夠弄明白操作的方法2、用戶能夠看出系統的工作狀態。假想一下:如果用戶沒弄明白操作方法,操作失誤,你的產品從此變成垃圾,即使用戶說“唉,是我笨。”,用戶想再買你的產品的機率有多大呢?設計人員是制造商,目的是讓我們的產品能夠更好的推廣,用戶才是最終的體驗者,只有當用戶說這個產品好,那才是真的好。
設計產品的質量高低歸結于不倦的嘗試。在不斷的嘗試中總結經驗,對設計人員來說,經驗是非常重要的。設計人員要具備以上基本能力,再通過實踐總結發現并學習其它能力,不斷積累,不斷進步。