星期三, 3月 05, 2014

系統工程師的感想

  電腦是用邏輯做出來的東西,所有電腦上的系統/軟體,也都是用邏輯做出來的東西。在人跟人之間會有很多黑白地帶,做事情不需要太拘泥於程序與邏輯,然而在電腦上沒有黑白地帶,不是True就是False,因此邏輯、程序、流程就非常非常的重要!做一位Computer Engineer,自然也是要遵循這樣的原則。
  
  然而,華人太聰明了,簡單來說,總是不會按照標準程序來做事情,明明在分工上,不同Layer的工程師負責不同情況的事情,我相信這是可以讓事情被有效解決的方法,也許不是最快,但是是有效的,看起來一切按照程序來走,按照標準流程進行,好像很笨,很沒有效率,在出問題的時候,客戶可受不了這樣的等候,我們一線工程師承受的壓力會很大,公司PM承受的壓力也會很大。這時候要做的,還是一樣照流程跟手冊來進行Troubleshooting,我們第一線工程師擁有的資源跟技術能力無法處理的時候,拉進來更高Layer的工程師,和他們一起來處理問題,他們可以跟R&D之間來回,真的找到了bug,再交由R&D來修改程式,出Patch。但我們也可以同時走此流程,同時還用盡了過往的經驗,Hacking into product/system, 只為了讓事情有更進一步的進展,花上了大把大把的時間,作跟Layer 2 或是 跟R&D一樣的工作,只為了要盡快解決問題,通常來說,最後問題還是要交由Layer 2 and R&D來解決,我們花的時間,是讓正確的人來解決問題的時間的十倍,但是這也養壞了客戶的胃口。

  當一切沒了規則,一切沒了程序,慘的是第一線的工程師,餐餐不正常搞壞了我們的胃,熬夜不睡埋頭苦幹爆掉了我們的肝,然而事情最後大多還不是由我們來解決,不是因為我們程度差,而是因為所有東西都有專業,資源也差很多,交由專門負責的人來處理才是最正確的方式,當公司不夠力,無法像總部/原廠施壓,讓正確的人撥出時間來處理緊急問題,那不是我們第一線工程師的問題,也不應該由我們用近乎盲目嘗試的Try and Error來解決問題,正因為到最後,會有問題,通常是產品在設計上就有了,沒有完美的產品,所以我們需要R&D--這個產品的設計者來修改,只有他們才能夠"修改程式",解Bug。

  不該我們第一線工程師碰的東西,就不要輕易去接觸,因為那好像陷阱一樣,一旦深入,就進入了永無止盡的深淵,而且是在沒有資源的情況下進行。好像每個工程師都要當Hacker一樣,逆向工程挖掘出系統跟產品的種種細節種種參數,而且在時間跟客戶的壓力下,通常也不會有好的品質,用暴力的方法解決了一個問題,通常只會帶出更多的問題,用盡一切方法跟自己吃飯休息的時間,只為了多幫Layer 2 and R&D一點忙。

  大家難道沒有發現,其實你在"浪費時間",時間是寶貴的,浪費時間在瞎子摸象上,做Try and Error, 沒有任何的計畫,想一步做一步,真的是在浪費時間,我發現在亞洲的工程師都有這樣的傾向,沒錯這樣真的很快,我剛好有幸能跟各國的工程師一起工作,亞洲工程師真的動作很快,想法一到就去執行,憑著經驗跟感覺,可以讓事情一開始推進的很迅速,相較之下,歐美的工程師動作就比較慢,看著他們慢慢的看文件,確定了再執行命令,命令失敗了,回頭再確認文件,再根據文件執行相對應的步驟,看起來很笨,其實,這才是最有效的方法。

  尤其是對電腦而言,電腦不是人,人的事情交由業務跟產品/專案經理來解決,電腦的事情,該交由工程師來解決,亞洲的工程師,千萬不要落入了陷阱,亞洲的客戶也是如此,不該是客戶動手做的事情,就不要做,因為只會讓事情變得更糟,進度不會比較快,相較之下,要求只會越來越多,還會反過來質疑我們產品的設計不良,只因為他們看到了一點細節的皮毛,也許這樣的指正是對的,但是產品的設計是有其整體考量的...老實說,我清楚明白我的職責跟擁有我工作需要的專業技能,但非我負責的部分我不懂也沒興趣了解,真有需要,就找專門負責的人來做,因為這樣,我的生活會好過許多。但是事與願違,在台灣,總是要不斷突破自己的極限,當個十八般武藝通通行的人,你才是行家XD。

沒有留言: