雖然軟體工程的思想已被絕大部分程式設計師所接受,但要將這種思想轉化為軟體開發過程中的種種自覺行為卻不是一件很容易的事。究其原因,有很多因素,如很多程式設計師缺乏專業化的訓練,重技巧,輕規範,包括一些計算機專業科班出身的程式設計師也存在這種問題;再如很多公司只注重軟體產品的開發結果,不注重開發過程,客觀上也影響了程式設計師的目標取向。如此種種,使很多中國的軟體公司難以邁上乙個新的台階,發展壯大也就無從談起。程式設計師們作為軟體產品的創造者,當然也難辭其咎。
下面所列不過是產品開發過程中諸多問題中的其中幾個,也許你不會犯這樣的錯,我還是引用一句老話:「有則改之,無則加勉」。
一宗罪:以偏概全
大家都知道,在對一種產品決定立項開發前,都需要進行產品開發的可行性進行分析,而其中的市場分析至關重要,其實市場分析無外乎三點,一是要開發的產品是有市場需求的,二是公司有能力獲取這份市場,三是公司能從產品中獲益(不一定是指賺錢,如公司戰略利益等)。看似簡單的幾點,想要完全弄清楚決非易事,所以很多產品的市場分析容易「以偏概全」,如通過個別使用者的特定要求或報刊雜誌的片面報道將產品市場無限擴大(分析人員自己想象的),技術驅動而忽略使用者需求和成本(如銥星計畫)等,至使產品開發完後沒有預期的市場效果。想要全面而準確地的進行產品的市場分析確實是很不容易,需要平時的積累和理性的分析思考,不能靠撞大運。
二宗罪:畫貓成虎
大家也許有這樣的經歷,產品開發完畢交付使用者使用後,使用者總是不滿意,如不符合他們的使用習慣,功能設定不合理等。所以產品的需求分析是如此重要,沒有正確的需求,軟體開發得再好,技術再先進,也不過是當擺設的花瓶。程式設計師們,尤其是系統分析員容易犯的第二宗罪就是「畫貓成虎」,曲解了使用者的要求。乙份好的需求分析不是簡單地將使用者的每個具體的需求點記錄下來,而是要洞察使用者每個具體要求背後的動機,將分散的需求點串成乙個有機的整體,基於需求並「超越需求」。乙個好的系統分析員不僅是一位軟體專家,還要是乙個出色的領域知識專家和溝通者。
三宗罪:好大喜功
專案延期好象是軟體開發乙個必經的步驟。專案經理在制定開發計畫時,往往過於樂觀,每個開發階段都按最樂觀的估計來計算開發時間,而沒有充分考慮到軟體開發的特殊性和不可預見性,程式設計師可能都有這樣的經歷,乙個非常小的bug可能要耽誤很長的時間,使開發進行不下去。所以專案經理切忌「好大喜功」,因為專案的不斷延期會打擊專案成員的信心和士氣,久而久之,會使大家產生一種慣性:專案延期是正常的。當然,這也不能完全怪罪專案經理們,因為在國內,很多專案計畫都是採用倒排序的方法,即先確定產品交付的時間表,再依次倒推測試、實現、設計和分析所需的時間,而整個開發的時間往往是那些從沒實際開發過產品的領導來拍腦袋決定的。
四宗罪:只顧眼前
即便是最優秀的系統分析員也不能保證所提供的軟體系統需求不會變化,所以軟體設計人員要充分考慮這一點,不能僅僅"只顧眼前"的需求,還要有一定的前瞻性,滿足可預見的未來需求,軟體系統的可擴充套件性和可維護性對於乙個大型、複雜、長生命週期的軟體系統來說至關重要。打個比方理解一下軟體的可擴充套件性,給乙個10歲的孩子做一條褲子(需求),你不能將褲子的長度裁減得剛剛與孩子的身高合適(設計/實現),因為孩子長身體很快,到他11歲時褲子已經短了(需求變化),有兩種方法解決,一是將短了的褲子丟棄,重做一條(重新開發系統),但成本很高;二是將在褲腿上接上一段接著穿,但不美觀且不宜操作(維護成本高)。而最恰當的做法是將褲子裁減得稍長過現在的要求,將長的部分反縫在褲腿裡,等孩子長高後,拆線將原來長的部分放下一點就可以了(擴充套件方便),既方便又不失美觀。可見,可擴充套件性並非軟體系統專利,裁縫們早已理解了這一點並付與實踐。
五宗罪:得過且過
軟體設計需要通過軟體實現成為最終的產品,優秀的設計需要靠一行一行的**體現,而有些程式設計師對軟體實現的態度是,最小滿足原則,「得過且過」,對於系統的容錯性,安全性,效率考慮甚少,滿足基本功能即可,沒有持續改進的態度和精神。
六宗罪:自我安慰
產品實現是否達到設計要求在公司內部需要測試驗證,嚴格的測試對於保證軟體產品的質量是必須的,而出於時間、資金等緣故,很多軟體產品並沒有經過嚴格的測試就已交付給使用者使用,程式設計師們總是善於"自我安慰":應該沒問題吧。"想當然"不能消除缺陷,只有測試再測試才是科學的精神。
七宗罪:敝帚自珍
技術總是向前發展的,不要過於「敝帚自珍」,抱著原有的東西不肯放棄,軟體產品也有生命週期,該終結時要毫不猶豫。
程式設計師的七宗 罪
雖然軟體工程的思想已被絕大部分程式設計師所接受,但要將這種思想轉化為軟體開發過程中的種種自覺行為卻不是一件很容易的事。究其原因,有很多因素,如很多程式設計師缺乏專業化的訓練,重技巧,輕規範,包括一些計算機專業科班出身的程式設計師也存在這種問題 再如很多公司只注重軟體產品的開發結果,不注重開發過程,客...
七宗罪與程式設計師
很多年前,看過一部印象很深的電影 七宗罪 佛家說人要克服 貪 嗔 痴 天主教給人定了七宗罪 暴食 貪婪 懶惰 淫慾 嫉妒 驕傲 憤怒 在各行各業都有自己的原罪,程式設計師也不例外,做為軟體行業的基石,一方面是有太多的程式設計師在 30歲時轉成商務和市場,另一方面是成千上萬的學員擠破腦袋進入這個行業。...
被詛咒的程式設計師的七宗罪
七宗罪 seven deadly sins 13世紀道明會神父聖多瑪斯 阿奎納列舉出各種惡行的表現。這些惡行最初是由希臘神學修道士龐義伐草撰出8種損害個人靈性的惡行,分別是貪食 色慾 貪婪 暴怒 懶惰 傷悲 自負及傲慢。程式設計師生來不平等。有的偉大。有的渴望偉大。有的就是廢物。下面是一些程式設計師...