項目經(jīng)理應該有這樣的認識:
互聯(lián)網(wǎng)項目,會定一個計劃發(fā)布日期,然而這個項目有個隱藏的實際合理發(fā)布日期。因為軟件開發(fā)并不是一個直接添加資源可以加快速度的過程,所以這個實際合理 發(fā)布日期是在現(xiàn)實資源合理利用前提下一個客觀存在的可能早的完成時間。項目進展的過程,其實也是發(fā)現(xiàn)這個隱藏的合理發(fā)布日期的過程。
從管理的角度來講,當然是盡可能的趕上計劃的發(fā)布時間,或者盡可能快的完成項目。但是因為多方面因素的影響,項目管理是一個欲速則不達的過程。如果這個計劃 發(fā)布日期早于這個實際合理發(fā)布日期,那你越往這個不合理的日期趕,工期內(nèi)積累的問題越多導致后期收尾的時候爆發(fā),結(jié)果反而可能連合理發(fā)布日期都趕不上。 借用《讓子彈飛》里面的一句話,步子邁得太大了,容易扯著蛋。給項目組定一個個合理的看得見的小目標,步步為營,一步一步朝著看得見的并且合理的每一個小 目標前行,每一個小目標的積累,才能終走向項目的成功。
所以務(wù)實的項目經(jīng)理應該認識到如下幾點:
1. 項目組可以以快節(jié)奏的步伐在前行,但是項目經(jīng)理本身一定要清晰的認識到,我們明面上是在趕那個計劃發(fā)布日期,但是項目組實際的目標應該是那個客觀存在的合理發(fā)布時間。
2. 隨著項目的進行,那個客觀存在的合理發(fā)布時間會逐漸明朗。它與計劃發(fā)布時間的差異也逐漸顯示出來。此時有些項目經(jīng)理往往會通過加資源的方法來嘗試縮短這個合 理發(fā)布時間。但是真實的情況是,除非你前期的資源配置不合理,不然在這種情況下加資源,對項目幫助不大。這個地方無須多說,有疑問的人,去看一下《人月神 話》知道了。
3. 項目經(jīng)理必須有一些堅持。領(lǐng)導或者業(yè)務(wù)部門經(jīng)常會有一些壓力下來,要求趕那個計劃發(fā)布時間,同時要求你想盡任何辦法去趕上這個計劃發(fā)布時間。而現(xiàn)實狀況下, 如果你能夠調(diào)整一些需求的范圍,你還是有戲。不然,你要嘛此時報喜,后期報憂,要嘛此時報憂,后期不憂。掩蓋問題往往可以讓人開心,但是不代表問題不存 在。
4. 項目經(jīng)理能做好的其實5點:
a. 控制好了需求;
b. 及早的發(fā)現(xiàn)問題,報告出來并解決;
c. 不出現(xiàn)資源空閑的狀態(tài);
d. 利用好每個資源去做擅長的事,快速有效的推進各種任務(wù);
e. 不浪費資源去做一些對項目目標總體沒有幫助的工作,或者一些后期會推翻的需求。
基于這樣的認識下,本文有如下幾個要點:
項目責任感
項目經(jīng)理應該有這個的責任感,你要為這個項目的任何一件事情負責,因為這個事情會影響到整個項目的工期,而你為整個工期負責。
一個例子,我發(fā)現(xiàn)現(xiàn)在的項目有一個緊急的問題需要項目組外的人幫忙解決。于是我把郵件發(fā)出去,通知Wendy趕緊處理這件事情。
幾天過去了,Wendy還沒有處理。我想,我已經(jīng)把問題說出去了,接下去是Wendy的事情。
那個問題還是沒有解決,我的整個工期受影響了。
事后追究起來,我說,我已經(jīng)發(fā)出郵件了,是Wendy沒有及時處理。
Wendy說,我事情那么多,我怎么知道這件事情這么急。
項目工期受影響了,誰的責任?Wendy嗎?不,是我自己。
作為一個對整個項目負責的項目經(jīng)理,沒有人會比你更在意項目的進展。讓一個不負具體負責的人去幫你推進你的項目,遠遠不如你自己用心推進來得有效。
項目經(jīng)理是打雜的
項目組里面的每個專業(yè)成員,他們都有擅長的領(lǐng)域,做他們擅長的事情是他們的快樂。而不屬于他們擅長的事情,對他們來說算是雜事一般。
項目經(jīng)理一定要有一個這樣的意識:
項目經(jīng)理是打雜的,幫助項目組成員把雜事處理掉,讓他們可以專心的做他們擅長的事情,這樣對項目組來說才是高效的。
一個簡單的例子,測試人員Tracy在測試某個功能的時候,突然發(fā)現(xiàn)她需要一個賬號,同時開通這個賬號的某些特定的權(quán)限,同時她需要一些服務(wù)器的信息,比如主機名,某些功能文件夾存放的路徑。但是她不清楚這個賬號和權(quán)限要找誰開通,這些服務(wù)器的信息誰有。
Tracy是個喜歡做測試的人,但是她不喜歡跟項目組外的人溝通,特別是還要到其他部門去找人問人。這些對她來說是雜事,而且她對其他部門的人也不熟,一個一個問明顯效率不高。
你可以自己去幫她找到需要的信息,也可以找一個對這方面比較熟的人去解決,但是你不能讓她自己去做。
“為什么我的手下不能解決這么簡單的問題?如果連這種事情都要我來幫忙的話,那我這個項目經(jīng)理做來干什么?她當項目經(jīng)理得了。“這種想法千萬是不可取的。
你當這個項目經(jīng)理的目的并不是管人,指使這人做什么那人做什么。你的目標只是把項目快速推進完成。
控制需求
在所有因素當中,需求對項目的影響力,至少占50%以上。能夠控制好需求,項目成功了一半。控制需求,有如下幾點:
1. 必須有人能夠當好產(chǎn)品經(jīng)理這個角色
一個項目組當中,其實人人都可以影響需求。但是管理需求的,是產(chǎn)品經(jīng)理這個崗位。如果你的項目組當中已經(jīng)有一個很好的產(chǎn)品經(jīng)理,恭喜你,項目經(jīng)理可以輕松很 多。但是世間事不會如此幸運,因為現(xiàn)實生活中,并不是所有的產(chǎn)品經(jīng)理都這么棒。作為一個對項目完成負責的項目經(jīng)理,當你們組沒有一個好的產(chǎn)品經(jīng)理的時候, 你必須意識到,你至少要扮演好一半的產(chǎn)品經(jīng)理,除非你本身對項目的完成也沒什么責任感。
2. 管理需求的人要平衡工期和功能友好程度
需求其實有兩個極端,一個是盡善盡美,盡可能的讓功能更友好,用戶體驗更佳;一個是盡早交付,一切改善性的需求都可以犧牲。
只滿足前者,項目工期可能會不斷的拖延,因為很多功能的工作量其實是在細節(jié)的優(yōu)化,而不是主要流程的完成。只滿足后者,很可能會出現(xiàn)一個讓用戶很不滿意的產(chǎn)品。
一個有經(jīng)驗或者產(chǎn)品意識很好的產(chǎn)品經(jīng)理,可以很好的平衡好這兩點。如果產(chǎn)品經(jīng)理不能平衡好,那只好依賴項目經(jīng)理來平衡。這點,如果產(chǎn)品經(jīng)理或項目經(jīng)理不是天才的話,只能通過經(jīng)驗來學習。
比如我們在做一個注冊的頁面,里面有個城市的輸入框。城市的輸入框可以做得很友好。如果要項目盡早完成,那么這個輸入框我們只要讓用戶自己輸入行。一個比較好的設(shè)計是兩個下拉環(huán)框,一個選擇省份,然后再選擇城市。但是一個更好的設(shè)計是讓用戶既可以選擇,也可以自由的在這個輸入框里面輸入拼音首字母,漢字,然后系統(tǒng)會自己顯示相匹配的城市讓用戶選擇。后兩者的改進肯定會花時間,但是如果這兩種改進都不做,讓用戶只是自由輸入的話,后期維護的時候會出現(xiàn)用戶輸入不標準的城市數(shù)據(jù),如果我們需要用戶的城市數(shù)據(jù)做一些其他功能,會有錯誤數(shù)據(jù)的風險。
3. 懂得對不重要的需求說不
如果你不能平衡好工期跟功能改進的話,有一點你一定要意識好,是你一定要懂得對不重要的需求說不。這很簡單,你對一個需求說不,只要這個需求不是一個會造成其他功能依賴的核心需求,算這個需求后面發(fā)現(xiàn)必須實現(xiàn),你可以補上,總體工作量并沒有增加。但是如果你花資源去完成了這個需求,后面卻發(fā)現(xiàn)這個需求是不重要的或者可以簡化的,那你已經(jīng)浪費了一些工作量。兩者的代價相比,明顯前者的代價比較小。
4. 理好需求優(yōu)先級
需求的優(yōu)先級應該滿足如下幾點:
a. 確定不變的需求應該先完成,如果項目組去完成了一些功能,結(jié)果后面發(fā)現(xiàn)需求要改,那前期的一些工作量已經(jīng)浪費了。
b. 被其他需求依賴的需求應該先完成,只有這樣,才能不擋住依賴它的需求的開發(fā)。
比如登錄功能,很多登錄后的頁面都需要當前登錄的用戶信息。
c. 主流程,或者核心需求應該先完成,改善性的需求應該后完成。
比如信息列
表頁面,很多功能需要用戶在信息列表里面選擇要操作的記錄。因此信息列表是核心需求。而在信息列表頁里面一個列顯示格式的美化,這屬于改善性需求。
風險管控
風險管控是項目經(jīng)理一個非常重要的技能。一個好的項目經(jīng)理應該盡量在早期把所有的風險都列出來,一個一個解決。一個流暢的項目,從前期到后期風 險點應該是倒三角形的,是前期風險很多,后期風險越來越少。而項目管理不暢的,則是一個正三角形,上面風險少,到后期風險多了。
項目經(jīng)理應該盡可能的找出所有的風險點。假設(shè)有一個點,你不確定他是不是有風險的,那即使我們把早期把它當做一個風險點重視起來,帶來的代價也遠遠小于在后期等它爆發(fā)出來的時候再處理。
我們現(xiàn)實中有一個很適合的例子。我們有一個功能是SSO,讓合作方去調(diào)用我們的接口實現(xiàn)免登錄直接從他們的站點跳轉(zhuǎn)到我們的站點繼續(xù)使用。因為關(guān)系到第三方,所以我們前期有些擔心到時候這一塊會不會出現(xiàn)什么東西不可控。不過大家也是想想而已,沒有太在意。
在項目后期的時候,需要跟第三方站點聯(lián)調(diào),通過他們的站點來測試我們的SSO接口和接下去的流程是不是可用的。結(jié)果這時候發(fā)現(xiàn),因為第三方安全 管控很嚴格,外部人員無法訪問他們的站點。于是我們的測試工作停滯在那邊。后面弄得雞飛狗跳,兩個公司的IT以及架構(gòu)組的人討論來討論去看這個問題怎么 解決。發(fā)布時間終還是因為這一點拖延了。
外部依賴不可控
風險管控還有個要點要記住,項目組能處理的問題,算是小問題。需要項目組外的人員處理的,才是大問題。因為項目組外的人員不受你調(diào)配,他應承你 的時間不一定是你滿意的時間;即使是你滿意的時間,也不一定真的能確保在那個時間完成;算真的完成了,也不一定達到你想要的效果。
必要的時候,任務(wù)要步步緊跟
項目經(jīng)理并不是把任務(wù)簡單分出去可以不管的。如果你的開發(fā)人員不是很有經(jīng)驗,或者技術(shù)實力很強,思維很縝密,那你應該緊緊的跟進你分發(fā)出去的任務(wù)。
1. 你應該經(jīng)常去看一下他們的任務(wù)開發(fā)到了什么程度,可以的話,讓他運行給你看一下。
2. 問一下有沒有什么問題,有什么可以幫助他的。因為很有可能他有個問題在糾結(jié),而其實你因為經(jīng)驗或者了解更多的背景,很簡單為他指出簡單的解決方案。
3. 你在檢查的過程當中,也會有可能發(fā)現(xiàn)一些他可能還沒發(fā)現(xiàn)的問題,或者跟這個任務(wù)相關(guān)聯(lián)的問題。任務(wù)的完成進度和完成質(zhì)量,是影響項目進展的一個重要因素。項目經(jīng)理的一個主要職能,是幫助每個任務(wù)的快速推進。
做當前,看后續(xù)
當我們把當前的做的迭代的需求、流程、依賴以及其他的疑問理清楚,讓項目組可以順利推進的時候,項目經(jīng)理不應該再專注在當前的迭代,而是要開始想整理下一個迭代的事情,讓大家在完成當前迭代的時候,不需要暫停在那邊,去等待梳理下一個迭代的問題。
舉一個例子,當前的迭代我們在做用戶登錄的功能,做完這個迭代,接下去我們要做登錄完的首頁展示。開發(fā)組在做登錄的時候,項目經(jīng)理也跟著在那 邊搗騰登錄的細節(jié)。等下一個迭代開始的時候,項目組才發(fā)現(xiàn)首頁展示只有原型圖,UI 跟HTML都還沒做出來,而其他功能更沒有準備。于是項目組只好花兩三天的在那邊等UI和HTML。
固定的項目組成員
這是一個很簡單的要求,但是并不是所有的人都會重視。正如隨便加一個開發(fā)人員進來并不能夠立刻讓整個項目進展加快,換一個人的話,整個進展肯定也會受影響。
組員潛力
每一個程序員、測試人員、美工、產(chǎn)品經(jīng)理,都比你想像的要聰明。如果你沒有對你組員的能力有個清晰的認識,那你可以嘗試給他的任務(wù)增加一些難 度,超過你原來的預期一點點。他能完成,你以后可以再增加一些難度。直到他直接跟你說他搞不定。如果你覺得你已經(jīng)有個清晰的認識了,那你也應該記得,只是 你覺得。
我們有一個項目,里面有個很棒的程序員Joy,平常是個很低調(diào)的人。項目經(jīng)理分任務(wù)的時候,給他幾個特定的模塊讓他完成。他也堅守崗位,做好他份內(nèi)的事。項目因為種種原因,不斷的拖延。但是Joy還是很誠實的做好他的本分。
后來有人跟Joy講,你以后要把自己當dev lead看,所有開發(fā)的事情你統(tǒng)籌。Joy還是一個很低調(diào)的人,他繼續(xù)做他本分的事情,只不過這次的本分是統(tǒng)籌負責所有的開發(fā)問題。接下去是項目的問題一個接一個的被快速解決掉,其他程序員也得到強有力的幫助,快速處理到自己手頭中的bug。項目進展很快趕上了原來的計劃。你真的很好的發(fā)揮了你組員的潛力了嗎?
人人看到全盤
項目經(jīng)理能夠很好的分配好任務(wù),讓各個組員可以較獨立的工作,這是不錯,但也不見得是好事。因為軟件開發(fā)是一個團體的工作,各個人做的事情之間都有交叉。我做的功能,接下去要調(diào)用你的接口。你做的頁面,接下去要跳轉(zhuǎn)到我的。
Bruce做一個功能,是要顯示公司人員信息的列表。里面有個操作,選擇一個人員計算出勤率。這個操作不是Bruce完成了,他只要直接調(diào)用Lisa的頁面,Lisa的頁面會直接計算出勤率并顯示出來。Bruce認識,他只要簡單傳一個人員的ID過去可以了。
Lisa做這個出勤率的頁面,因為這個人員是屬于業(yè)務(wù)人員,經(jīng)常要在分公司跑,所以只能計算他在某一個分公司的出勤情況。她以為大家都知道。等 大家都完成了,QA在測試的時候,發(fā)現(xiàn)在人員信息列表里面點進去,顯示不了出勤頁面。整個流程都走不通了。后來才發(fā)現(xiàn)有2個問題沒解決好,一個人員信息跳轉(zhuǎn)到出勤頁面前要傳遞當前的分公司信息,一個是出勤頁面還要增加選擇分公司的功能。這2個問題一個是QA測出Bug,一個是需求還有不足。而這本來是應該在開發(fā)周期內(nèi)可以發(fā)現(xiàn)并解決的問題。
根源在于,Bruce跟Lisa在做手頭任務(wù)的時候,都沒有去考慮跟其他人的關(guān)聯(lián)。而他們2個人都沒有去考慮的話,其他人更不會去考慮了。如果Bruce或者Lida在做任務(wù)的時候,去想想他們彼此怎么串聯(lián)起來,這問題本身很簡單了。
項目組的每個人,可以重點在自己手頭的任務(wù),但是思路必須是在全盤,大家腦子里面都要經(jīng)常去想想,整個系統(tǒng)是什么樣子的,我的功能前后的依賴是什么樣的。項目經(jīng)理平常要引導大家這樣想。
一定要分成每一個小迭代
步伐邁得太大了,你不知道你邁得對不對,邁得夠不夠快。項目是不可能一步到位的。把一個大目標分解成每一個小目標,整個項目工期分成若干個短 迭代,一個一個的完成。每一個完成的小目標都能幫助你理清整個項目的進度,方向,幫助你審核一下目前的思路是對的還是錯的,出錯了,也能夠及時的調(diào)整。
不做一半的功能
如果我們做了2個功能,但是我們每個功能都做了一半沒全部完成,那目前為止我們總計完成了多少個功能?1個?不是的,完成了0個。一個功能除非真正完成并且通過產(chǎn)品經(jīng)理的檢查,不然你永遠不能確定這個功能是不是還有一些遺漏的地方。
100個完成度為90%的功能合起來,完成的功能還是0個。你很興奮你的程序里面有很多功能,但是你試了一個又一個,結(jié)果發(fā)現(xiàn)每個功能都是半成品,沒有一個功能可以正確解決你的問題。對于半成品的功能:
1. 你其實并不知道你還剩多少工作量,因為已經(jīng)“完成“的工作不能驗證說是真正完成的。
2. 你沒法給業(yè)務(wù)部門或者客戶做演示,因為這些功能沒做完。
3. 如果業(yè)務(wù)部門讓你暫停一下,先按照目前已有的功能去讓客戶測試一下,你會啞巴吃黃蓮,有苦說不出。所以我們做功能的時候,要確保我們在做的功能已經(jīng)是真正完成了,我們再去接著做下一個功能。
不讓細節(jié)影響你的目標
項目組的人很容易沉浸在功能的細節(jié)當中,為一些友好美觀的顯示,炫麗的功能或者很酷的設(shè)計浪費大把的時間,忘記了這個項目的終目標是什么。其他人可以投入,但是項目經(jīng)理一定要能夠抽身事外,專注在項目的全局。沉浸在細節(jié)當中很容易讓人忘記工期,忘記項目的終目標。
我這個提示信息的顏色會不會太淡了?
要不要再調(diào)深一些?我這個按鈕是不是可以往左邊移10像素,這樣更好看?
這個地方要不要來一個自動提示,這樣會更友好一點?
我這個面板的顯示要不要使用漸變的?1秒內(nèi)漸變完成會不會太快?用戶會不會還沒看夠?
你先把功能完成再說好嗎?以后有的是大把的時間美化這些。
正確的里程碑要點
我們碰過一個項目,項目經(jīng)理的報告說,目前的狀態(tài)是開發(fā)完成。結(jié)果一看,這樣說的依據(jù)是分配到所有開發(fā)人員的任務(wù),開發(fā)人員都認定為完成了。于是大家認為目前是開發(fā)完成,進入QA測試的階段。結(jié)果QA報怨測試不下去,流程都走不通。
產(chǎn)品經(jīng)理進去看了一下,也說很多地方功能缺失。根本不能認定為開發(fā)完成。
1. 一個項目,或者一個短迭代,應該先列出一個所有人都認同的里程碑列表。比如,分為框架設(shè)計完成;分解出來的需求已經(jīng)可用于開發(fā);子任務(wù)劃分完成;子任務(wù)已經(jīng)分配并預估完成;各子任務(wù)完成;開發(fā)人員整合測試完成;產(chǎn)品經(jīng)理檢查通過;QA測試通過。
2. 每個里程碑的完成要有大家都認同的驗證方式比如如何判斷開發(fā)人員整合測試完成,是不是開發(fā)人員坐在一起或者開發(fā)組長把所有流程都走過一遍,然后發(fā)現(xiàn)沒有什么大的問題?
自我管理
前面講了這么多,弄得好像項目經(jīng)理很重要,缺了這個項目經(jīng)理整個項目不轉(zhuǎn)了。如果項目經(jīng)理的手下是固定的,只不過做的項目不一樣,那我建議項目經(jīng)理在完成項目的基礎(chǔ)上,一定要考慮這樣一個目標:
建立一套流程,一套大家都熟悉并且會遵守的流程。這個流程可以保證整個項目組在項目經(jīng)理不在的情形下,也可以運轉(zhuǎn)得很好。
目前項目處在什么階段,這個階段大家要做什么,下一個階段是什么;這個階段有什么任務(wù)要做;每個階段碰到問題要怎么處理;每種任務(wù)或者問題由誰來處理。這些并不是很難學會的東西。項目的成員經(jīng)歷過幾次,很容易可以理解要怎么做。
項目經(jīng)理除了推進項目以外,還要在項目的過程中把流程的思路,解決各種問題的思路教給大家,同時明確每個人的職責,達到項目組可以自我管理的程度。
一個可以自我管理的項目組,才是一個穩(wěn)定高效的項目組。項目經(jīng)理才可以抽身出來,同時去做一些其他的對部門,對公司同時也對自己有利的事情。