顯示具有 工作與軟體 標籤的文章。 顯示所有文章
顯示具有 工作與軟體 標籤的文章。 顯示所有文章

2008年7月2日 星期三

職業倦怠症發作

不知道為什麼最近總是懶洋洋的上班提不起勁什麼都不想做其實除了系統出事急救或是開會時提供技術意見還真沒什麼事就算有事大多都能很熟練的處理掉

這份工作也做了3年多good pay, good teammate and free 我對這家公司也沒什麼好抱怨的只是每天做一樣的事情做三年多有點受不了帶概需要個長假我也很久沒有出國或是旅行了

希望過一陣子上班情緒會好一點

2008年6月27日 星期五

超強的女同事

前陣子自己的電腦中毒,花了很多時間,以及用工程師的名譽跟他拼了

弄了三四小時,我對那隻病毒舉手投降,他會自己重生,我ㄧ整個怒了,當我用防毒軟體掃到他後,管它是不是在system下照殺,但是他還是會無限重生

我懷疑他藏在某個已經register的service中,動態的寫出那個病毒

拿去公司跑去找MIS,用一點私人關係找人看一下我電腦

結果他們說你去找Helen

我就拿我電腦去請這位巾國英"雌"幫我看一下

她露出小case完全不使用防毒軟體直接看,下一堆我沒用過的DOS指令,還有直接看一些16進位32進位的東西

跟我說他要一點時間等一下好了再拿來給我....拿來給我時說

"救活了!!快跟我說好厲害好崇拜" =.=

我回去跟同事說,公司負責病毒的怎麼會是女的

我剛剛找她救命時一整個不習慣,通常都是女生來找我救命

沒想到我淪落到要去找女生救我的電腦(我沒有瞧不起女生的意思只是一整個怪)

在我們這男生多如公狗的科技公司,要是有研發工程師看上她,是要一直裝中毒當藉口去找她救嗎??

這面子不是很掛不住嗎??只會顯的自己功力差,也許是我多想了,也或許利用她刺激其他人的功力提升

有一次發現該女同事穿著java two還是java one的研討會紀念服,她不是做防毒的嗎java關他屁事,後來跟她聊天時發現她的java功力也很好,連PMP國際專業經理人證照她都有 Orz

前幾天我們team系統掛掉請她來看一下,連一些.Net IIS一些設定 Visual Studio她都了解

這...............讓我不知臉要放哪裡了

我知道錯了我會再努力一下技術,不要只會跟user打嘴砲

有時防毒軟體比病毒還可怕

這故事要從前天說起

前天又被表了一次已經是第三次了

忽然有User不能用系統,我查了半天找不出我們系統有任何變動,而且狀況並不是所有人,只是有些人,但是這些人也為數不少

手上還有一些案子在處理,但是也沒辦法,弄了一整個下午後忽然mail box中有一封mail某部門公告請全公司配合更改一部分的個人網路設定,那個只會說"不知道,不清楚,不可能,不關我的事,不是我管的"的部門又在沒支會其他部門下改變了一些網路設定與TrendMicro services

看完mail我去找鄰近有問題的user電腦改變了一些網路設定就好了 =.=凸

我ㄧ整個下午就這樣沒了,一個人倒楣只有這樣一個下午而已嗎??而且目前與標題還沒扯上關係

處理完後跟boss念了一下這件事,如果明天很多user依照那個網路安全設定那個設定會妨礙我們現行single sign on的function,web在透過IE取得電腦的Domain與user ID做權限認證時會有一些問題,不過我也提出了一些solution,但是須要更改我們系統的程式與設定,我老闆也是一臉無奈對方公告都發了,明天只好請值班的同事有心理準備接一堆電話(還好值班不是我)我老闆也跟處長反映了這件事,不過我能做的就只能盡快修改系統不跟這設定衝突

隔天一到公司我已經打算手上的案子先不要做,先處理這個比較急的事情,到了公司電腦才按下power就被叫去開會,看看該設定影響多少系統(他X的你改完出事後在看看影響誰,你是這樣做事的喔)有些系統的機制相對安全,拉近進端網路就好了,他們也依據對我們的影響再改他們的網路設定,不過我們team的系統比較複雜internal user,external user,跨domain user都有,所以我要改系統已經是無法改變的事實

來不及吃早餐開完會後買了一杯咖啡就開始改程式

