為什麼軟體開發項目開發進度延遲、費用超出預算、軟體品質不能保證等問題一直在困擾著我們?我從來不認為產生這些問題的主要問題在於專案管理方法掌握不夠、在於軟體工程理解不透或在於軟體開發能力不強,主要問題在於我們常常忽視了軟體開發隊伍的建設。沒有一支好的隊伍,怎麼可能圓滿的完成軟體開發項目?回顧多年的開發經曆,下面總結一下軟體開發隊伍建設的一些經驗,試圖從各個方面來闡述如何打造一支積極主動、和諧穩定、高效創新的軟體開發隊伍,目的是拋磚引玉,希望大家結合自己的日常專案管理現狀,補充、調整.
1、軟體專案經理必須在軟體Team Dev中樹立起自己的權威地位。
軟體專案經理是軟體Team Dev的領頭羊,要成功的帶領Team Dev圓滿完成軟體開發工作單位,必須使全體開發人員信服你的知識結構、管理能力、協調能力和決策能力,所以軟體專案經理必須具備相當的專業和管理素質並且勇於承擔軟體開發項目的成敗的責任才能在軟體Team Dev中樹立起自己的威信。
軟體專案經理應該站在比開發人員更高的高度來認識所開發的系統和開發的過程,做到統領全域,需要知道但不必非要精通軟體開發過程中採用的技術、使用的工具、開發過程中每一個環節的重點和痛點,只有這樣,才能在關鍵時候作出準確、正確的決定,從而在軟體Team Dev中樹立起自己的權威地位。
我接觸過的很多軟體開發組織常犯的錯誤之一是研發經理經常幹預專案經理的管理,其實軟體專案經理在軟體Team Dev中威信的樹立同時需要研發經理的支援,研發經理和專案經理要建立一種互信的彙報和指導的互動機制,即使專案經理在管理過程中出現差錯,研發經理應該多加指導,避免直接插手軟體開發過程,研發經理必須賦予專案經理充分的信任和自主的執行權利。
2、取得公司決策層對軟體開發隊伍的充分信任和支援。
在軟體開發過程中,特別是規模較大的軟體項目,由於涉及面較廣、開發週期較長,經常需要跟日常行政管理、市場部門、採購部門、支援人員部門、財務部門等打交道,如果沒有公司決策層的支援,跨部門的協作難免會遇到障礙,而公司決策層的支援來自於他們對我們軟體Team Dev的充分信任,信任我們能夠按軟體產品的願景和目標出色的完成開發工作單位。
公司決策層對我們軟體Team Dev的信任來自於研發經理和專案經理可信的專業背景和管理技能,來自於Team Dev朝氣蓬勃的工作精神,來自於Team Dev齊心協力的協同工作態度,來自於Team Dev強烈的使命感、榮譽感和責任心。
我們有些軟體研發經理和專案經理經常在公司決策人員面前挑剔開發人員的不足之處,對開發人員懷抱各種不滿,訴說人力資源的欠缺,其後果是公司決策層越來越對我們Team Dev失去了信心和信任。研發經理和專案經理應該向公司決策層彙報每個開發人員的長處,彙報我們是如何通過彌補個別開發人員的不足之處來提升團隊整體的協同開發能力,讓公司決策層充分認識到我們作為一個集體的團結和力量,從而對我們充滿信心、信任和支援。
3、在Team Dev中建立一種信任和忠誠機制。
只有我們專案經理對軟體Team Dev每個成員的真誠信任,才能獲得開發人員對專案經理、對項目、對公司的忠誠,所以作為管理員,首先不要帶著成見去猜測開發人員的能力、道德觀念、工作態度等,而是真誠的信任他們,真誠的與開發人員進行溝通。只有充分的信任每一個開發人員,相信他們能夠出色的完成交給的任務,他們才會全身心的、充滿熱情的投入到自己的開發工作中去。信任還體現著一種開放的心態,只有信任他們的忠誠度,讓每個開發人員理解項目的目標、瞭解軟體的體繫結構和功能需求、瞭解Team Dev中其他成員的開發工作單位和進度,這樣開發人員和專案經理之間、開發人員之間才會配合默契,才會感覺到工作是一種幸福而不是一種無奈。
信任意味著給予每個開發人員對自己的工作任務的足夠的許可權,忠誠意味著每個開發人員會對交給自己的工作任務的成功負責。在召開項目開始階段的會議的時候,可以討論並確定每個開發人員的許可權,在召開項目開發過程的會議的時候,可以驗證每個開發人員是否具備各方面的條件來執行指派的工作任務。不要將任務指派給一個沒有許可權執行此類任務的開發人員。
4、形成一種為解決問題而不斷地召開簡短會議的討論氛圍。
中醫有這樣的一種說法,那就是“痛則不通,通則不痛”,體現在軟體專案管理中就是要經常的溝通,消除所有團隊成員之間就某一問題存在的衝突。在軟體開發過程中不時地召開簡短的討論,是一種行之有效方法。
專案經理要在軟體開發過程中不斷地與每個開發人員進行溝通,詢問他們在開發過程中是否遇到了技術上的障礙,瞭解他們是否對需求或業務存在誤解,檢查開發人員之間是否就某一方面產生了不同的理解和衝突等。當發現上述問題的時候,專案經理應及時組織相關人員召開簡短的會議,指定此問題的主要責任人準備好討論主題、相關的資料以及示範的PPT,提前3小時遞交會議參與者,要求參與討論人員提前1小時將各自的意見和建議遞交主要責任人匯總,並在會議上提出討論,通過討論最終達成一致的意見,形成會議紀要作為下一步的開發指導。
5、養成在公開場合肯定開發人員工作成果的好習慣。
大型軟體開發項目往往持續周期很長,在這漫長的開發過程中,如果只是在裡程碑的時候給開發人員獎勵是遠遠不夠的。專案經理應該在每次的工作例會中表揚那些在此段時間內表現良好、工作效率高、實際化解了很多難題的開發人員,並且經常要邀請研發經理和公司決策層參與這樣的表揚,這樣開發人員的心理會得到極大的滿足。對於在開發過程中存在問題的開發人員,在項目例會時盡量用探討的方式指出不足之處,共同探討如何通過改進解決存在的問題,避免在項目例會上當著所有開發人員的面來批評他們。對於個別開發人員情緒的波動,我們可以在私下進行溝通。
在軟體開發過程中或在軟體開發完成後,由於各種因素的影響,難免會需要對原有系統做變更。變更必然會遭遇開發人員的抵制,特別是那些不影響商務邏輯的變更,比如介面的調整,因為在開發人員的思維觀念中會認為自己的開發是成功的、完美的。此時,專案經理首先要肯定開發人員的成果,肯定當前的變更是在他們以前的成功的基礎上進行的,這樣開發人員會樂意去接受變更。
6、積極培養軟體開發隊伍的集體榮譽感。
我們提倡多一份榮譽感,少一份功利性,明確定義成功和失敗,強調成功首先是個人的成功,然後才是團隊的成功,強調失敗首先是團隊的失敗,然後才是個人的失敗。我們要倡導維護知識分子的一份尊嚴,尊嚴來自於開發出出色的軟體產品,尊嚴來自於強大的團隊凝聚力,尊嚴來自於公司領導和客戶的認可。
一個沒有榮譽感的團隊是不可能有很好的責任心的,一個沒有責任心的團隊是不可能開發出優秀的軟體產品的。在軟體Team Dev中要建立軟體產品是Team Dev集體智慧的結晶這樣的理念,每個開發人員在開發過程中的付出很難做到象生產流水線的計件工作一樣精確,在開發過程中通過開發人員之間的互幫互助,不但可以消除斤斤計較的不良風氣,還能增強彼此的協作氛圍、團隊的凝聚力和集體的榮譽感。
7、充分識別、發揮、利用軟體開發人員的個性,高效完成開發工作單位。
軟體開發是一種創造性的活動,創造性意味著需要個性的極大張揚,但這種張揚受制於企業的管理制度和軟體開發規範,作為軟體專案經理應該會同研發經理一起尋找並把握好規範和個性之間的平衡點。在軟體開發過程中,專案經理要仔細的觀察、分析每個開發人員的個性,不同的個性分配不同的開發內容,這樣的任務分配能使每個開發人員感到自己被重視,這樣的任務分配能讓開發人員感到工作的愉快感,這樣的任務分配能使每個開發人員全身心的投入到軟體開發之中,壓制個性的任務分配方法容易引起開發人員的抵觸情緒和消極態度。
我們尊重開發人員的個性,不是宣揚個人英雄主義,其行為受到公司規章制度的制約,其風格受到編碼規範的制約,其文檔受到各種文件範本的制約。如何保證開發人員的個效能在各種制度的制約下得到最大的發揮,關鍵在於專案經理與開發人員之間的充分、坦誠、友善的溝通。讓開發人員做到自動自發,其結果必然是高效、高品質的完成軟體開發工作單位。
8、建立一種開發人員之間、開發小組之間互相協作的工作氛圍。
在軟體開發過程中,難免會遇到各種障礙和困難,從而影響開發進度,管理上的障礙通常需要公司層面進行協調,但對於技術障礙,專案經理應及時組織相關開發人員進行攻關,此時資深開發人員應利用他們的經驗和知識積累發揮應有的作用。當某個開發小組或某個開發人員的開發進度有出現延遲的趨勢時,專案經理應及時與開發小組或開發人員溝通,並組織其他已經或快要完成任務的小組或人員一起討論,盡量分擔部分工作任務,這種互幫互助的工作氛圍將極大的增強團隊的凝聚力。
通過分享開發人員各自的知識積累和開發經驗,建立開發人員、開發小組之間的互相協作的工作氛圍能加快開發人員的成長過程;通過協作克服了開發中遇到的困難能增強Team Dev的自信心。
9、研發經理和專案經理必須為團隊成員爭取利益最大化和提升空間最大化。
專案經理必須象CEO經營企業一樣來經驗自己的軟體Team Dev。我們要把利益讓給開發人員,把榮譽讓給開發人員,通過出色的完成開發工作單位來得到公司決策層對項目團隊的毫無爭議的獎勵,從而為團隊成員爭取最大的經濟利益和榮譽。在軟體開發項目立項過程中,我們可以明確的提出獎懲措施,同時給出項目的評估方法,公司決策層根據評估方法對項目的開發過程(裡程碑)和開發成果(軟體產品)進行評估,評估結果作為項目獎懲的依據。
作為研發經理必須觀察每一個開發人員,對於工作勤奮、責任心強、具備管理素質、善於溝通的開發人員,要及時提請研發經理和公司決策層得以提升。當開發人員感到領導對自己的工作的認可時,會更加充滿激情地投入到開發工作之中。
10、軟體Team Dev每個成員對軟體產品的願景和要實現的目標擁有一致的理解。
我接觸過的很多軟體開發組織為了規避軟體項目過分依賴開發人員而帶來的技術流失風險,往往只有專案經理擁有設計文檔的全部許可權,開發人員只允許查閱跟自己要開發的那部分工作有關的設計文檔。在這樣的Team Dev中,一方面開發人員感覺不到公司領導對他們的信任感,往往導致工作積極性不高,嚴重的產生彼此的信任危機,另一方面由於開發人員對所開發的軟體缺乏整體的認識,往往導致軟體產品品質得不到保證。
我們強調每個開發人員儘早參與到項目的設計中來,即使沒有參與系統設計,我們也會邀請他們一起參與軟體系統的規劃討論和旁聽系統架構和系統設計的評審。只有每個開發人員對開發的軟體產品的目標有一致的理解,他們才會在軟體開發過程中各自作出正確的決定。