本期(2005/12/24) iThome 「 IT 人物甘苦談」的專訪

上上星期接受 iThome 技術編輯瑞隆在「咖啡因」的專訪,希望能把我一些想法刊登在該雜誌的「 IT 人物甘苦談」,提供給一些讀者參考。

嗯,那天聊了很多,瑞隆還列出好多問題讓我回答。有些問題,牽涉到人生價值觀的考量,許多我還不太容易能回答得出來(生活的目的與生命的意義,有很多我一直搞不懂)。後來也建議瑞隆可以直接引用我 Blog 內之前我所寫的文章。底下就是瑞隆整理訪談與我的文章後,洋洋灑灑的寫了好長一篇全版面的「 IT 人物甘苦談」囉~ :)

撥開軟體架構迷霧 成為思路敏捷的IT人

文/張瑞隆 (記者) 2005-12-30

信仁軟體設計顧問中心軟體架構師王克明頓悟柔性思考的心法,重新認識軟體架構的簡潔與優美,將枯燥的工作轉為解決架構盤根錯節問題的樂趣,經營屬於自己的顧問事業。

信仁軟體設計顧問中心(簡稱HSDC)軟體架構師王克明歷經導師啟蒙與自我刻苦學習後,重新發現軟體的架構優美與設計的樂趣,由基層技術工程師轉型為思路敏銳的軟體架構師,更創立顧問服務公司,將解決軟體設計問題當成樂趣,套用Linus Torvalds在其傳記標題所使用的形容詞:「Just for Fun!」。

偉大的程式設計師知道要重複利用程式!
舊有系統(Legacy System)的整合一直是企業的痛楚,但主管對於如何啟發軟體工程師的思路,培養其架構規畫的能力,常不得其門而入,才讓IT系統逐漸陷入Frederick Brooks(著有《人月神話》一書)所謂的「焦油坑」。只是,當面對這樣的挑戰時,軟體工程師根深柢固的線性思考卻侷限了省視問題的角度。

王克明舉出一個公家機關的系統整合專案為例,此建案除了採購全新的流程軟體,還須整合研發、原料、進銷存、生產、維護等子系統,以完成產品品質的管控與資源分配。這是典型的異質系統整合問題,涵蓋不同供應商的作業系統、資料庫、應用伺服器,以及系所單位,不僅新舊系統無法結合,上線運作更是遙遙無期。由於缺乏架構規畫,許多軟體工程師首先想到的解決方法,便是開發中介軟體(Middleware)作為各子系統間的溝通介面,或者讓每個系統都到資料庫擷取資訊,再重新組合,卻造成資料庫系統不堪負荷,這類治標不治本的方式等於是將灰塵掃到地毯下。如此一來,便讓專案成為「焦油坑」。

彼得‧聖吉(Peter Senge)提到,這類問題衍生自忽略系統思考的重要性,因為「動態性複雜…會抵消個人或群體改善問題的所有努力,它會誘使我們捨本逐末、避重就輕、愈治愈糟、一再犯錯,甚至興奮而努力的製造共同的悲劇。」王克明提建議改良軟體架構而非撰寫中介軟體,將每個核心元件「封裝(Encapsulation)」,並以介面與其他系統溝通與交換資料,每個子系統間都可以抽換,因而解除彼此緊密相依的不可取代性,讓系統整合能具備彈性,這也就是「作對的事」及「把事情作對」的最佳互補,他也稱前者為大題小作,後者為小題大作。就軟體設計為例,開放源碼的關鍵人物之一Eric Raymond曾提出格言:「優秀程式設計師知道要寫程式,偉大的程式設計師知道要改寫(並重複利用)程式。」當軟體工程師也具備結構化系統思考時,就能將職業生涯的危機化為轉機,持續個人的價值,不會成為企業中隨時可犧牲的資產。

