在思想上兜了一圈,我決定要還是落地走走,否則就可能變成一張大嘴而已。
接下來要給大家講解的是我的第一個大項目—X市動力機房監控,在這個項目中我從一個畢業產生長為單位的開發骨幹。由於不記得當初的技術保密協議到底是5年還是10年,所以出於職業精神,我還是不能把所有項目背景和設計進行介紹,抽取我認為沒有機密性但是比較有意思的部分來解析一番,所以肯定有人會說,你說的複雜項目是否太簡單了,應該也不足為奇。但是事實上我們當初是三個單位聯合開發,驗收時花費7人*6個月,事情總是比我們想象的複雜。
當初的項目使用C,C++開發了底層,PowerBuilder開發了上層應用。這麼多年,我當然記不得那些程式,但是C#還是足夠強大,我將儘力使用1~2周把一個架構給再現出來,這下不是因為公司業務而加班了,而是”自討苦吃、苦中作樂”。為了避免今後的官司麻煩,請理解我不能把全部代碼放到網上,不過關鍵區段我還是會在文章裡使用代碼來輔助敘述我的思路。
以下是我的大致目標和提交順序:
1) 項目的目的和需求概括,明確要講解分析的範圍;
2) 我想到的設計
3) 關鍵技術儲備
4) 主體實現和介面示意
5) 點評與總結
今後有興趣的朋友可以聯絡我們團隊進行實戰開發,我這裡有幾個不錯的項目機會。
其實現在我進行開發的速度肯定比網上很多朋友要慢的,但是我的開發將遵循一些原則,瞭解這些原則有助於你理解我的思路。本次解析可能沒有涉及到一些原則,畢竟還是個提取後的小項目而已。
我目前總結的八大原則如下:
1) 想方設法把客戶拉進項目組
這個大家都明白,可是大家都很難做到!CMMI、XP也解決不了,靠自己的智慧吧,要知道,是人就有愛好,有愛好就有機可乘:是財是色,自己看著辦吧!
2) 建設自適應的團隊
你的團隊是否嚴重依賴某個人呢?是否每個人都關注項目的苦難?遇到問題大家都認真提供對策。面對責任是否敢於承擔,還是推給他人?
3) 始終保持目標
專案經理是否獨自關起門填寫專案計劃並且分配活動(其他人都網上衝浪去了)?是否每個人只知道要幹什麼而不理解為什麼要幹?
4) 風險驅動、反覆式開發法、組件開發、測試驅動
這個不用說,大把資料,參考RUP就很多了。
5) 簡單的角色分工
蜜蜂螞蟻應該遠遠不及人的聰明,但是他們可以出色完成一次次的”項目”?他們有一個超級PM嗎?我看沒有!一個人能指揮社會如何運作嗎?不能!但是這社會不會因為某個人而停止運轉。
6) 開啟黑盒,保證資訊一致
你是如何確保你提交的代碼是有品質的呢?拍胸脯嗎?你的證明材料在哪裡?
你如何讓領導和客戶相信你的工作量真的大於30人月?如何讓他們認同你現在確實完成了90%,並且進展良好?否則和你糾纏的不光是客戶,你還要花很多時間對付公司內那些疑惑的目光(來自老總、財務、其他專案經理等)!
7) 一有機會就重構
這個不用說,參見那本好書
8) 為提速做好準備
你能保證在同一個問題上你或者你今後的同事不要重複第二次嗎?
好了,我的下一個目標是什嗎?我看看,對了,應該是要準備下一篇:<<項目的目的和需求概括>>。