從程序員到項目組
作者:9pts 本文選自:WPMI
在互聯網的時代,軟件項目的成功更大程度上取決于項目小組中那個體的成熟度和能力,而非個別程序員的個人魅力。所以,如何從程序員準確定位到項目組就是一個非常重要的轉折點。
微軟的Windows徹底改變了用戶使用計算機的方式,此后,軟件業便進入了快速發展的黃金時期,并因此成為推動計算機網絡應用的最重要源動力。如今,在.com公司紛紛凋零之際,軟件業更加逆流而上,以致各發達國家競相將軟件工程提升到重點產業的戰略高度。作為軟件行業的最基本細胞,程序員也成為了當今最熱門的一種職業。
但最初的程序員,就像一個個斗士,更多的包含了個人英雄主義的色彩。他們在數字和字符中掙扎,在激流中順應變化,在曲折迂回中尋找出路,面對著太多的困苦與壓力:首先要耐得住個人奮斗的寂寞;其次,還要承受得住壓力,有查不完殺不凈的BUG在等待,有日新月異的技術在更新;再其次,更要承擔得起挫折。因為或許費盡心血開發出的產品一朝便成了垃圾,更或許走過多年才發現必須回到起點重新開始。這種種的困難全都渡過去,才能成就一個優秀的程序員。但整體而言,僅僅憑借幾個、幾十個,甚至幾百個數字英雄卻很難鑄造出一個強勁的產業。
實際中,大多數人都把軟件開發人員想當然地默認為程序員。的確,程序員這個原本默默無聞地在后臺辛勤耕耘的角色隨著計算機的發展空前重要起來。微軟的比爾·蓋茨成了無數程序員的夢想,但程序員并不代表軟件開發的全部,甚至可以說編寫代碼僅僅是軟件開發中相對簡單的一小部分。眾知周知,在近乎已成流水線的軟件產業發展中,依靠簡單的密集勞動或幾個數字英雄絕對不可能從真正意義上解決企業經營和管理上的問題,所以,要開發出成熟有效的產品,就必須要有一個強有力的團隊共同協作,在一個成熟嚴密的項目體制中,需要很多角色擔任不同的分工和責任。項目的成功系數更大程度上取決于團隊整體的成熟度和能力,而非個別程序員的個人魅力。
再看看國內市場,我國雖然在網絡門戶、電子商務的模仿、借鑒和推動方面絲毫不亞于西方發達國家,但是在軟件項目管理和專業人才的培養方面卻大大滯后。所以如何將一個個自由英雄更好、更有效地團結起來,組建出高效的開發小組,已成為越來越多管理者思考的重點。
本文將對程序員的個人定位與項目團隊的組成與發展進行簡要的分析,希望與大家共同探討。
軟件項目小組的角色分工
軟件項目小組大多是為實現一個特定目標而成立的團隊,規模大小根據目標而定,從2個人到十幾人甚至幾十人、幾百人不等,但通常都在20人以下。這樣的小組集合了不同方面的專業人員,幾乎每個做過開發的人員都會遇到以下的問題:
項目無法按期完成,完成以后還要不斷修補完善,象一場噩夢遙遙無期;
項目進行當中人員流失,產品夭折;
客戶需求不斷改變,永遠對開發完成的產品不滿意;
開發成員之間矛盾不斷,互相抱怨,工程進展緩慢;
小組成員分工不均,工作分配失去平衡等等; ……
為了避免噩夢的再次發生,也許下面的建議對您會有所啟發和幫助:
在項目小組成立的時候,一定要有個項目負責人,我們稱之為組長或項目經理。一個項目的成功與否,項目經理是最關鍵的因素,古人云:一將無能,累死千軍?芍^一針見血。
項目經理根據需求制定出開發的目標,并選擇最合適的人員組成項目小組。一個比較完整的項目小組可能由以下表1所列的角色組成,當然,有些角色是在項目小組成員比較少的情況下完全可能由一個人兼任,但并不意味著這些角色可以輕易地忽略:
角色性質 |
角色分工 |
項目管理人員 |
|
系統分析人員 |
|
商務分析人員 |
|
交互設計人員 |
|
數據庫工程師 |
|
程序開發人員 |
|
質量控制人員 |
|
技術支持人員 |
|
系統管理人員 |
|
輔助設計人員
|
|
(表1)
軟件開發無疑是人的智力結晶,所以選擇最適合的人員參與小組是項目經理最重要的工作。這里要注意的是選擇最合適的,而不一定是最優秀的或代價最昂貴的。
當小組人員落實的時候,開發前整個小組成員應該對以下的問題進行充分的討論,并形成一致的意見:
是否已經很清晰的理解了開發的需求和目標,并使每個人員充滿斗志地準備開始完成共同的目標?
是否制定了一套規范的、經過評測的、可復用的技術框架;
每個人的角色分工是不是都非常清楚地落實了;
是不是已經制定了開發過程中的周期劃分及評估辦法?而不是冒險等項目期限快到的時候才發現補牢已晚;
項目管理人員是否有隨時把握開發進度的有效手段?
小組人員是否都互相認識而且熟悉;
每個人是否都明白和他關聯的角色是誰,相互之間的工作流程?
是否忘了布置文檔撰寫及管理的方法或標準?
定義項目小組各種角色的工作流程
如果每個小組成員都對即將開始的開發心中有數并躍躍欲試的時候,那么這就是一個很好的開頭。
現在我們通過以下一份基本的角色及分工示例表2,把開發任務進行拆分,并定義每個角色的獲得、處理、輸出來表示各個角色之間的關聯:
角色 |
主要職責 |
工作流程 |
||||
獲得 |
處理 |
輸出 |
||||
系統分析員 |
軟件設計 |
獲得需求(來源:商務工程師、項目經理) 獲得(提。┫到y相關的角色 獲得(提。┫到y相關的用例 |
數據映射分析 |
輸出系統模型工件文檔(UML) |
||
界面設計師 |
用戶界面設計 |
得到項目流程描述工件文檔(來源:商務工程師、項目經理、系統分析員) |
理解項目界面控件類型及限制 |
輸出界面描述工件文檔 |
||
數據庫設計師 |
數據庫設計 |
得到項目數據對象工件文檔(來源:商務工程師、項目經理、系統分析員) |
理解數據庫設計要求 |
輸出數據庫定義工件文檔 |
||
程序員 |
代碼實現 |
獲取界面描述工件文檔HTML等)(來源:界面設計師) |
理解工件意圖 |
輸出程序源代碼 |
||
美工 |
輔助VI企劃設計 |
獲取整體風格需求。(來源:項目經理) |
美工設計 |
輸出界面模板 |
||
文檔員 |
技術白皮書 |
獲得產品計劃及功能描述。(來源:項目經理、界面工程師) |
檢測系統可操作性 |
輸出各種文檔 |
在小組中,每個人的工作都是與其他相關聯的,因此,小組成員除了保證自己擔負的任務的質量的同時,還需要關注其他關聯角色的任務,假使界面工程師遲遲無法定義產品流程,美工人員也許只能望紙生嘆,而美工人員不能將產品界面文件及早完成而任由程序員隨意定義界面的話,后期重新美化的工作量可能大到重寫一遍代碼的地步。
因此,項目經理需要時時掌握小組每個成員的工作進度,并進行監督和協調。有經驗的管理人員都知道,項目的計劃和進度在實施中必不可少地會進行調整,這種調整可能來自于:
客戶的需求進行了補充或修改;
工作量估算不準,造成進度不平衡;
某個技術環節出現障礙,需要另外需求人員或幫助;
有人不遵從開發規范,導致產品缺陷;
在面對意料中的意外時,項目管理人員需要有應急解決的辦法,從而保障開發持續穩定地向目標前進。
避免走向開發陷阱
一個成功的軟件項目小組,需要時刻提防無時不在的陷阱,走出泥潭。
技術陷阱:技術是無止境的,開發人員往往熱衷于追求新的技術而放棄了最擅長或最適用的技術,把項目當做練習新技術的試驗田,造成產品的不成熟。
解決辦法:想清楚是為技術而技術,還是為產品而技術?這不是個難以回答的問題。
需求陷阱:軟件的功能的確越來越強大,雖然在開發前期制定了開發計劃,但是開發過程中經常激發更多想象,從而試圖不斷增加新的功能,這種追求完美的心理可能導致的后果就是產品始終出不來,永遠處于開發期。
解決辦法:鎖定需求,限制功能,需要的話,利用版本升級的原理,把功能分階段實現,既保障產品的及時完成,又使小組產生成就感。
從程序員到項目小組
程序員除了堅持努力成為高級程序員以外,可以根據自身的性格、愛好和特長,并學習相關的技能,實現個人的提升,根據筆者個人的經驗,對以上可能轉換的角色做一些簡要闡述:
===如何成為項目經理?
資深的開發經驗并不一定能成為好的項目經理,項目經理對人員的管理、進度的掌握、質量的控制、成本的核算等等所做的工作已經遠遠超過代碼本身,作為項目領導人,應隨時能掌握先進的技術和方法并在適當的時機采用,管理整個項目小組往既定的目標前進。項目經理的角色不等于技術經理,也許項目經理實戰開發能力并不是最優秀的,但卻是小組的靈魂,所謂千軍易得,一將難求。選擇正確的人員、組織人員有效的工作是項目經理無法取代的價值。
===如何成為系統分析員?
從獲得需求分析開始建立合理健壯的系統模型將決定項目開發的成敗與否,也可以說系統分析員做的是項目最基礎的工作。系統分析員需要掌握科學的分析方法和工具,具有優秀的大局觀和前瞻能力,對系統的穩定性、安全性、適應性和擴展升級的能力進行控制。
===如何成為系統管理員?
從五月的紅黑大戰和種種報道來看,已經越來越多的人意識到了系統管理及網絡安全的重要性,一個成熟的產品或項目只要是于網絡相連就無法逃避安全的問題。系統管理員需要考慮服務器端的各種技術問題解決,管理不同的操作系統、數據庫及服務,進行網絡環境的架設和安全保障,系統管理員象衛士一樣保障整個項目的順利進行。
===如何成為質量控制工程師?
質量控制工程師負責指定項目的測試計劃與管理、編寫測試方案、測試用例、執行測試計劃;還需要負責與開發部門進行溝通與協調,確保軟件測試的順利進行;并對所測試的軟件進行質量評估,并完成測試報告。隨著項目的進行,質量控制工程師同時輸出程序文檔、課程文檔和使用手冊,因此需要更強的文字表達能力,同時為用戶提供友好清晰的文檔記錄,使開發的質量得到有效的提高和保障。
===如何成為數據庫工程師?
數據庫技術的不斷提高和越來越多大型數據庫的應用,使數據庫工程師的角色日顯重要,掌握數據庫結構和建立數據庫的方法,進行合理的安全性設置,數據備份和恢復,數據傳輸和數據復制,對很多程序員來說是個新的挑戰,如果說今后是網絡的社會,也可以大膽地說網絡就是數據庫,數據庫工程師的重要性毋庸置疑。動態數據倉庫、智能數據庫等先進技術的深入研究和應用,在數據庫領域的工作將越發重要。
===如何成為商務工程師和技術支持工程師?
也許你已經厭倦了開發部門相對封閉的環境和緊張的工作,又不愿意放棄辛苦積累的經驗,那么走出開發部,和市場部門一起從事售前售后的技術工作也許能讓程序員重新煥發激情,利用自身的經驗和技術實現客戶的需求是件很美妙的感受。學會傾聽和分析,準確把握重點和需求能使開發的工作事半功倍,有效提高用戶的滿意度,又何嘗不是件快事?!
在互聯網的時代,程序員是令人尊敬的,但是只有更多的程序員團結起來,組成高效的軟件小組。才能最大地發揮潛力。所以,個人程序員一定要結合自已的興趣和所長,看清方向,盡快融入團隊和產業大潮,那一定會加快個人的成功。
附注:本文示例參照了北京朗川軟件有限公司的軟件小組管理模式
文章來源于領測軟件測試網 http://www.kjueaiud.com/