王克明跨入這一行的起因,起源於對圍棋的熱衷,他眼中的圍棋與軟體一樣,是最重視蹲馬步的基本功,佈局、中盤、官子、死活、定式與打名家的棋譜,是增進棋力的不二法門。但圍棋對軟體工程師的啟示,在於僅用黑白兩色棋,配合方形的棋格,便能產生千變萬化的棋局,軟體架構也應像是圍棋一般,看似簡潔易懂,卻又變化無窮。至於從事軟體設計,他的動機是用Java撰寫一個奕棋軟體,但在學習過程中,王克明原本自認為無所不通,直到遇到無法跨越的學習對象,也就是一位國內的物件導向大師,並成為他在軟體設計的啟蒙導師,導引他重新思考軟體的本質與樂趣,後續更讓他成為思路敏捷的軟體顧問。王克明以自己為例,顧問的樂趣在於,「引導技術人員說出原本認為對的觀念,但事實證明是錯的」。他更眉飛色舞地說道:「想到軟體業界處於混沌的亂世,我就更開心,因為,更有機會嶄露頭角了。」

除了圍棋以外,他最大的休閒活動是讀書,並期許自己要讀遍天下所有書。他也建議IT人,追尋專業知識不是仰賴閱讀坊間大量探討「工法」的書,而是講究「心法」,因為工法會跟隨技術與工具逐漸推陳出新,但心法是根基於底層原理,而且歷久不衰的。以生活中的例子形容,堆磚塊的建築工人如果執著於將磚頭堆得更快且多(工法),將永遠不如畫藍圖(心法)的建築師,對整體結構了然於心。

不值得做的事,就不值得做好!
傳統企業中的階層式組織,並沒有提供員工自尊與自我實現等精神層次的需求與環境,主管將技術人員視為可隨時替換的生產工具。因此,有些人在名片的職稱上印著軟體工程師,但卻與操作員沒什麼兩樣,或者說,他們有著高度的工程技能,但缺乏工程管理的思維,所以工作瓶頸便一直停留在技術專家,猶如一個長不大的小孩。

軟體工程師應秉持藝術創作的熱情自我期許,在工作中找尋成就與自尊,而不是成為技術人員目光短淺、腦袋僵化、自以為是的通病,避免淪落為主管眼中生產工具。王克明中肯地建議道,軟體工程師不應將理想寄託在企業上,認為藉由聘僱的制度可實現個人理想,相反地,應該是超越「純工作」的心態,選擇做最有興趣的事,走自己的路。軟體工程師應體認到,經營企業是在商言商的事,企業沒有必要負責實現每位僱員的理想。

不過,他也不否認,許多時候還是為了滿足薪資遠大於成就,此時,只要應付即可,不必因為過於負責,而加班完成份外的工作。這並非異端邪說,從企業整體的角度思考,毫無目的加班只會造成資源內耗與成本支出。王克明以摘錄自肯‧布蘭查《一分鐘激勵》一書中的話形容:「Things not worth doing are not worth doing well.(不值得做的事,就不值得做好。)」。一般普羅大眾會花最多的時間在工作上,雖然工作的職別符合專業與興趣,但工作內容卻非能由人們決定,而自己的興趣及理想才是驅動人們努力工作的誘因。

公司的經營偏方:海盜式分贓經營哲學
在臺灣開公司,約有95%的公司在第一年內會收掉,原因即在於還沒獲取利潤,就已經先支出許多經營成本,包括人事薪資、辦公室租金、文具開銷等,這一點,王克明心知肚明。所以他效法中古時期海盜們「聚眾成寇」,在海上四處打劫過往商船的經營哲學。他說道:「一開始沒有錢買比較好的海盜船設備,所以先從弱小的商船開始下手。海盜們打劫到金銀財寶後,就論功行賞,當然,其中一份是留給船長老大;另一份成為眾海盜們的團隊基金,可以擴充海盜船的設備、更加堅固壯大。」

對於由技術人員轉為自行創業的營運建議,他認為小公司成立時,資金並不充裕,可以考慮採取「海盜分贓」經營策略,將參與專案的團隊成員視參與的投入程度來「分贓」,並固定提撥一定比例的利潤投入公司的營運用資金,「這樣也能避免企業中常遇到的自肥!」,他樂趣地說道。文⊙張瑞隆

IT人物-王克明
信仁軟體設計顧問中心 軟體架構師
●學經歷:機械化師文書官、系統工程師、Oracle DBA、IT部門副理、講師、顧問。

