程式設計師如何修煉專案管理能力?

Fundebug發表於2019-02-18

摘要: 專案管理能力修煉的 6 個階段。

Fundebug經授權轉載,版權歸原作者所有。

我門在“程式設計師加薪升職之成長金字塔”中介紹了職場成長金字塔:

大部分開發者工作三五年後,都能掌握所在崗位必須的知識、經驗和技能,然而很多人接下來就陷入困境,左衝右突,無法加薪升職,一直停在第 1 層,三年五年過去了,八年十年過去了,可能都還停在 1 層的位置。

對開發者來講,第 1 層對應的就是具體的軟體開發角色,卡在這層無法晉升,是指沒辦法成為技術管理角色。這其中最重要的原因是:大部分開發者只注重專業技能的修煉,忽視了人際溝通、專案管理等技能

而實際上,技術管理崗位,需要軟體開發的專業知識體系,也需要專案管理、部門運營、人際溝通、產品知識、自我提升、公司知識、行業知識等等,這個崗位,需要的是一個知識樹:

在這棵知識樹中,有 1 個知識體系,特別重要,那就是——專案管理。如果一個開發者不具備專案管理知識體系和實操能力,就很難帶好軟體專案,很難走向技術管理崗位,很難做好技術管理工作。

所以,今天我們來聊聊專案管理能力修煉的 6 個階段

  • 學習專案管理知識體系
  • 以生活中的專案作為練習
  • 觀察軟體專案,推演專案管理的過程
  • 主動打雜,熟悉某些專案管理過程
  • 獨立帶小專案
  • 帶大專案

1. 學習專案管理知識體系

很多事情都是有章法、框架的,專案管理也是如此。比較知名的專案管理體系就是 PMP 認證所定義的體系了。建議想走技術管理路線的小夥伴,都學習一下 PMBOK,考一個 PMP 認證。

在 PMBOK 中,把專案管理分為 10 個過程:

  • 整合管理
  • 範圍管理
  • 進度管理
  • 成本管理
  • 質量管理
  • 風險管理
  • 採購管理
  • 人力資源管理
  • 溝通管理
  • 干係人管理

前 7 個過程,是對事務的管理,後 3 個過程,是對人的管理。而且,後 3 個過程往往會在很大程度上影響前面的 7 個過程。所以,人際溝通能力,協作管理能力,都是技術管理崗位必須具備的能力。

我們掌握一項技能的最開始,就是找到這個領域的知識體系和框架去學習。瞭解了基本框架,再去實踐,以實踐來印證所學知識體系,相互促進,這樣,知識才能內化為能力。

2. 以生活中的專案作為練習

其實專案管理並不是軟體開發過程中特有的東西,它是通用的技能,可以在變通應用於任何型別的專案,比如電視生產、汽車製造、年會,各種都可以用。所以在一開始我們還是普通開發者,無緣管理專案時,可以通過生活中的專案來練習。

比如國慶長假的旅遊,就是一個很好的練手專案,因為它牽涉到多個人、成本、線路規劃、住宿、交通、飲食等等,比較複雜,幾乎包含了專案管理的 10 個過程。

再比如同學聚會、讀書分享會、組團爬山等等,都是很好的練手專案。

我們在生活類專案中練就的能力,比如規劃、進度管理、成本控制,都可以直接拿到軟體專案中使用。

3. 觀察軟體專案,推演專案管理的過程

我們還不是專案經理、技術經理的時候,可以觀察別人是怎麼做的,把自己放在管理角色上,來推演自己會怎麼做,這樣也是一種有效的練習。

一個簡單有效的練習方法,是給自己定一個目標:每天挑出一個專案管理相關的問題來琢磨解決之道。

  • 比如程式碼管理工具使用 svn 而不使用 git 會有什麼問題;
  • 比如每日站會上有些程式設計師每天都說“昨天改 Bug ,還沒查出原因,今天接著改 Bug ”到底有無意義;
  • 比如開發因為技術實現原因而選擇忽略 App 的視訊啟動動畫,需求不同意,該怎樣和她溝通;
  • 比如前端開發者元小二經常性地把 Bug 直接分配給後端開發袁大頭,兩人為此不斷口角,怎麼解決;
  • 比如有幾位程式設計師,提交程式碼時不寫任何日誌;
  • 比如阿三提交程式碼十次有八次不做整合構建測試;
  • 比如老闆總是越過專案經理直接指揮團隊的開發者新增需求;
  • ……

