我曾經去給OSCHINA做過一期有關“軟體工程實踐”的有獎高手問答 (獎是給提問者的,哈哈),現在來看,許多問題仍然可讀之處,因此整理成文字,以為眾賞。
原貼在這裡:http://www.oschina.net/question/12_78459
本篇的問題:小作坊如何實施所謂的軟體工程?
答:
作坊式的,小公司,或需求變化太頻繁等等,都不是不做軟體工程的理由。往往的,我們一談工程就“很大”,“很學術”,或者看起來談種種“敏捷”,但實際去做的時候就成了條條框框。大家在第一認識上要知道,大多數實踐中談及的“工程”,都是工程方法而已。
既是方法,也就需要因事、因人而宜。無論某種工程方法打著怎樣的旗號,說怎樣漂亮的話,給你展示怎樣的資料,落到你的“具體工程”的實處,都是要調適的。具體來說,要先看人,先培訓整體一致的工程認識;然後再規劃事,形成較簡潔適用的過程方法,以及核查的機制。有了這兩點作為底子,工程才可能從0到1,走過“沒有工程”的階段。
一個團隊總是要從小到大的,如果在小規模的時候都沒有工程素質,那到大規模的時候來補,也是很痛苦的。同樣的,個體開發人員也是如此,不對自己加以職業化的要求,換公司換團隊換做法的時候,也是很痛苦的。因此在這個問題上,我認為個人培養與團隊培養一樣重要,知道有些事在哪種情況下要做、該做,以及該做到何種程度,對一些問題有著基本的、工程化的認識,是每個程式員應有的素質。如果你的團隊達不到這一點,那麼,請培訓他們。我建議培訓要自己來做,既是讓自己認識清楚,也是瞭解大家的一個過程。
最後再說到細節,即是“如何做”的問題。這方面我很久以前就有公開的資料了,請至如下地址:
http://126.am/uP5wo0
下載Chapter2,有兩個part。這個實戰過程講了一個兩個人的團隊,一個完整的項目過程,以及將它工程化的全程。我不是說這個樣本就做得很好很完美,我只建議大家關注這件事的做法:我們應該這樣來因事因人(亦即是因項目、因團隊)地“定製”我們的工程方法。