公司檔案-信仁軟體設計顧問中心
●成立時間:2003年。
●營業項目:HSDC是由一群專業的軟體設計師所組成的軟體設計團隊,提供的服務包括:軟體設計人員的專業課程、為企業量身訂做的設計課程、軟體設計顧問服務、全方位軟體資詢服務。

>>學習軟體設計的啟蒙導師:Martin Fowler

王克明將Martin Fowler視為軟體設計領域的偶像,更精讀這位大師所出版的書籍,從《Analysis Pattern》、《Refactoring》、《Patterns of Enterprise Application Architecture》以及《UML Distilled》等,在軟體層次從最抽象面至最底層的實做機制面,都能有最深刻的研究與發表。他甚至將Martin Fowler形容為「軟體業界的達文西」。至今,Fowler的一句話:「Keeping Software Soft.(把軟體做軟)」,是影響他最深遠的一句話,更是信仁軟體設計顧問中心成立的宗旨之一。「在沒聽過Fowler之前,從不敢想像有這種天縱英才!」,王克明激動地表示。

【軟體設計單元課程(一天)】團隊開發整合工具應用實務演練(2006/01/21)

想瞭解如何應用 UML 、IDE 與版本控管的工具,來達成團隊協同的開發嗎?

詳細內容及報名,請至:
http://www.hsdc.com.tw/modules/eguide/event.php?eid=10

 §課程名稱: 「團隊開發整合工具應用實務演練」

 §課程簡述:
  * 以現場使用 Enterprise Architect 及 Eclipse 結合 Subversion 實際演練團隊開發之流程。

 §課程目標:

  1. 完全以實務為主,指導學員如何安裝與使用工具。
  2. 利用一個案例,現場教導學員分組完成軟體開發流程。
  3. 指導學員了解團隊開發工具之概念,並提供團隊開發環境之 VMWare Image,以便學員帶回使用。
  4. 學員於課堂上實際親自操作工具,由講師示範與指導每一個流程之互動。 

 §準備教材:

  * 由授課講師提供講義,包括內容、流程範例與團隊開發環境之 VMWare Image。
  * 學員可攜帶相關軟體開發參考書籍,並對於書中內容有問題者,可以直接提問。 

詳情請看…
繼續閱讀 »

蓁妮的冷笑話謎語 (新年快樂啊~)

小蓁妮又問了我蠻冷的冷笑話謎語:

1. 狐狸為什麼會滑倒?
2. 巧克力代表糖果隊參加賽跑比賽,但它的隊友們卻認定它一定會輸,為什麼?

解答請看...

繼續閱讀 »

【軟體設計單元課程(兩天)】UML2.0 實務操作入門 (2006/01/21~22)

農曆過年前,讓自己充個電,充實對軟體設計的實用技巧!

詳細內容及報名,請至:
『首頁-活動報名』線上填寫報名申請表單

若對該單元課程有相關建議與問題,請至:
http://www.hsdc.com.tw/modules/newbb/viewforum.php?forum=5
發表討論。

§課程名稱: UML2.0 實務操作入門

§課程簡述:

  • 以 『問題-解決方案(Problem-Solution)』 的實做方式,引導學員實際針對一個應用領域案例並利用 UML 工具畫出 UML 2.0 十三種圖。

§課程目標:

  1. 完全以實務為主,指導學員如何學會畫 UML 2.0 的圖形。
  2. 利用一個案例,涵蓋串連整個 UML 13 種圖。
  3. 畫每一個 UML 圖之前,會先以一個問題的陳述,來說明應用該圖形的時機與場合,然後提出具體的解決方案。
  4. 學員於課堂上實際親自操作 UML 工具,由講師示範與指導畫每一張圖的技巧與圖形的元素說明。

準備教材:

  • 由授課講師提供講義,包括內容、案例分析與 UML 13 種圖範例。
  • 學員可攜帶相關 UML 參考書籍,並對於書中內容有問題者,可以直接提問。

§使用工具:

  • UML2.0 Editor :Enterprise Architect 6.0 Trial。

§使用設備:

  • 使用白板與投影機,由講師親自說明與操作示範。學員最好能攜帶 Notebook ,於課程中實際操作練習。

§授課講師:

  • 王克明(Kenming Wang), 賴信仁(Ringle Lai)

§上課費用:優惠折扣 NT$ 300 x 12(hrs) = $3,600, 含稅(原價為 $4,200)。

§上課時間:

  • 2006/01/21(星期六)、01/22(星期日) 共兩日。
  • 每日上課為六個小時(AM 9:30~12:30、PM 1:30~4:30),課後並留半個小時供學員自由提問。

§上課地點與上課人數:

  • 由本顧問團隊與之合作的多家可供上課教室的機構,以鄰近捷運站、交通便利為最優先考量。
  • 上課前一個星期以電話及 Email 通知上課地點。
  • 報名人數滿 10 人即開班(同時保留 5 名學員重新選修該課程)。

§適合學員:

  • 系統分析/設計(SA/SD), PM, Programmer 等在職軟體開發者或在學學生。
  • 想實際學會如何利用 UML 工具來畫 UML 2.0 十三種圖。
  • 看了很多 UML 書籍,仍然無法在正確的時機畫出正確的 UML 圖。

備註:

  • 若需含稅,請於報名時在備註欄提供開立發票的資料。
  • 為確保報名足額人數,煩請先行 ATM 轉帳預約費用($500~$1000 即可),並請於報名表備註欄位內,註明您的轉帳帳號末 6 碼與轉帳金額,煩請轉帳至:
    ———————–
    誠泰銀行: 103
    帳號: 0772-50-100979-9
    ————————
  • 若不及 ATM 轉帳者,亦可於現場報名,仍請於報名表備註欄內,註明為現場繳費。

§課程諮詢(HSDc. 軟體設計專業顧問團隊):

  • 諮詢專線:TEL: 02-27227179
  • 服務信箱:service.hsdc@gmail.com

§附表:課程表參考

  上午 下午
Day 1

※UML 2.0 說明

  • UML 綜觀介紹 (Overview)
  • 建立企業流程與系統需求模型
    • 活動圖(Activity Diagram)
    • 使用案例圖(Use Case Diagram)
  • 系統結構分析與設計
    • 靜態結構—類別圖(Class Diagram)
    • 動態結構—循序圖(Sequence Diagram) 與互動圖(Communication Diagram)

※實作練習(以實際開發個案為例)

  • UML 實作工具介紹
    • Enterprise Achitect(EA)的安裝與使用介紹
  • 企業流程與系統需求的實作練習
    • 利用 EA 繪製與產出 Activity Diagram與Use Case Diagram
  • 系統結構分析與設計
    • 利用 EA 繪製與產出 Class Diagram、Sequence Diagram 與Communication Diagram
Day2

※UML 2.0 說明

  • 系統的微觀設計
    • 介紹UML的 物件圖(Object Diagram)、狀態機圖(State Machine Diagram) 與時序圖(Timing Diagram)
  • 系統的鉅觀設計
    • 介紹 UML 的 套件圖(Package Diagram)、互動圖(Interaction Overview Diagram) 、元件圖(Component Diagram) 與 合成結構圖(Composite Structure Diagram)
  • 系統的實作與部署
    • 介紹 UML 的 部署圖(Deployment Diagram)

