2013年8月23日

[PL的Project Management]關於人月,你要了解的


PL要懂得將project量化,例如code size量化、bug數量化、開發人月的量化等等,量化的目的是讓你對project有較整體性的概念,進而可以較準確的預估project所需要投入的成本(如人力、時間)和產生的結果(如可完成的功能數量、schedule的milestone時間點)。儘管量化的結果不一定準確,但是不可否認地量化愈精細,所考量的因素愈多,則數據的參考價值愈高。所以PL懂得量化project時,就會對project的掌握度愈高。


有一個量化的指標,是PL一定要知道的:Project開發的成本:人月(man-month)。<人月神話>書中有談了很多人月的觀念,例如人力和時間不是呈現線性關係、人力和工時是不可以互換的(在你=我=他?的文章中也提過)等,有與趣的可以自己看一下書。這邊就實務上的操作,列出一些觀點給大家參考:

1、誰估的人月才準?
  PL、老闆、function leader、RD到底誰估的才準呢?
  原則上是應該實作的RD自己來估schedule,但是要得到更準確的schedule,PL要注意:
  A、RD專業能力是否足夠?
    專業不夠時(如新手RD),schedule是不準的,因為可能RD使用的方法或design不對造成很大的誤差。PL需要找專業的人來協助,review實作的RD的確知道如何實作,也了解可能會遇到的問題,這樣才可彌補專業上的不足。

  B、RD是否同時負責其他project?
    當RD同時負責其他project時,RD的時間安排就充滿不確定性,只要其中一個project出狀況,就會影響其他的project。PL要充分協調各個project,以確定可使用RD的時間。PL最好優先完成這類跟其他project共用資源的工作,降低其他project對自己project所造成的影響。

  C、該功能是否有其他RD一起合作?
    RD很容易專注在自己負責的區塊,而忽略與其他RD互動的相依性。例如A君在等B君開新的interface,才能測試開發,而B君的task schedule卻把interface放到後面才做,這樣A君就被B君卡住了。PL應該集合整個feature的上下游RD的schedule一起review,才能發現這類的問題。

2、人月不會變嗎?
  人月會變,而且隨時在變。PL不能死守schedule或死守人力資源不動,必須有隨時應對schedule變化的心理準備。幾個人月會變和schedule會變的原因:
  A、預估總有誤差,實作結果或快或慢所造成。
  B、外力介入干擾,例如requirement change、更高priority的project佔用資源、颱風放假。
  C、不確定因素發生,像RD生病、原本使用的solution因為新合約或侵權不能用了。
  D、人力增加或減少,需要重新預估人月。

3、人月成本高?換人做嗎?
  人月是不可等價互換,但是卻可以取代。A君要花三個月才能完成的,B君有能力可以在一個月完成,專業能力不同,所需的人力成本不一樣。也許原本是以考量培養A君能力,所以由他來實作,但當時間壓力更大時(如A君處於critical path上),是可以換B君來做的。

4、Schedule來不及了,加人吧!?
  人多是好辦事?還是人多壞事?其實考驗的是PL的project management能力。人放在對的位置,就可以效益(分擔的人月)大於損失(溝通、交接所需要的人月),PL要想辦法提供一個對的位置。如果PL找不到這樣的位置,最好放棄加人的想法。
  不過實際上人愈多代表PL的權力愈大,而project的人數通常又是用來衡量PL能力的指標,所以即使加入的人力並沒有什麼作用,甚至產生負作用,PL也會照收不誤。有些PL明明不缺人力,也會吵缺人力,甚至把project delay歸咎於人力不足,而不會檢討是不是project management的問題。不鼓勵大家把人力不足當delay的理由,這不能提升你project management的能力,而且當你的老闆不是容易唬弄時,反而會突顯自己的能力不足。

PL對project人月的管理很像運動會上的接力賽,不一樣的是,PL要的不是把最會跑的放在同一個賽道追求跑最快的成績,而是平衡8個跑道彼此的實力,讓大家在同一時間抵達終點。當然過程還是要確保大家仍然盡全力地跑出最佳成績。

說了一些觀念,再列出幾個PL應該要做的事:
A、想辦法切割feature,尤其是需要人月最多的feature
  切割是一個也是一個模組化的過程,切割是為了創造更多人力可以互換的可能條件,讓schedule的扁平化、最佳化更有彈性。而範圍愈大的feature、有能力做的人愈少的feature、跟別的project共用人力程度愈高的feature,更應該優先處理。

B、思考人力互換的可能性,專業能力和合作能力是重點
  人力互換其實就是要把人放在對的位置上,簡單的說就是在排接力賽的棒次。目的是要大家都能跑得快、不會掉棒,而且要8個跑道在同一時間抵達終點,PL是要好好思考RD的專業和合作能力的。

C、解決schedule和人力資源的衝突
  想要8個跑道在同一時間抵達終點是很困難的,即使你已經安排了很好的計劃,但是執行時仍會有衝突發生,PL的責任就是解決衝突,再重新安排好棒次,繼續往前跑。














沒有留言:

張貼留言