Triton Ho https://www.facebook.com/groups/616369245163622/permalink/1736421439825058/
今天不寫發大財的事,直接寫一下project planning的雜感好了。
——————————————————————————————————————————————————————
最兇險的專案不是那些deadline定得很趕的專案,而是那些沒有deadline的專案!
別以為「沒有deadline」是真的沒有deadline耶。
你想一下,跟你大大聲說「錢不是問題的人」,最終有120%是「反正我又沒錢,錢當然不是問題啊~」。
公司不是做慈善的,也不是給工程師來試新玩具的。所有的專案,最終還是要談C/P值。
(再次一句:工程就是來談C/P的,不談C/P請去當藝術家)
所謂「沒有deadline」,這很可能代表……
A) 你的主管現在忙別的專案管理,暫時沒空管這專案。
(然後等他有空回來看這專案時,就會問為何拖這麼久還結不了案了)
B) 你沒法拒絕其他人的需求改動。(背景聲:反正沒deadline,改一下需求去做得更好吧)
C) 你沒法有效限制專案的複雜性,大量的over-engineering。(背景聲:反正沒deadline,寫得好一點/多留一點空間,這樣子未來才容易維護嘛)
A+B+C的後果是……老闆過了三個月,突然有空來看看大家做什麼時,發現這專案已經過了二個月還沒有做完。
然後要求:都做了三個月了,現在再給你二星期時間來結案耶!
結果是:
要麼結不了案,投入大量心力的專案成為上不了市場的垃圾。
要麼是勉強能結案,但是有大量的over-engineering和一堆因為需求改了又改下不好的程式加構。
——————————————————————————————————————————————————————
雖然一堆入市未深的工程師整天會罵專案deadline為何定得那麼硬,一天都不能改……
但是嘛,先不談專案,我們談一下去旅行好了。
去旅行嘛,第一件事當然是跟公司申請休假,然後把信用卡丟給另一半叫她幫忙規劃(註:這是高度危險動作,好孩子絕對別學)。
http://xn--axxxx-fg1h292av9ap80aa49or2n76lzmxyz1bcr7i.com/,sxxxxxxxxx.com,txxxxxxxxxx.com上天天比價比優惠看旅行遊記的生活~
然後如果沒定下死線?應該我進棺材那一天還是在計劃行程中~
(謎之聲:某人站在你身後,她看起來很火……)
計劃行程的死線能不能改?當然不行,公司休假可是改不動啊!!!
回到公司專案,為何公司死線定得那麼硬,很多時候都是跟業務宣傳/合約罰款有關的。
你想像一下,一個手游專案要上市,當然不是先等程式完成後才慢慢宣傳衝人氣的。
一個遊戲要上市,當然是先定好上市日期,然後預先數月就要慢慢地製造話題,找人來做宣傳,一步一步炒熱氣氛。
然後人氣炒到最高點,玩家的期待度到達最大時,遊戲同步開賣大賺特賺那一波。
如果突然發現有bug,遊戲要延期一個月?
sorry囉,遊戲消費是不理性的,過了那一波熱潮,本來會付錢的玩家們早就付給另一個遊戲了。
讓話題多炒熱一個月去等bug先修好?
你以為是炒青菜,你想炒多久就多久嗎?
先不談熱度能否額外維持一個月還不消散。但是,高人流的宣傳管道,網上KOL,不是你想付錢就能立即買到的!
如果你沒法如期把遊戲上市,那麼你這個遊戲很可能就賠本賠很很大囉。
——————————————————————————————————————————————————————
專案deadline不能改,商業社會就是這樣子了。
追求要完美的,你應該去當藝術家不是當工程師的。
怎去在deadline前做完專案,固然跟你是否有留下足夠的buffering有關。
但是,這跟你的專案怎計劃也有很大關係的。
上古時期,有一堆人(CMMI)覺得,只要把文件寫得好,每一個專案把工序所用的時間都記錄下來。
然後你就能越來越變得成熟,能很精準地預估下一個專案所需時間了~
然後這些CMMI人大約會覺得:把台北的象山步道走100次,就能很精準地預估爬玉山攻項要多少時間了(笑~)
(香港版本:走城門水塘100次,就能預估蚺蛇尖攻項要多少時間了)
會行山的人都知道:
地圖/網上文章只能給你一個很基本的大概,一個路線最終要用多少時間/體力,你只能親自走一次才能答出來。
然後嘛……
很多表面上看起來相同的軟體專案,真正做下去時才發現是全新的未知領域……
——————————————————————————————————————————————————————
如果專案deadline不能改,那麼能改的就是:軟件的質素了。
以去旅行為例:
如果你有非常充份的時間,你買機票時大可以找不同銀行的信用卡優惠,看看飛行里數計劃,看看連同旅行一起訂的優惠……
如果沒時間,http://xn--skyxxxxxxx-rl5q.com/,輸入出發和回程時間,那一家最便宜就按下去算了。
一個能賣錢的軟體專案,正常應該可以再拆分為多個sub-task和milestone的。
重點:
首先開始做的,應該是最困難/你最沒法預估開發難度的工作。
A)
專案越早階段要改動上市日期,你能成功改動宣傳計劃的可能性就越高。
B)
越早發現專案進度不理想。之後比較容易的sub-task,你還是能以減少testcase coverage,刪掉不重要功能這些手段去追回進度。
如果你把困難而且必要的工作放在最後才做,那麼任何的預估錯誤就是專案延期囉~
(註1:一堆人覺得堅持一定要先寫testcase才能寫程式的……要麼他真的很幸福沒遇上過要衝死線的專案,要麼他活在童話世界……)
(註2:deadline前做不完的軟體功能嘛……如果不是關鍵性的,看看能不能當成bug再後補囉~)
——————————————————————————————————————————————————————
專案到底先做什麼:
我們以(重要/不重要),和(容易/困難)來給每一個sub-task排一下:
如果你明知deadline是完全不合理,你怎也沒可能把全部重要功能都做完,那麼就先做(重要+容易),在死線前能多做一個功能就多一個功能。
否則,先做(重要+困難)的。因為(重要+容易)的工作,常常是總有一點時間可以偷下來的。越近deadline,你越會珍惜你每一秒不做多餘的事。
重要工作全做完後,然後是(不重要+容易),在deadline前能做多少就多少。
(不重要+困難)工作嘛,讓他留在backlog算了。
——————————————————————————————————————————————————————
後記:
在只發了一篇文下,RDBMS課程普通票全賣光了
(謎之聲:你不是說五分鐘會搶光嗎?)
歡迎來買石虎愛心票耶XD
https://datasci.kktix.cc/events/rdbms20191005
另外,高流量雜感的淺談,定在10/10和10/11的早上9:30—12:00(二天內容相同)
請繼續耐心等候正式報名頁面……