2016年2月14日 星期日

從宮本武藏看工程師出路





武術家跟工程師有一點非常像,兩者都是賣藝為生

宮本武藏活躍於戰國末年,但戰國時代的大名如織田信長、豐臣秀吉認為武藝不過是足輕(步兵)的技術,不值得重視。

有沒有跟工程師的處境很像?恐怕很多老闆也覺得,工程師不需要重視,我的人脈、資金、商業眼光、談判手腕、成本控管能力...才是經營企業的關鍵。

所以武藏鎖定的是那些喜愛武藝,願意花大錢聘請武術家的大名。

所以,要成為一名成功的工程師,首先絕不能去找那種原本就視工程師為免洗筷的公司。

以日本當時的標準來看,要讓這些大名願意花大錢聘請你,你要不是名門出身(如柳生一族),要不就是要有過人的戰績。

武藏跟他的父親都是牢人出身(失去主家的武士),他的武藝泰半靠自修得來。以現在的標準來看他就是「血統不純」,不是四大名校台清交成畢業,甚至連中字備都排不上,講難聽一點只有高中同等學力。(據說聯O科會一路追溯到你是不是建中畢業...)

所以武藏就到處去找人單挑,創下生平六十餘次比試無敗績的紀錄。

放到現在就是你就是要在 topcoder 拿過名次,或者在 github 上主持熱門專案,要不你給 Android 發過 patch,這些企業家(大名)才願意花高薪聘請你。

武藏最厲害之處是他一旦決定要決鬥,就是非贏不可,而且是不擇手段的贏。除了武術本身,他還會考查對方的個性、生長環境、交往的朋友,故意激怒對方讓對方武藝無法發揮應有的水準。順帶一提,雖然他是二天一流的始祖(二刀流),但生平決鬥使用雙刀的次數還不到一半,他會因對手使用的武器而做出改變,所以他用船槳打敗了佐佐木小次郎。

這對工程師的啟發就是:「絕對不能用技術硬碰硬

比方說你今天去面試一份新工作,你對你的技術十分自豪,你信心滿滿的打算在面試官前談你過去的豐功偉業,你對技術的鑽研深度。很抱歉,這可能無法奏效,原因如下:

  • 面試官絕對能找到你不懂的題目把你電到牆上。
  • 不同的行業有不同的 domain know-how

就算你是萬中無一的天才,反過來把面試官釘在牆上,他也不太可能會錄用你,因為大部分的人沒有那種胸襟與勇氣去錄用一個能力高過自己太多的屬下。

所以絕對不能只談技術,那是非常危險的,如果是武藏去面試,他一定會先分析這間公司的潛在競爭者,獲利狀況,甚至是公開的財務報表,甚至是這一行的行話...這樣去談的時候高度就不一樣了!人家才不會覺得你只是個會 coding 的傻蛋,你是真的對這個行業有興趣。

武藏也建議他的門徒多多學習其他領域的知識。吾道不孤必有鄰,IT 界的名人 Joel Spolsky 不只一次提到經濟學的重要性,事實上如果你活的夠久,你會發現經濟與統計是你終身都要面對的兩樣東西,花時間在這兩樣上面絕對不會吃虧,會讓你有其他的工程師所沒有的優勢。

武藏也非常善於製作武器。我所認識的所有厲害工程師都非常善於累積自己的工具與程式庫,如果每到一處就重新來過,那不是很詭異嗎?有需要發明那麼多新輪子?

不甘於只當武術家的宮本武藏


後世的很多文學作品,就算是那個離譜到用複製人技術讓宮本武藏復活的刃牙道,都稱武藏為一名兵法家,而不是稱他為武術家。雖然那個時代的「兵法家」多半指的是劍術指導,但根據司馬遼太郎的宮本武藏一書,武藏的確在不少場合表達過想帶兵的意願。

所以宮本武藏的目標其實是想當個可以上戰場指揮部隊的將軍。

事實上,宮本武藏留下的「五輪書」跟與中國的「孫子兵法」在西方可說是齊名的經典。

放到現在來說,武藏絕不甘於只當一個優秀工程師,他的目標至少是 CTO,創業是極有可能的。

如同站長在另外一篇文章講過的,您就算沒有打算要創業,也應該了解創業需要哪些知識,至少可以協助您自保!

哪些不該學宮本武藏?


大名花高薪聘請武藏之後發現一個問題,就是武藏的武藝很難傳授給其他人,因為他的武藝可說是一種哲學。

這對工程師的啟示就是:「你要想辦法讓大部分人理解你的東西」

這邊不得不再次提到 Joel Spolsky,他提過寫作是軟體工程師必備的能力,所以如果您還在學校,報告就好好做吧,訓練一下你的文字表達能力(事實上不要說英文了,很多工程師連中文都看起來都怪怪的...)。

另外在工作中使用同事不懂的技術要非常小心,因為你留下的這些程式碼後人可能無法維護,站長曾經在工作中使用過 C++ template,後來才發現身邊很多人連 STL 都不熟(年輕一代比較沒這個問題) 。

這也是 Java 歷久不衰的原因,因為他創造了一個防呆而且學習曲線低的語言,而且沒有垃圾收集(garbage collection)的的程式語言要設計 multi-threading program 非常困難,這也是 Java 為何很早就開始支援 multi-threading,因為他有著傳統 C/C++ 沒有的優勢(所以 STL 出現後就一堆大師疾呼要大家用 std::vector  取代舊式 new xxx[])。

很多工程師拙於社交,不善言詞表達,這在站長看來是非常可惜的事。當年站長承蒙老前輩 ChamberPlus 的提拔,有了上台教學的機會,回想起來仍然受益良多,在此再次感謝他!

2 則留言:

  1. 站長你好,拜讀了你的大作用php跟modbus連線設備,請問方便留下fb嗎,想有些關於php跟plc的問題想請教您 感謝

    回覆刪除
  2. 我留下我的skype希望可以跟您溝痛frank_youh,誠意交朋友

    回覆刪除