邊改就邊聽到做我旁邊值班的同事在哀嚎,影響範圍越來越大了,越來越多user打電話或是寫mail來問,再過了幾小時後捷克那邊的同事開始上班了,發現完全進不了系統跨Domain引響似乎更大,有些經理也打電話來反應customer無法進入系統,希望我們趕快改好

我改完後噩夢正要開始..................

在同事歡呼我改完後就利用中午user比較少的時間把系統下線,放上我的新程式與設定

怪事發生了,程式無法由測試環境搬到正式環境,搬到一半就會出現一個_desktop.ini的程式在使用中,無法複製 @.@

我先查了一下系統哪裡用到_desktop.ini,我的web service應該沒用到,最後決定殺了他再做資料搬移,怪事越來越多,殺不掉也不能移動這時在想也許IIS的web service有用到他

先把測試機的IIS停掉好了

.........還是殺不掉 ...><...

試系統重開

"看"還是殺不掉眼,看著午休時間過了趕快在把系統上上去雖然有些人不能用但是總比全部人都不能用好

在大家束手無策的狀況下我同事說,那我們人工搬程式,建立一個相同的資料夾結構遇到_desktop.ini的通通跳開不要選到,在花很很多時間跟眼力看到眼睛都快花了,終於整理了一份乾淨沒_desktop.ini的程式

在淪陷範圍越來越大已經無法等到下班在上code的狀況下,最後還是在上班時間把service停下來把整理好的那個乾淨的程式放過去

見鬼了怪事發生了

_desktop.ini他又來了

這時我們懷疑中毒了,只要一搬移我的程式出現_desktop.ini該folder就被鎖住不能搬移,不能殺掉,不能rename

最後我們所有的source code都被鎖光光,沒有人有能動的source code

趕快找負責病毒的同事過來處理(該同事是他們部門中我唯一欣賞的人物,也是個奇怪人物改天再來寫這個人物)弄了半天那位同事從一臉看我表演吧的表情變成這是什麼鬼東西的表情,打電話給TrendMicro,log了一些資料給TrendMicro分析,TrendMicro說分析那些資料需要一點時間,看樣子系統無法短時間修復這麻煩大了,連不知道被公司流放到哪一國的處長都打來關切,我們發了一封緊急公告說中斷服務盡量在明天上班前修復

跟其他同事開玩笑說趕快跟自己的交易員連絡一下,要是救不回來明天一開盤趕快把公司股票脫手

這時兵分三路
一路趕快架出臨時環境
二路看是否能透過之前的系統備份還原之前的系統狀態
三路查出問題

人在倒楣時什麼事情都不順

一路 台北的source code都被鎖光光,所以我們請大陸的開發team從VSS拿出一份code在自己的NB上compile好,做好一個環境,測試一下然後寄來台北,我們挪一台機器來架臨時的service,結果在對方的NB上都compile好而且都work了,寄來台北的server時又被鎖,但是他們在大陸傳來傳去卻是沒問題的,我就說那能不能架在你們哪邊我們再用DNS改到你們那邊去,他們說好,過半小時後打電話來說因為已經是下班時間,找不到人也借不到server,只有他們的NB可以用Orz

(OS:最好你的NB可以撐得住線上可能同時上千個user)

不過沒魚蝦也好就先架好放著,如果到時真的台北救不活那就!@#$%^&*()..........

忽然想到螳臂擋車的成語,如過真走到這一步賣股票就不是玩笑話了

二路請機房管理員做系統還原時對方一直囉哩囉索,一直問為什麼,有沒有掃過毒,有沒有重開機,為什麼要還原,沒有別的方法嗎??還原資料會不會漏

花了我一個小時解釋狀況跟他溝通他才說他去試試看,看完在看看怎麼處理一下

(OS:你把我們一群人搞這麼久當白痴嗎)

也許他有他的考量但是繼續浪費時間跟他溝通太浪費時間,我就說你試試看吧我就去處理其他路線的solution,在他試完後就說網路上說他是病毒然後OOXX了一段時間,我就跟他說我們跟TrendMicro與專門在做防毒解毒的同事做出的結論該ini檔只是一個單純的文字,不是病毒,他並沒有呼叫任何執行檔,或是library不過他還是堅持懷疑他是毒,不過他終於願意做還原的動作,我也就暫時不想跟他繼續討論病毒的話題不過這時已經快半夜了(還原後我還不知道能不能work, 而且如果用系統還原也會牽扯到Cluster要重設的問題,又要一段時間)

