個人軟件過程 1
提到軟件過程,大家首先會想到"傳統(tǒng)的瀑布模型",當然,這個通常作為反面例子,來襯托各家的過程如何實用、先進。然后是CMMI、Rup這些重量級的軟件過程,然后是Xp、Scrum這類敏捷過程。嗯,無論是哪一種軟件過程,一般公司有實施過的,程序員常常會聯(lián)想到兩個字:痛苦。
是的,痛苦。漫長的培訓、沒有必要最后也沒人看的文檔,當然即使是XP的捉對編程也會令一些人感到私人空間收到侵犯,而單元測試這種一部分人尋找快樂的方法,也往往會讓另一部分人感到繁瑣。
通常叫囂要建立良好的軟件過程的人,是公司里的技術(shù)權(quán)威,或者準權(quán)威。通常這種叫囂的結(jié)果,是所有人的無奈,和叫囂者最后的頹敗。
所以姑且不論大公司,我所見過的中小企業(yè),即使通過CMM幾級認證之類的,往往也是掛羊頭賣狗肉。為認證而認證,真正的軟件過程仍然是稀爛到不能再稀爛的程度。今天想起來應(yīng)該這樣,強調(diào)一陣子,明天想起來應(yīng)該那樣,再強調(diào)一陣子。強調(diào)來強調(diào)去,隨著人員頻繁的進出,最后往往是我們每天在努力,然后我們每天都很稀爛。
這也許和中國人的特質(zhì)有關(guān),工作如何令人快樂?良好的過程如何長期保持?
西方人的經(jīng)驗未必有多少借鑒意義。
很簡單,在西方,程序員是高薪行業(yè),也是能工作到退休的行業(yè)。而在中國,程序員多數(shù)是以民工狀態(tài)生存的,同時是一碗青春飯。西方尚學尚能,中國唯尚官,在南為橘,在北為枳,大體就是這個道理。哦,那些每月拿到數(shù)萬元高薪的家伙,沒有說你,一邊去吧,這里講的東西不適合你。
我長期掙扎在一群程序員中間,維持一間十來人的小型公司多年,慢慢實踐的結(jié)果,覺得對中國人,必須有針對中國人的軟件過程。這不是民族主義,我也不憤青;這也不是獨樹一幟,我采納的也都是各類軟件過程中一般的實踐。針對和地球主流不同的人群,中國程序員,當然要有和主流不一樣的方法。
首要的原則,是簡單,次要的原則,是堅持。當然,不簡單的東西若要堅持,往往也是天方夜譚。
我想,多數(shù)有一定年頭的程序員面臨的問題,往往是需求怎么采集、怎樣將需求劃分為開發(fā)任務(wù)、如何設(shè)計數(shù)據(jù)庫、如何做類設(shè)計、怎樣保證質(zhì)量、怎樣管理源代碼和項目資料、怎樣監(jiān)控進度、怎樣權(quán)衡進度和工作量的關(guān)系、如何判斷哪些程序員貢獻度最大、怎樣積累開發(fā)知識、團隊整體水平很差的時候怎么辦?
我最后形成的方法,或者是開發(fā)習慣,基本上一一對應(yīng)的解決這些問題。
從方法論來說,我們必須先知道為什么這樣做,才會這么做。因此,有幾項基本的立論:
1、每個人都是懶惰的,勤快是因為有所圖:比如需要賺錢養(yǎng)活自己、擔心丟失工作、在團隊中擔心沒有面子、希望將來能夠賺更多錢,這些都是能夠勤快點常見理由。
2、中國是沒有高手的:嗯,看看操作系統(tǒng)、數(shù)據(jù)庫、開發(fā)環(huán)境、主要的優(yōu)秀產(chǎn)品、最強的公司,這些是不是在中國,看結(jié)果就知道。
3、人的能力是有差異的:雖然整體是中國軟件處于地球上的食物鏈低端,但具體的個體之間還是有強有弱的。
4、每個人都喜歡聽到夸獎的話,不喜歡被批評。
5、模仿是最好的學習方法:這個,我們知道英語折磨了很多大學生,學習十年后不會說話的比比皆是,卻很少聽說哪個小孩因為智商問題學不會說漢語,雖然漢語看起來似乎更難一些。
6、最重要的:如果人的勞動不能帶來有尊嚴的生活,不要指望任何方法可以讓這個人為你拼命工作。這一點是所謂軟件過程能夠?qū)嵤┑那疤幔僭O(shè)你準備開一間黑心工廠,或者你準備利用廉價到甚至難以應(yīng)付生存的勞動力賺錢,任何所謂的管理、架構(gòu)之類的藥物都不用吃,注定沒有效果的。
所謂最簡化的軟件過程,大體上從這么六點出發(fā)。在公司層面來說,公司的技術(shù)負責人、項目經(jīng)理可能需要真正實用、可操作性強、可持續(xù)的團隊項目管理方法;在程序員個人層面來說,形成良好的工作習慣,讓自己更有效率乃至今后逐步勝任團隊的管理,這些知識也是必須掌握的。
所以,這里會是一本薄薄的書,從現(xiàn)在開始我會結(jié)合一個實際項目,“徹底完成”其中的數(shù)據(jù)導入功能,逐步的講解,自己個人的編程習慣、團隊協(xié)作最簡易的方式,包括采集和記錄需求、規(guī)劃用戶體驗、列出開發(fā)任務(wù)、估算所需時間、類設(shè)計、數(shù)據(jù)庫設(shè)計、管理bug、版本控制、知識庫等各方面。
也希望牢記一個原則,你做的軟件產(chǎn)品,只要多按一個鍵,意味著客戶永遠不會用,這種簡單性,既對軟件產(chǎn)品的用戶來說是必需的,對程序員而言也是這樣:多一分復雜,就不要指望每個人都守規(guī)矩。

浙公網(wǎng)安備 33010602011771號