大部分開發(fā)者工作三五年后,都能掌握所在崗位必須的知識、經(jīng)驗和技能,然而很多人接下來就陷入困境,左沖右突,無法加薪升職,一直停在第1層,三年五年過去了,八年十年過去了,可能都還停在1層的位置。
對開發(fā)者來講,第1層對應(yīng)的就是具體的軟件開發(fā)角色,卡在這層無法晉升,是指沒辦法成為技術(shù)管理角色。這其中最重要的原因是:大部分開發(fā)者只注重專業(yè)技能的修煉,忽視了人際溝通、項目管理等技能。
而實際上,技術(shù)管理崗位,需要軟件開發(fā)的專業(yè)知識體系,也需要項目管理、部門運營、人際溝通、產(chǎn)品知識、自我提升、公司知識、行業(yè)知識等等,這個崗位,需要的是一個知識樹:
在這棵知識樹中,有1個知識體系,特別重要,那就是——項目管理。如果一個開發(fā)者不具備項目管理知識體系和實操能力,就很難帶好軟件項目,很難走向技術(shù)管理崗位,很難做好技術(shù)管理工作。
所以,今天我們來聊聊項目管理能力修煉的6個階段:
學(xué)習(xí)項目管理知識體系
以生活中的項目作為練習(xí)
觀察軟件項目,推演項目管理的過程
主動打雜,熟悉某些項目管理過程
獨立帶小項目
帶大項目
(一) 學(xué)習(xí)項目管理知識體系
很多事情都是有章法、框架的,項目管理也是如此。比較知名的項目管理體系就是PMP認(rèn)證所定義的體系了。建議想走技術(shù)管理路線的小伙伴,都學(xué)習(xí)一下PMBOK,考一個PMP認(rèn)證。
在PMBOKv6中,把項目管理分為10個過程:
整合管理
范圍管理
進(jìn)度管理
成本管理
質(zhì)量管理
風(fēng)險管理
采購管理
人力資源管理
溝通管理
干系人管理
前 7 個過程,是對事務(wù)的管理,后 3 個過程,是對人的管理。而且,后 3 個過程往往會在很大程度上影響前面的 7 個過程。所以,人際溝通能力,協(xié)作管理能力,都是技術(shù)管理崗位必須具備的能力。
我們掌握一項技能的最開始,就是找到這個領(lǐng)域的知識體系和框架去學(xué)習(xí)。了解了基本框架,再去實踐,以實踐來印證所學(xué)知識體系,相互促進(jìn),這樣,知識才能內(nèi)化為能力。
(二)以生活中的項目作為練習(xí)
其實項目管理并不是軟件開發(fā)過程中特有的東西,它是通用的技能,可以在變通應(yīng)用于任何類型的項目,比如電視生產(chǎn)、汽車制造、年會,各種都可以用。所以在一開始我們還是普通開發(fā)者,無緣管理項目時,可以通過生活中的項目來練習(xí)。
比如國慶長假的旅游,就是一個很好的練手項目,因為它牽涉到多個人、成本、線路規(guī)劃、住宿、交通、飲食等等,比較復(fù)雜,幾乎包含了項目管理的10個過程。
再比如同學(xué)聚會、讀書分享會、組團爬山等等,都是很好的練手項目。
我們在生活類項目中練就的能力,比如規(guī)劃、進(jìn)度管理、成本控制,都可以直接拿到軟件項目中使用。
(三) 觀察軟件項目,推演項目管理的過程
我們還不是項目經(jīng)理、技術(shù)經(jīng)理的時候,可以觀察別人是怎么做的,把自己放在管理角色上,來推演自己會怎么做,這樣也是一種有效的練習(xí)。
一個簡單有效的練習(xí)方法,是給自己定一個目標(biāo):每天挑出一個項目管理相關(guān)的問題來琢磨解決之道。
比如代碼管理工具使用 svn 而不使用 git 會有什么問題;
比如每日站會上有些程序員每天都說“昨天改 Bug ,還沒查出原因,今天接著改 Bug ”到底有無意義;
比如開發(fā)因為技術(shù)實現(xiàn)原因而選擇忽略 App 的視頻啟動動畫,需求不同意,該怎樣和她溝通;
比如前端開發(fā)者元小二經(jīng)常性地把 Bug 直接分配給后端開發(fā)袁大頭,兩人為此不斷口角,怎么解決;
比如有幾位程序員,提交代碼時不寫任何日志;
比如阿三提交代碼十次有八次不做集成構(gòu)建測試;
比如老板總是越過項目經(jīng)理直接指揮團隊的開發(fā)者新增需求;
……
帶著問題去學(xué)習(xí),是最有效的方式。
(四) 主動打雜,熟悉某些項目管理過程
生活中練習(xí),工作中代入角色,日常推演,這些方法可以讓我們熟悉項目管理的知識、技能和過程,但有效的辦法,還是直接做目標(biāo)領(lǐng)域的項目管理工作。
有人說我不是項目經(jīng)理啊,怎么做項目管理?
別急,你雖然不是項目經(jīng)理,但你身在項目之中,承擔(dān)了某個角色嘛,那自然有些工作是和你相關(guān)的。另外,更關(guān)鍵的是:你要跳出工作內(nèi)容和崗位職責(zé)的范圍,放眼全局來思考。
站出來,你才有機會。老想等著領(lǐng)導(dǎo)看見你給你機會,那是不可能有機會的。
所以,你要用心觀察,發(fā)現(xiàn)機會,主動去做。
比如拔高自己,站在全局視角思考整個項目,從立項、需求、開發(fā)、測試、交付、運維、項目生產(chǎn)工具,分析哪個環(huán)節(jié)做得不好,哪個環(huán)節(jié)改善之后效果可以被看見,主動去做這些事情,主動成為銜接不同環(huán)節(jié)、不同人員、不同部門的橋梁;
比如觀察項目經(jīng)理、研發(fā)經(jīng)理,看他們有哪些項目管理相關(guān)的事情是不愿意做的,比如組織會議、跟蹤計劃、分派任務(wù)、推動多干系人協(xié)作等,主動找他們表達(dá)你可以分擔(dān)這部分工作的意愿,獲得打雜的機會。
有心就可以發(fā)現(xiàn)很多可以發(fā)揮的機會——因為大多數(shù)開發(fā)者都嫌麻煩不想把事情攬在自己身上哦。
(五)獨立帶小項目
如果我們在第四個階段做出一些亮點,比如會議組織的很好、項目計劃跟蹤的很到位,那團隊有新的項目時,經(jīng)理可能就會安排你來管理。到這個時候,你就可以系統(tǒng)地進(jìn)行項目管理了。
自己獨立帶小項目時,要注意下面這些點:
充分了解項目背景、需求、目標(biāo)、交付要求、時間要求、干系人等。
充分了解研發(fā)團隊成員的情況,誰是什么性格、行為風(fēng)格,擅長什么技術(shù),有哪些項目經(jīng)驗。這點尤其重要,因為大多數(shù)軟件項目的管理,都不是全過程的,而是集中在軟件開發(fā)生命周期(產(chǎn)品定義、需求分析、開發(fā)、測試等),這個階段,研發(fā)團隊成員非常關(guān)鍵。
充分了解團隊曾經(jīng)使用過的開發(fā)過程和工具,比如迭代、精益、SCRUM、看板、Redmine、JIRA等,選擇大家熟悉的。
不要在項目管理過程中全面引入新方法、新過程、新工具,盡量在現(xiàn)有基礎(chǔ)上來做漸進(jìn)式改革。
建立有效的反饋渠道(會議、周報、特定的信任你的項目成員等),能適時了解項目管理的效果。很多人一開始帶項目,只管推方法、推工具,不知道實際的效果如何,往往是把經(jīng)念歪了還不知道。
(六)帶大項目
經(jīng)歷了第五階段若干個小項目的實踐,我們對軟件項目管理應(yīng)該有了豐富的知識積累和實踐經(jīng)驗,可以挑戰(zhàn)比較大的項目了。
5個人2個月可以完成的小項目,與100個人2年才能完成的中大型項目,不是一個概念,對項目管理能力的要求,非常不同。具體怎么不同,我沒做過太大的項目,并不知道啊……
呃,所以,這個階段,我沒什么好說的……如果你有經(jīng)驗,文后留言來聊聊呀。
(零)回顧&預(yù)告
這次我簡單介紹了項目管理能力修煉的6個階段,提供一個循序漸進(jìn)的參考。實際上,軟件項目的管理,有它自己的特色,與建筑、生產(chǎn)、娛樂等,大不相同,所以,要做好軟件項目管理,除了PMBOK構(gòu)建的體系,還需要了解軟件工程特有的知識體系,這方面,建議看看下面幾本書:
《人月神話》
《軟件工程》
《軟件工程:實踐者的研究方法》
《項目百態(tài):深入理解軟件項目行為模式》