三路在TrendMicroc回報不是病毒後整個解法陷入束手無策,這時我忽然想到公司那個"不知道,不清楚,不可能,不關我的事,不是我管的"的部門有跟Microsoft有簽primary support的合約,我去問負責聯絡Microsoft的人,他又繼續發揮"不知道,不清楚,不可能,不關我的事,不是我管的"的工作特性一直問我

"你們問題很嚴重嗎" "影響範圍多大" "啟用這個服務要老闆簽過喔" "你有沒有確認你們真的解決不了".........

我壓著脾氣跟他溝通

"這問題已經造成service中斷了還不夠嚴重嗎"

"我們OO老板,XX老板也已經知道了,也說如果要發mail過去通知你老板,或是有什麼公司流程要跑也都沒問題趕快處理"

他還是在給我打官腔,跑來試了一堆我們試過的東西,我又花了一小時解釋,再把我們當做白痴ㄧ次,在他解決不了時,正好有其他部門同事來問這問題,他擔心他們也會發生然後說

哇!!你們的service如果中斷到明天工廠可能出不了貨了,PM/RD可能都不能做事,好嚴重喔!!

(我覺得這是該部門同事故意把嚴重性故意擴大,有那種出事你扛不了的味道)

這時他才驚覺嚴重性

(他完全不知道我們系統對公司營運的重要性,還以為我們系統可能只是辦公或是人事在用的)

他就趕快去打給Microsoft,過了一會Microsoft Technical Support Center打電話來

(大陸口音看來我們很多工作機會又被大陸搶走了)

一起群醫會診,他透過IE就可以直接操作我們的Server

(Windows的漏洞有時候是他們本來就預留的)

最後弄半天答案揭曉..................一切都是防毒軟體搞的鬼

(這是Microsoft的說法,不過事後TrendMicro說_desktop.ini並非他們所產生,但的確是他們鎖的)

把OfficeScan的service停下來_desktop.ini就不會產生也不會鎖住(整個解法細節不贅述我不想寫技術教學文件是抱怨文)

最後終於在凌晨時把系統重新做好..........累,一整天只吃了一個漢堡

今天下午才進公司,實在是太累了,主要是扛著如果出問題公司不知道會損失多少的心理壓力下工作,有一個同事還直接累到請假不來了

到了公司就開始回一些官腔文件,寄一些Microsoft給我的report轉給其他單位,寄一些感謝文之類的mail,還有繼續追蹤問題,Server上沒防毒是一件非常危險的事要趕快把OfficeScan重新啟動最後最後那個"不知道,不清楚,不可能,不關我的事,不是我管的"的部門改了一些設定這問題後來就好了,OfficeScan也可以重新啟動才把這懸案解決

這是我第三次被那個部門表到,更更更更更更~~~~~~~

雖然今天公司股價跌2塊多...不過我確定且光榮的說這不關我的事

2008年6月21日 星期六

我心中未來的軟體公司

這幾年來的工作忽然有個想法

為什麼軟體工程師要常常加班,是我們能力不足嗎??我想答案是否定的。

在大學時宅男何其多就奠定了我們台灣資訊業的強盛,我個人也認識非常多強人,三更半夜不睡覺在寫成程式PK,看誰對某問題解法最快,只為了程式比人家快個0.0006秒的差異。

那為什麼軟體業的工程師要常常加班,如果不是個人能力不足那就是公司的管理問題。

台灣早期是(現在也是)製造業起家,管理製造業非常有經驗。

但是軟體業能套用嗎??在製造業多少工廠,多少產線,多少原料,多少工時,產生多少成品。

軟體業是完全不是這麼一回事,一個強者可以抵10個一般工程師,精神不好三秒鐘寫錯一行程式碼可能消耗三天man day才能解決,我今天心情好如有神助,我今天大姨媽來什麼都寫不出來。

像我在咖啡廳有正妹看寫程式如有神助,但是坐在辦公室跟宅男相望靈感就是斷斷續續。

我常常在想每天搭車上班下班大概就要2小時,再加上可能要點時間集中精神,這無效工率大概是3小時,3小時ㄝ!!!如果專心做事三小時常常可以抵的過我一天(甚至更多)的產值。

