2008年3月3日 星期一

第一次當PM的心得(一)

第一次當Project Manager時接手了一個比較技術性的案子,為什麼這案子會進我手中應該是我剛進入公司沒多久,所以太需要Domain Knowledge的案子也不放心給我,而且剛剛離開Consultant的工作,技術方面應該比同事熟悉一些。

這個案子沒有太複雜的UI,單純是User覺得在做工程變更時,確認變更的Item會影響多少物料清單(BOM)過久,這是因為的公司裡有數十萬的物料,然後有上百萬種物料關係,要在這可能上百億的排列組合中找出多少產品受影響,以及因應的變更,與檢查User所想要做的變更是不是"合理"跟一些檢查。

User反應平均要等5分鐘以上,遇到變更低階的物料甚至要等上半小時,而且做BOM表檢查又不是一定過,基本上需要重新修改的機會佔大多數,當時又剛好遇到RoHS大換料整台雙CPU且雙核心的Server被玩掛,大家通通動不了,User天天打電話來催工程變更再發不出來就要出不了貨了,我暫時用4-5台電腦分流去做BOM表檢查,先解燃眉之急。

我Study現行的方法,收集了一些數據提了一個Solution,然後估了一下所需要的man month以及所需時間,老闆也很阿撒力的一刀未剪給了我所有我要的resource,由於程式的開發團隊在大陸還飛了一趟大陸講解Project要做的內容。

我對我提的Solution挺有信心,以及那些工程師都合作過程度都不錯,所以還挺有把握的,我就沒把重心放在開發身上,想要試一些軟體工程的methodology。

提一下我的Solution好了,我發現
1.Disk I/O太高,原程式用到很多temp table在DB中處理暫存資料,這temp table中的資料不算大,但是會一直被反覆讀取。

2.當多人同時上系統做BOM表核對時會有些table lock。

3.衍申一個問題是,當有人在做BOM表核對時整台Server的cpu會被吃得差不多,同時間的線上user或是別人也要做BOM表核對時就會很慢。

我提了以下的Solution

1.分散架構,買三台機器將需要做BOM表檢查的動作導到別台Server去,不要影響線上User操作系統,這方法也同時解決table lock的問題,各自檢查完再透過DB把資料一次送回來,減少Long transcation lock。

2.做一個Cache在記憶體中,取消現型用temp table的方式,記憶體的存取速度是電子式的,比硬碟讀取的物理性動作快多了,只要記憶體夠大能撐的住這temp table的資料量,我算過錯錯有餘。

3.做一個深度優先的遞回演算法提升程式效能降低複雜度。

4.還有一些零零總總的小調整。

雖然系統上線後user很滿意,快了多,不是太大的BOM表變動幾乎接近即時,但是對我來說不算是個成功的Project。


沒有留言:

張貼留言