※實作練習(以實際開發個案為例)

  • 系統的微觀設計
    • 利用 EA 繪製與產出物件圖(Object Diagram)、狀態機圖(State Machine Diagram) 與時序圖(Timing Diagram)
  • 系統的鉅觀設計
    • 利用 EA 繪製與產出 套件圖(Package Diagram)、互動圖(Interaction Overview Diagram) 、元件圖(Component Diagram) 與 合成結構圖(Composite Structure Diagram)
  • 系統的實作與部署
    • 利用 EA 繪製與產出 部署圖(Deployment Diagram
10th_UML2.0/EA 軟體設計系列講座(2006/01/14 13:10~17:00)

** 緊急通知!! **

由於與「文化大學教育推廣部」的聯繫出了問題,該單位所更換的承辦人,在未通知與未處理的情況下,造成無法租借到教室場地。且由於合約已於今年底到期,使得場地租借的問題,短期內無法得以解決。

HSDc. 團隊已決定另行租借大型會議室,堅持仍持續推動軟體設計研討會,但基於成本問題,爾後報名的學員,不得不酌收工本費 NT$250,以擔負大型會議室租借、光碟製作費用、點水茶水費用 …等。不得已之處,敬請見諒!!

並為了確保報名學員能滿 30 人以上(租借會議室的標準),煩請先行 ATM 轉帳,再至下列網址報名,並請於備註欄位內,註明您的轉帳帳號末 6 碼。

煩請轉帳至:

———————–
誠泰銀行: 103
帳號: 0772-50-100979-9
————————

** 若報名人數未達 30 人以上,研討會則不得已必須終止,已報名學員會另行退費,但仍會寄送講座光碟以示補償。(若不及於 ATM 轉帳的學員,可於報名表備註欄說明,現場收費繳交亦可。)

———————————————–
報名請至:
http://www.hsdc.com.tw/modules/eguide/event.php?eid=7

由於十二月第三個週六適逢聖誕假期,所以順延至明年(2006)的第二個星期六。同時因農曆年關係,二月份 UML 講座活動亦暫停乙次。

本次賴信仁先生將主講 EA 6.0 諸多與 UML 及專案控管上的新功能,精彩可期,敬請期待!!

  • 講座主題:
    1. 利用 UML/OOAD 手法建立企業模型(Business Modeling) — 王克明(Kenming Wang)
      • 瞭解企業、資訊系統與企業流程的關係。
      • 把企業當系統看待時的白箱式設計手法–
        • 企業流程(Process)的塑模。
        • 企業結構(Structure)的塑模。
      • 整體觀 –從企業架構至軟體架構。
      • 企業塑模的小型範例。
    2. EA 6.0 新功能簡介(讓我們一起來體驗EA 6.0的新世界!) — 賴信仁(Ringle Lai)
      • 說明EA 6.0所支援的UML相關功能介紹
      • 新的Look and Feel介面
      • Team Working的提升 – Project Discuss Forum、Version Cotrol技術提昇
      • RTF Documentation技術的提升
      • 更多種技術的Support – MOF、Web Service、XML Schema… 等
      • 最新的Build And Run的功能
    3. Architecture Centric Use Case Modeling — 陳明儀(Simon Chen)
      • 什麼是 Architecture Centric?
      • 如何從 Architeture 的角度來 Modeling Use Case 3. Use Case Model 的結構說明
  • 時間:2006/01/14 (星期六) PM13:10 ~ PM 17:00 (三小時的講座時間,並留半小時供學員提問) 
  • 對象:對軟體設計有興趣者,包括在職軟體開發人員及相關資訊科系講師及學生等。 
  • 地點:講座地點於上課前一週會以 Email 及電話通知公布。
  • 主辦單位:HSDc 軟體設計顧問團隊 
  • 講師:王克明(Kenming Wang)、賴信仁(Ringle Lai)、軟體藝術家(客座講師)陳明儀(Simon Chen)
  • 報名方式:請填寫報名活動內的表格內容,包括姓名、公司/職稱、聯絡電話、Email、轉帳帳號(末 6 碼)等。
  • 服務信箱與電話:Email: service.hsdc@gmail.com TEL: 02-27227179
  • 備註:
    1. 本次講座預計開放 100 個名額。(額滿即停止報名)
    2. 因上課人數眾多,恕不直接提供列印教材。本次講座會直接附送「講座教材及示範操作光碟」等。學員可自行列印講座教材。
裝飾風潮音樂盒,讓你的部落格也跟著過聖誕吧~

這個星期六晚上,就是聖誕夜囉,我們家已經布置了小小的聖誕樹,在牆上還佈置了閃爍不已、變化多樣的小燈泡,晚上還要與 Simon 全家一同吃聖誕大餐,過聖誕節,就是有那種溫暖的感覺才好。嗯,讓我的部落格也有能過聖誕節的氣氛吧。 :) )

逛到風潮的秘密基地,提供了 「部落格聖誕音樂盒」。看到了沒? 在我的部落格右側,就是 〈陶笛美樂地〉音樂盒,會唱歌報佳音,傳送滿滿的愛與祝福,增添濃濃溫馨的耶誕氣氛喲!

如何讓你的部落格也擁有音樂盒呢?參考這裡:
想擁有一個聖誕音樂部落格嗎?