我可不可以在家,或是到我喜歡的環境工作三小時,製造出我該有的產值,然後公司讓我休息8小時的上班時間。

答案是否定的,目前似乎沒有這種公司

如果有機會我希望能透過科技的方式來達到這個夢想,網路科技已經發展到這邊,只要有腦袋有電腦有網路就能工作,我們可以透過網路找資料,透過IM跟team member溝通,聲音,影像,開會,文件,這些問題已經不是問題了,希望管理方式能像科技一樣不斷更新

最 近跟學弟們組了一個開發團隊,我希望就由這個團隊來例行新的專案管理模式

我有個夢想成立一家公司,員工一週只要來2-3個半天就好大家到公司來只是來交作品,來開會,來打屁,來玩的。

開會定出來的schedue大家記得deliver這樣就好,用大家交出來的東西打KPI,我管你怎麼上班的,只要你有on time 而且有quality。

希望這個團隊可以往這個方向前進。

P.S. 如果租一個辦公室員工只來兩三個半天也是很沒效率的,所以我希望是一個可以跟咖啡廳結合的辦公室,平時還可以賺賺咖啡錢,也可以四處看看正妹客人而不是每天都是一群宅男大眼瞪小眼的寫程式。

2008年5月20日 星期二

Android 落選感言

這次Google phone程式設計比賽的作品多的遠超過我的想像,1700多件作品參賽真的讓我見識到群體的力量

我們的作品沒有進前50名,我收到的mail是說我的ranking是前50-25%,算了一下如果要進前50名大概要前3%才有機會

其實寄完我的作品後,去android開發區看看全世界其他開發者的作品時,我就覺得凶多吉少

有些作品超有創意,搭便車系統,真實地圖RPG遊戲,利用鏡頭拍商品條碼馬上幫你上網比價,怎麼看我這名片管理系統都要靠邊站,只能用於商務場合。

搭便車系統:


線上比價系統:
計程車呼叫系統:

我輸的心服口服,不過還贏8-900件作品還是挺驕傲的,而且我本來就不是開發手機的工程師只是業餘玩玩。

2008年5月5日 星期一

My experience of RMI (Remote Method Invocation)

趁著這幾個月沒案子玩了一下RMI這技術

一開始是想把我管的系統效能調的更好,手邊也正好有一些被人遺忘的閒置機器

想到了Distributing computing,把某些比較消耗performance的動作丟去給閒置的機器處理

有了這個想法後翻了一些文件,找了一些solution,也請幾個工程師一起study,討論了一下可行性就開始implement,由於我們的系統是C#.net所以使用的是微軟的solution。

程式開發上還算容易,也不需要處理stock之間的問題,而且我要的只是一些演算的動作,資料在DB中所以我也不需要處理data傳輸,直接trigger remote object 去DB抓data出來算就好,應該是一個easy job。

大概只花不到一週就做完了,以後就可以發揮螞蟻雄兵的實力不用買高階的機器或是一直系統升級,不過有一個小小的缺點。

管理上有些小麻煩當分散越多台時管理上會越麻煩,雖然我已經把設定寫在web config中如果需要再加機器進來一起計算也不需要重新deploy,但是還是要在被分散的server上做一些安裝小程式跟一些設定。

不過我想這還是優多於弊。

2008年4月17日 星期四

有技術能力的PM與有嘴砲能力的RD

PM最重要就是管理協調協調最重要就是溝通溝通的精神就是嘴砲

RD最重要就是研究開發研發的根本就是學習學習的成果就是技術

我認識的很多工程師大部份越厲害的RD跟人溝通越困難因為他們擅長講機器的語言

幾年前接到一通電話有一家公司問我要不要跳槽他們公司
他們最近案子不少缺不少人有一缺是要個有技術能力的PM

因為我之前去他們家去面試RD時
第1關聊技術技術沒什麼問題後第2關是跟他們副總聊天(我是有錄取不過我最後沒有去)

電話中那位副總說跟我interview時對我印象深刻
,覺得我溝通能力很好不像很多工程師在跟他溝通或是跟客戶溝通都有點問題,跟一般工程師不太一樣

最後我還是沒去,不過也幫他介紹一些他想要的人才反正山水有相逢做點人情給他順便幫朋友介紹新工作