帶著問題去學習,是最有效的方式。

4. 主動打雜,熟悉某些專案管理過程

生活中練習,工作中代入角色,日常推演,這些方法可以讓我們熟悉專案管理的知識、技能和過程,但有效的辦法,還是直接做目標領域的專案管理工作。

有人說我不是專案經理啊,怎麼做專案管理?

別急,你雖然不是專案經理,但你身在專案之中,承擔了某個角色嘛,那自然有些工作是和你相關的。另外,更關鍵的是:你要跳出工作內容和崗位職責的範圍,放眼全域性來思考。

站出來,你才有機會。老想等著領導看見你給你機會,那是不可能有機會的。

所以,你要用心觀察,發現機會,主動去做。

比如拔高自己,站在全域性視角思考整個專案,從立項、需求、開發、測試、交付、運維、專案生產工具,分析哪個環節做得不好,哪個環節改善之後效果可以被看見,主動去做這些事情,主動成為銜接不同環節、不同人員、不同部門的橋樑;

比如觀察專案經理、研發經理,看他們有哪些專案管理相關的事情是不願意做的,比如組織會議、跟蹤計劃、分派任務、推動多幹系人協作等,主動找他們表達你可以分擔這部分工作的意願,獲得打雜的機會。

有心就可以發現很多可以發揮的機會——因為大多數開發者都嫌麻煩不想把事情攬在自己身上哦。

5. 獨立帶小專案

如果我們在第四個階段做出一些亮點,比如會議組織的很好、專案計劃跟蹤的很到位,那團隊有新的專案時,經理可能就會安排你來管理。到這個時候,你就可以系統地進行專案管理了。

自己獨立帶小專案時,要注意下面這些點:

  • 充分了解專案背景、需求、目標、交付要求、時間要求、干係人等。
  • 充分了解研發團隊成員的情況,誰是什麼性格、行為風格,擅長什麼技術,有哪些專案經驗。這點尤其重要,因為大多數軟體專案的管理,都不是全過程的,而是集中在軟體開發生命週期(產品定義、需求分析、開發、測試等),這個階段,研發團隊成員非常關鍵。
  • 充分了解團隊曾經使用過的開發過程和工具,比如迭代、精益、SCRUM、看板、Redmine、JIRA 等,選擇大家熟悉的。
  • 不要在專案管理過程中全面引入新方法、新過程、新工具,儘量在現有基礎上來做漸進式改革。
  • 建立有效的反饋渠道(會議、週報、特定的信任你的專案成員等),能適時瞭解專案管理的效果。很多人一開始帶專案,只管推方法、推工具,不知道實際的效果如何,往往是把經念歪了還不知道。

6. 帶大專案

經歷了第五階段若干個小專案的實踐,我們對軟體專案管理應該有了豐富的知識積累和實踐經驗,可以挑戰比較大的專案了。

5 個人 2 個月可以完成的小專案,與 100 個人 2 年才能完成的中大型專案,不是一個概念,對專案管理能力的要求,非常不同。具體怎麼不同,我沒做過太大的專案,並不知道啊……

呃,所以,這個階段,我沒什麼好說的……如果你有經驗,文後留言來聊聊呀。

總結

這次我簡單介紹了專案管理能力修煉的 6 個階段,提供一個循序漸進的參考。實際上,軟體專案的管理,有它自己的特色,與建築、生產、娛樂等,大不相同,所以,要做好軟體專案管理,除了 PMBOK 構建的體系,還需要了解軟體工程特有的知識體系,這方面,建議看看下面幾本書:

  • 《人月神話》
  • 《軟體工程》
  • 《軟體工程:實踐者的研究方法》
  • 《專案百態:深入理解軟體專案行為模式》

好啦,這次就到這裡,下次來聊如何成為技術管理者。

作者資訊: 安曉輝,《程式設計師的成長課》作者,公眾號“程式視界”主理人。

相關文章