程式設計師如何修煉專案管理能力?
摘要: 專案管理能力修煉的 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 構建的體系,還需要了解軟體工程特有的知識體系,這方面,建議看看下面幾本書:
- 《人月神話》
- 《軟體工程》
- 《軟體工程:實踐者的研究方法》
- 《專案百態:深入理解軟體專案行為模式》
好啦,這次就到這裡,下次來聊如何成為技術管理者。
作者資訊: 安曉輝,《程式設計師的成長課》作者,公眾號“程式視界”主理人。
相關文章
- 程式設計師修煉之道—程式設計師如何提高自我修養(2)程式設計師
- 程式設計師修煉之道——程式設計師如何提高自我修養(1)程式設計師
- 程式設計師修煉之道程式設計師
- 程式設計師修煉之道1程式設計師
- 程式設計師修煉之道2程式設計師
- 程式設計師修煉之道3程式設計師
- 程式設計師修煉之道-從小工到專家程式設計師
- 《程式設計師的修煉之道:從小工到專家》程式設計師
- 『 不老 』程式設計師之修煉指南程式設計師
- 程式設計師修煉之道-筆記程式設計師筆記
- 程式設計師的修煉之道2程式設計師
- 程式設計師的修煉之道3程式設計師
- Java程式設計師修煉之道—併發程式設計Java程式設計師
- 程式設計師修煉:從新手到專家的過程程式設計師
- 讀《程式設計師修煉之道:從小工到專家》有感程式設計師
- 程式設計師修煉之道總結3程式設計師
- 程式設計師修煉之道總結1程式設計師
- 程式設計師修煉之路 - 設計能力提升途徑程式設計師
- 《程式設計師修煉之道——從小工到專家》筆記1程式設計師筆記
- 袁紅崗的程式設計師修煉之道程式設計師
- 程式設計師修煉之道讀後感02程式設計師
- 程式設計師修煉之道讀後感(1)程式設計師
- 程式設計師修煉之道讀後感(3)程式設計師
- 程式設計師修煉之道讀後感(2)程式設計師
- 《程式設計師修煉之道》讀書筆記程式設計師筆記
- 《程式設計師修煉之道:從小工到專家》之程式碼質量程式設計師
- 【讀後總結】程式設計師修煉之道---從小工到專家程式設計師
- 《程式設計師修煉之道:從小工到專家》讀書筆記程式設計師筆記
- java教程Java系統程式設計師修煉之道Java程式設計師
- 程式設計師修煉之道——從小工到專家讀書筆記3程式設計師筆記
- <<程式設計師修煉之道-從小工到專家>> -2024/10/28程式設計師
- 《程式設計師修煉之道:從小工到專家》讀書筆記 02程式設計師筆記
- 程式設計師修煉之道——從小工到專家讀書筆記2程式設計師筆記
- 程式設計師成長祕籍:個人程式設計能力的修煉之路程式設計師
- 程式設計師的成長秘籍:個人程式設計能力的修煉之路程式設計師
- 程式設計師修煉之為什麼程式設計師被稱為“夜貓子”程式設計師
- 程式設計師內功修煉之資料結構程式設計師資料結構
- 2022 PHP程式設計師修煉祕籍PHP程式設計師