我心中默念~~我是有嘴砲能力的RD阿!!!!!!
(大概是我技術不夠強吧哈~~~)

勞碌命

人真是一種犯賤的動物尤其是男人

前陣子手上兩個project在round還參加了google手機的程式設計比賽每天都抱怨好忙

最近案子都做完了手機的程式比賽也交件了這兩天上班一整個空虛看股票逛別人的Blog上一些技術討論去跟別的工程師打嘴砲這日子連過三天我實在是快瘋掉看樣子我真是勞碌命

偷偷帶了一本投資的書來公司看(一個投機者的告白之金錢遊戲)結果處長不知道重哪一國飛回台灣我坐位是他進辦公室的必經之路看工業工程管理或是最新IT技術文件還說得過去看股票的書就真的掰不過去

處長趕快再飛出去吧!!雖然我一年看不到你幾次但是我一點也沒有想念你我不想做在位置上發呆阿

2008年4月13日 星期日

Android 參賽作品 Business Card Management(BZCM)

花了幾個周末跟下班時間跟學弟們搞了個東西出來比賽還有點小爆肝一直撐到最後一天才把系統文件補齊廢話不多說來開始介紹我們設計的系統----名片管理系統

Features

When you have 2-300 business cards, how do you manage your collection book of business card? If you often encounter:

Ø Could not find an important customer information after searching collection book of business book for a long time.

Ø You usually have no chance to exchange name card with your new customers.

Ø When someone say hello to you, but you forget who is he or she.


On earth, a lot of trees are reducing and carbon dioxide is increasing. If everyone uses electronic business cards, we will significantly reduce the use of paper. As a member of the Earth, we have responsibility, obligations to defend our planet.


BZCM card management system will be an integral part of your mobile phone functions. To use BZCM creates our own convenient environment, and also contribute to the Earth's health.

Name Card Folder Digital exchange of

business cards


BZCM can classify name BZCM can exchange each


cards according to NAME. other's name cards from


COMPANY.GROUP etc. and Bluetooth or Mail.


is convenient to access.

Electronic business card Secretary of digital


can press the phone number business card make your


to dialhyperlink to the memory better.


web page

BZCM let you click through BZCM allows you to

the electronic card's record in telephone number and website electronic business

address to fast find your card on each other's

products infomation, or let preferences,habits,

your friends know more about special experience.

you or your company. Even You do not have to

if you feel that the trouble to forget

information is not enough or mistake other

to represent yourself or people data.

company, you can set the

link to your blog, or the

web site of your company.

So at any time can visit

the website.

Google Talk

You can use Google Talk

through BZCM to talk,

chat with your friends

and relatives everywhere.

Operation Guideline-how to get into BZCM card system

Fun.1 Create Personal Business Card

Fun.2 Group List Creation

2.1 Add new Group

2.2 Divide business card into different groups

Fun.3 Classification Sort Display

3.1Order by Company

3.2Order by Group

3.3Order by Name

Fun.4 Personal Data Memo

4.1Set Note

4.2Show Note

Fun.5 Electronic business card can press the phone number to dialhyperlink to the web page and send mail

5.1 Business card to dial

5.2 Hyperlink to the web page

5.3 Edit and transmit Mail

5.4 Use “Google Talk” to talk everywhere.

Fun.6 Exchange business card by cell phone.

6.1 Exchange by “BlueTooth”

6.2 Exchange by “Mail”—expect to implement two months later

6.3 Exchange by “SMS”—Future release

Fun.7 Examples of using occasion

7.1 Forget the related information of customers—Using “Note”

7.2 Business card data too much—Using the classification function

Appendix(For testing reminding)












連接Gtalk是我認為最難搞定的....m3版本是使用XMPP , m5又被大改名....很多東西讓我調了很久

太多圖我懶的貼.....知道一下有這些功能就好了, bluetooth也寫好了...匯入匯出也可以了....不過目前android的bluetooth還沒完成, 抓不到device所以無法測試





2008年4月8日 星期二

Google challenge and Android

這陣子閒來無事工作上沒有什麼挑戰性與讓我感到高度興奮的工作也許我是勞碌命吧!!很多人巴不得想做我的工作但是我卻覺得我可以做更多不僅於此

看到Google在推手機的服務還舉辦了一個比賽我就熱血了長期以來手機平台一直是Microsoft的世界Google推這個免費的手機平台android明顯的是要將他的網路服務由E化做到M化甚至是U化換個角度而言Google如果不找到新的Business model對營收會有很大的問題因為Google做了很多理想跟服務大眾的事光是靠網路廣告的收入應該很難再讓他的企業更上一層樓

剛好我這幾年是在做PLM(產品生命週期管理)Google辦這比賽很明顯是為了要讓他的產品開發時程縮短以及Time to market讓全世界的工程師來當他的QT讓全世界的工程師來一起研發他的產品甚至是幫忙下游廠商培養開發的工程師這真是一魚三吃好計這一千萬美金的獎金效應遠遠大於投入一千萬美金做研發

某程度而言也是Web2.0的精神吧!!只是一開始開發時欲到不少問題讓我有當白老鼠的感覺

扯遠了總之我找了幾個學弟一起私下參加這比賽原本我是想做Calendar與檔案管理的結合目前的所有檔案管理都是tree structure的方式但是人類的思考應該是比較像Time line的我星期幾做了什麼我上週三去美國玩拍的照片我星期四寫的文件等等

讓檔案管理更直覺一點的這idea做了2-3星期便告失敗有些技術上的困難點以及比賽時間的壓力我沒有時間慢慢學習我就又想了一個名片管理系統想要取代目前的名片也讓大家交換名片與管理名片更方便也少砍點樹來製作名片

這沒有什麼技術上的難度study與coding主體架構以時間換算下來我大概只花不到1-2週的man day就完成了反倒是管理問題與設計周邊的支援花了比較多時間有機會我再來寫寫這一段

2008年3月3日 星期一

第一次當PM的心得(二)

現在來解釋前一篇文章為什麼我覺得我的Project沒有成功

之前在Local的軟體公司工作快兩年
一直深深覺得身為軟體人大家的腦袋應該比很多行業都好一些那為什麼有那麼多班要加 ? 是我們程度不夠嗎 ? 如果加班是加在有Value的事上我還沒什麼話說但是常常是在瞎忙Project schedule的不合理scope的不明確管理者用製造業的心態在管理軟體業........等等問題

後來除了專業技能外我也花了一些時間在研究軟體工程
念了幾本有關軟體工程的書人月神話(The Mythical Man-Month: Essays on Software Engineering)最後期限(the deadline)以及Study RUP與Extreme programing...等等的一些方法論

在一個我可以作主的Project中
我就很積極的想把一些想法落實在方法論中我選擇了Extreme programing為什麼選他呢 ? 因為我對UP的開發模式覺得太龐大了要花不少時間也許開發產品或是長達半年一年的大案子選擇UP是不錯的方式至於做中小案子速度跟靈巧很重要而且我對Agile的理念很多都很認同尤其是減少垃圾文件的產生與測試先行等等概念

我花了一些時間找資料以及上一些技術論壇網站與前輩交換意見架了一個站使用Xplanner來做為這次使用Extreme programing的管理工具去大陸前還跟老闆報告我這"幼稚的雄心壯志"老闆也給了我一些意見

我心中滿是樂觀的看待我這軟體工程的導入看是不是真能提升品質減少文件以及減少溝通成本

漸漸的管理失控了我歸類下列原因

1.習慣性: 大家都習慣透過mail電話作溝通要工程師"主動"上系統看有哪些item要處理然後點選開始處理等到做完後還要進系統塡上Close工程師覺得麻煩沒有這個習慣

2.管理層面: 我們公司是採用矩陣組織(Matrix structure)該軟體開發部門要support來自很多不同事業群的案子如果只是做我的案子就要適應我想要的開發模式每一個跟他們合作的人都提一個開發方式那麼該單位的人就會被玩到死所以對方的意願沒有很高這種模式應該是由他們部門內部發起比較合理

3.我的經驗不足當: 一開始出現問題時我沒有很堅持第一個Iteration做完還算可以但是第2次Iteration時開始就有一些工程師沒上系統或是沒有回去增加他的test case寫test code直接開發起來開發到一半我才發現但是我為了進度妥協了沒有強硬的要求他們馬上回去補那些test case造成test case有缺所以沒有測試碼的那些case就人工測試

大家都知道案子做完大家拍拍屁股走人叫工程師回頭把人工測試的部份補上測試程式是很困難的所以我理想中的將來要是有修改就不用人工測試把測試碼run一次就好的美夢並沒有發生

雖然專案是成功但是軟體工程的導入某些方面是失敗的不過這次我也是學到了不少

第一次當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


2008年2月20日 星期三

微軟的VSTS(Visual Studio Team System)能有多少發揮呢?

最近公司要打算導入VSTS把IT的某個開發Team拿來當白老鼠,基於一些理由我也就需要研究一下VSTS在玩什麼把戲

看完一些他的教學文件跟產品介紹文件
,我其實是非常同意他的遠見,他是想做一個系統開發平台,建立一個Team Foundation Server然後不管是開發人員架構師測試人員DBA、Project Manager通通在同一個平台做事,然後他再提供各個專業人員所需要得工具,讓大家協同合作,還有內建的一些軟工的流程可以套用,落實開發流程,進一步自動產生一些有用的報告或是"Real"的報告讓Project Manager真正掌握開發進度

我想以上是他想要完成的目標,再細部的往下研究一下

VSTS他並非使用UML的語言而是DSL(Domain Specific Language),他提出的理由是UML太過抽象是否可以應用在不同的Domain我們是不是應該因應不同的Domain有不同的語言所以DSL還有提供讓你定義你自己的DSL,他也提出了一些學術上的論點找來當初制定UML的人來幫他背書

我沒用過DSL也沒有裝來畫畫看所以我無法評論,但是我想很多人會有跟我一樣的想法"搞什麼又要來一個規格之爭嗎"好不容易花時間學會了UML,結果你要我用你自己定義的DSL,我又要花時間學DSL,然後只For你的VSTS,這樣實在是!@#$%^&*(這也是我沒裝來畫畫看的原因)不知道是不是我有所誤會說不定是共存讓想用UML的用UML想用DSL的用DSL這樣比較make sense如果是強迫中獎這樣我想很多人都很難接受。

接下來分享的部份是我認為比較有價值的部份"軟體工程"

我相信在軟工的世界沒有什麼Best Practice
,所以目前才有這麼多派系之分,不同公司不同文化不同案子都可能產生公司自己的Best Practice,這次微軟提供了微軟自己的MSF(Microsoft Solutions Framework)你可以用微軟開發軟體的方法論來開發自己的軟體,微軟也號稱這套方法論在微軟內部已經從1994年使用自今(不知道大家覺得微軟的品質如何)這MSF涵蓋了CMMI Level3也讓你對未來Level4Level5做準備。

如果只是這樣我想大家會問他跟RUP沒什麼兩樣阿

重點來了我覺得最吸引人的有兩點

1.他也讓Agile同時存在在Anile部分他提供了MSF for Agile Software Development微軟從Motorola找來Agile社群中的David Anderson來操刀,讓兩種方法論都可以在VSTS上使用,但是這還不是最新引人的,最吸引人的是你可以客製化你的流程他只是提供你最極端的兩個範本,你可以依據自己組織的需要調整你自己的開發流程,微軟也宣稱會繼續update各大學派的方法論範本給大家下載免費使用(當然VSTS是要錢的)。

2.文件管理部份由於VSTS是系統協同合作的,很多報告可以由系統自動產生,讓不愛寫文件的工程師工作量減輕不少(我也不愛寫但是有時又是非寫不可),再者我之前提到的"Real",很多人都有經驗明明你手上的程式只完成30%但是project schedule是50%,你在report中要寫多少 ? maybe 40%也或許你認為後面的開發速度會突飛猛進cover現在的delay而填上50%,導致Project manager拿到錯誤的資料做出錯誤的評估你也浪費時間寫出一份讓人有錯誤評估的report

遇到這狀況
我還寧願不要有這份report讓工程師專心寫程式。Project Manager透過Project manager的工具連上server看看目前完成度或是直接選取所需要的資訊。

至於DBA版本控管還有測試方面市面上已經有很多工具,大致大同小異就不多做介紹接下來就是讓市場跟時間來證明他了。

2008年2月18日 星期一

台灣軟體市場之我見

經濟部工業局預期公元2010年,軟體工業產值達350億美元,年平均成長率25.6%,看似塊大餅,事實上呢?

進入軟體圈有好些年了
,我扮演過合約中甲方也扮演過乙方,我抱怨過Vendor每次案子都delay,bug一大堆,我也私下埋怨過Customer,搞什麼當我是市場小販,買菜還要送蔥,案子廉價時程短還要我免費做Change requirement為什麼沒有一個Win-Win的solution
先從市場來看,工作這幾年看到的案子來源多是這三類

1.政府標案 2.
中小企業3.大型企業

第一類政府標案算是比較好做的
,我曾經做過一個只是為了要消化預算的,當業務拿到這個標案時,我想了一下要做的東西跟要go-live的時間,這根本是不可能的任務,心中滿是怨念的加班,後來快要到UAT前幾天(程式只完成50%左右,而且這種根本沒時間好好設計的東西,誰知道testing跟debug要花多少時間)才知到原來對方是要消化這一季的預算這UAT是假的真正要上線還要半年後只是專案經理不告訴我們,大概是想測試我們的潛能,最後這案子有沒有結案我是不清楚(不過我確定開發的錢收了),不過當時的專案成員大都離職了

也許是我比較倒楣遇到這種案子,我聽聞我朋友的案子大多做的很愉快,案子預算不錯,結案標準也很低(我看過交給客戶的文件跟系統根本是兩個完全不一樣的東西),反正做不完或系統有問題後續再來簽維護合約,只要公司關係夠好,綁技術資格標,案子自動源源不絕

很多接這類型案子的公司不太有真正的市場競爭力,導CMMI只是為了拿到標案資格,絕非要提升軟體的管理

第二類的標案是賺辛苦錢,中小企業的預算通常不高,在這成本有限的狀態之下,通常是價低者得,在這利潤已經是很微薄的狀況之下如過忽然來個Change requirement或是Delay,這案子大概就賠錢了。而且這類Customer多半沒什麼開發軟體的sense,常常開發到一半提一些有的沒的,風險度頗高

第三類是我認為最有價值的,但是常常看的到吃不到,為什麼呢
這些前幾大的科技大廠通訊大廠或是大型銀行(也許還有其他的)預算通常很高,只要你能做出他們要的東西滿足他們需求價格通常是很好談,那為什麼吃不到呢?因為不信任,為什麼不信任,這是經驗問題

當你再公司跟CIO提了一個idea
、或是公司的客戶提了一個新的Business model需要系統support。老闆approve了,給了你足夠的預算、足夠的資源,你透過一些survey找了幾家公司來present,這些公司做小案子做慣了,為了拿到案子低價競爭給了你一堆promise簽完約後,你沾沾自喜的覺得幫公司省了不少錢,這個案子有表現到升遷有望,在Project kickoff meeting也許還好,越到後期發現對方投入的資源不如預期(因為低價搶標加上Vendor資源有限)案子開始Delay,各種奇奇怪怪不可預期的事情就發生了我列舉一下我遇過的:

1.Vendor這家公司手上有4-5的case同時在run某案子的違約金很高,把人都調去支援那岌岌可危的案子

2.Vendor自以為做過幾個類似的case放在公司的首頁,被你找來沒有瞭解你真正的需求什麼都說ok拿到案子再說,然後你就像在Training一個新的開發團隊一樣,教會他們你的Domain就花了一堆寶貴時間

3.Vendor在有案子時才在找人也許一兩個人有這類case的經驗但是更多人是freelancer,如過是技術夠好的freelancer算你運氣好,我看過找java做.net還看過SD是JAVA高手但是不懂.Net的東西所以所有的COM元件Data set等等東西通通不用全部自己重寫物件包了又包轉了又轉

4..Vendor已經有產品了也有賣給一些中小企業的經驗,所以自以為只要客製化一部份就好了,開發時很順利,真正到System integration或UAT時才發現當初的產品根本沒有考慮到國際大廠的資料量,系統過慢造成他的產品需要rework的時間

老闆給你足夠的資源了,你完全沒有任何Delay的理由,而且面對Sony,IBM等重量級的客戶你Delay看看,以後你還敢跟本土軟體廠商合作嗎

導致這些公司只跟原廠合作,這些原廠報價常常讓我傻眼某世界級軟體公司光是一個技術諮詢服務合約(包含幾次的隨Call隨到服務)就報了一年幾百萬來,不過公司都當作買保險,人家貴但是也是有做出些品質來

也許又是我比較倒楣但是這種事情不只我遇到我看我同事或是同行遇過更多千奇百怪的狀況。台灣的軟體業大家加油吧。