網頁

搜尋此網誌

2011年12月8日 星期四

How We Test Software at Microsoft 軟體測試之道

在實際工作環境之中,軟體測試(Software Testing)在軟體開發流程似乎沒有受到重視,大都將軟體重心放在開發(Development)上,這樣的態度實在不好,最後往往導致有產品卻不能用,Bug太多沒有品質。

「軟體測試之道」介紹微軟(Microsoft)這間大型軟體公司的如何去做軟體測試,書中提到微軟的開發人員與測試人員的比例大約是1比1,並且落實軟體工程。我想因為有這些因素,微軟才能做出複雜又高品質的軟體系統(平台與應用程式),其中微軟的工程領域有鐵三角 (triad),指的是測試、開發與計畫管理三個專業領域,這也說明軟體測試是一個專業的技術。

Alan Page, Ken Johnston, Bj Rollison著,林宗斌譯,軟體測試之道-微軟測試團隊的成功經驗、方法與技術,台北:碁峯資訊,2010。譯自:How We Test Software at Microsoft。

本書分成四大部分,總共16章:
  • Part I, 關於微軟(About Microsoft)
    • Chapter 1, 微軟的軟體工程(Software Engineering at Microsoft)
    • Chapter 2, 微軟的軟體測試工程師(Software Test Engineers at Microsoft)
    • Chapter 3, 工程生命週期(Engineering Life Cycles)
  • Part II, 關於測試(About Testing)
    • Chapter 4, 測試案例設計的實務作法(A Practical Approach to Test Case Design)
    • Chapter 5, 功能測試技術(Functional Testing Techniques)
    • Chapter 6, 結構測試技術(Structural Testing Techniques)
    • Chapter 7, 分析複雜程式碼的風險(Analyzing Risk with Code Complexity)
    • Chapter 8, 以模型為基礎的測試(Model-Based Testing)
  • Part III, 測試工具和系統(Test Tools and Systems)
    • Chapter 9, 管理臭蟲和測試案例(Managing Bugs and Test Cases)
    • Chapter 10, 測試自動化(Test Automation)
    • Chapter 11, 非功能性測試(Non-Functional Testing)
    • Chapter 12, 其他工具(Other Tools)
    • Chapter 13, 用戶反饋系統(Customer Feedback Systems)
    • Chapter 14, 測試軟體加服務(Testing Software Plus Services)
  • Part IV, 關於未來(About the Future)
    • Chapter 15, 防患未然(Solving Tomorrow’s Problems Today)
    • Chapter 16, 創建未來(Building the Future)
第一部分主要說明微軟的軟體開發運作情形,可以看到微軟的開發人員有兩種:軟體開發工程師(Software Development Engineer, 簡稱SDE)軟體測試開發工程師(Software Development Engineer in Test, 簡稱SDET),微軟的測試人員本身就是開發人員!SDET除了設計測試案例(Test Case)之外,還需提出設計改善建議、問題原因分析、参與程式碼複閱...等,不是只有找bug就沒事。

第二部分與第三部分則偏重於軟體測試本身的方法與技術說明,我想這部分對於軟體開發人員都應該好好閱讀瞭解,你會發現軟體測試本身真的不是一件簡單容易的事情!這點常常會被忽略而輕視。最後第四部份則是說明微軟未來在測試和品質的方向。

「軟體測試之道」這本書除了講述軟體測試,也包含很多組織與團隊的內容,不只是一本技術的書籍,也適合管理職位的人閱讀,微軟的軟體工程值得借鏡。

###

2011年12月6日 星期二

Designing Web Interfaces 網頁介面設計模式

自從AJAX技術盛行之後,使用者介面(User Interface, UI)設計越顯得重要,期望能夠提高使用者經驗(User Experience, UX)。

現在,網頁設計師可以參考「網頁介面設計模式」這本書,作者整理網頁介面的精隨成為設計原則(design principles),也就是「設計模式(design patterns)」,相信不管你是不是設計師,藉由參考設計模式也可以做出相當品質的使用者介面。

Bill Scott & Theresa Neil著,古又羽譯,網頁介面設計模式,台北:碁峯資訊,2011。譯自:Designing Web Interfaces: Principles and Patterns for Rich Interactions, O'Reilly Media。

官方網站(英文):http://designingwebinterfaces.com/

這本書的架構以6個設計原則為主體,共14章,包含75種介面設計模式:
  • 原則1, 操作直接性(Make it Direct)
    • 第一章,頁內編輯(In-Page Editing)
      • 單欄直接編輯(Single Field Inline Edit)
      • 多欄直接編輯(Multi-Field Inline Edit)
      • 覆蓋視窗編輯(Overlay Edit)
      • 表格編輯(Table Edit)
      • 群組編輯(Group Edit)
      • 模組組態設定(Module Configuration)
    • 第二章,拖放功能(Drag and Drop)
      • 拖放模組(Drag and Drop Modules)
      • 拖放清單(Drag and Drop List)
      • 拖放物件(Drag and Drop Object)
      • 拖放動作(Drag and Drop Action)
      • 拖放集合(Drag and Drop Collection)
    • 第三章,直接選取(Direct Selection)
      • 雙態觸變選取(Toggle Selection)
      • 集合選取(Collected Selection)
      • 物件選取(Object Selection)
      • 混合選取(Hybrid Selection)
  • 原則2, 保持輕質(Keep it Lightweight)
    • 第四章,情境工具(Contextual Tools)
      • 永遠顯示工具(Always-Visible Tools)
      • 滑過顯示工具(Hover-Reveal Tools)
      • 雙態觸變顯示工具(Toggle-Reveal Tools)
      • 多層級工具(Multi-Level Tools)
      • 副選單(Secondary Menu)
  • 原則3, 同頁作業(Stay on the Page)
    • 第五章,覆蓋視窗(Overlays)
      • 對話型覆蓋視窗(Dialog Overlay)
      • 詳細型覆蓋視窗(Detail Overlay)
      • 輸入型覆蓋視窗(Input Overlay)
    • 第六章,嵌入面板(Inlays)
      • 對話型嵌入面板(Dialog Inlay)
      • 清單型嵌入面板 (List Inlay)
      • 詳細型嵌入面板(Detail Inlay)
      • 欄標(Tabs)
    • 第七章,虛擬頁面(Virtual Pages)
      • 虛擬捲動(Virtual Scrolling)
      • 直接分頁(Inline Paging)
      • 捲動分頁(Scrolled Paging)
      • 虛擬平移(Virtual Panning)
      • 可縮放使用者介面(Zoomable User Interface)
    • 第八章,程序流程(Process Flows)
      • 互動式單頁程序(Interactive Single-Page Process)
      • 直接輔助程序( Inline Assistant Process)
      • 對話型覆蓋視窗程序(Dialog Overlay Process)
      • 組態設定器程序(Configurator Process)
      • 靜態單頁程序(Static Single-Page Process)
  • 原則4, 送出邀約(Provide an Invitation)
    • 第九章,靜態邀約(Static Invitations)
      • 採取行動邀約(Call to Action Invitation)
      • 遊覽邀約(Tour Invitation)
    • 第十章,動態邀約(Dynamic Invitations)
      • 滑過邀約(Hover Invitation)
      • 可視線索邀約(Affordance Invitation)
      • 拖放邀約(Drag and Drop Invitation)
      • 推理邀約(Inference Invitation)
      • 更多內容邀約(More Content Invitation)
  • 原則5, 善用轉換效果(Use Transitions)
    • 第十一章,轉換模式(Transitional Patterns)
      • 打亮與轉暗(Brighten/Dim)
      • 展開與摺疊(Expand/Collapse)
      • 自我復原淡出(Self-Healing Fade)
      • 動畫(Animation)
      • 聚光燈效果(Spotlight)
    • 第十二章,轉換效果的目的(Purpose of Transitions)
      • 滑進與滑出(Slide In/Slide Out)
      • 面板(Faceplate)
      • 翻轉(Flip)
      • 手風琴式展開(Accordion)
      • 旋轉木馬跑馬燈(Carousel)
      • 淡入(Fade)
      • 放大(Zoom)
      • 知覺效能(Perceived Performance)
  • 原則6, 即時反應(React Immediately)
    • 第十三章,查詢模式(Lookup Patterns)
      • 自動完成(Auto Complete)
      • 即時建議(Live Suggest)
      • 即時搜尋(Live Search)
      • 精煉搜尋(Refining Search)
    • 第十四章,回饋模式(Feedback Patterns)
      • 即時預覽(Live Preview)
      • 漸進式揭示(Progressive Disclosure)
      • 進度指示器(Progress Indicator)
      • 定期重新整理(Periodic Refresh)
作者在每個設計模式中,除了說明功能和特色之外,還有「問題探討」與「重要常規」兩個部分,「問題探討」講述這個設計模式可能淺在的議題,而「重要常規」則是使用上建議必須遵守的規則。這些內容都只有在書籍中才有敘述,官方網站上沒有細部說明,因此建議購買或借閱來看,這些寶貴的經驗絕對值得。

推薦序提到一個建築觀念,以設計原則為主並以設計考量(design considerations)為輔去建構出建築物,我想這個概念同樣適用於網頁設計上,只要我們掌握住上述這些設計模式,設計時考量各種限制與衝突,則建立優異的使用者經驗將不會是一件困難的事情!

###

2011年12月5日 星期一

Stunning CSS3 想做好網站一定要會的CSS3

Cascading Style Sheets (CSS)是網頁中用來設計樣式的語言,重要性與HTML和JavaScript相當,一個網頁設計師應該要熟悉這三種語言。W3C持續訂定CSS第3版的規範,稱為CSS3,CSS3不只是舊版CSS2.1的延伸,還加入一些新功能!

目前有關CSS的書籍不多,這本「想做好網站一定要會的CSS3」講述CSS3的重要功能,並提出「漸進式增強(Progressive Enhancement)」的網頁製作方式,雖然CSS3標準尚未制定完全(請參考目前CSS3工作進度),各瀏覽器也未必完全支援,但作者認為漸進式使用CSS3的好處多於缺點。

Zoe Mickley Gillenwater著,張雅芳譯,想做好網站一定要會的CSS3,台北:碁峯資訊,2011。譯自:Stunning CSS3: A Project-based Guide to the Latest in CSS

本書共分成7章,第1章說明CSS3的概況,第2章至第7章介紹CSS3的重要功能,基本上是對應於CSS3中不同模組(module)的規範,書中介紹的主題如下:
推薦這本書給想認識CSS3的人,注意「想做好網站一定要會的CSS3」不是參考工具書喔!想要看CSS規範請至W3C網站查詢。

###

延伸閱讀
3 Elements of A Web Page網頁三元素

2011年12月3日 星期六

HTML5: Up and Running

HTML5的話題一直持續不斷,HTML5已經是未來網頁的標準(據說要到2022年才會定案)。最近仔細研究了一下HTML5,發現HTML5的範疇比想像中還要大,不能只說是網頁(Web pages)的標準,由於HTML5新增不少功能,可不只是定義網頁的元素標記(tag)。

因此,我認為HTML5是一個網頁應用程式(Web Applications)的標準,這幾乎是全新的一個「HTML網頁標準」!很多HTML5新功能需要JavaScript的操作才能使用,於是要學好HTML5可能需要花費更多心力,變成HTML5和JavaScript都要熟悉了。

Mark Pilgrim著,莊惠淳譯,「HTML5:建置與執行」,台北:碁峰資訊,2011。譯自:HTML5: Up and Running。

這本書總共10章,第一章「從頭說起」說明HTML的歷史,第二章說名檢測HTML5的方法,使用Modernizr這個JavaScript程式庫工具,從第三章到第十章探討8個主題:
  1. 新的語義元素,HTML5新增的語義元素標記。
  2. 繪圖,使用<canvas>標記。可以參考HTML5 canvas - the basics的說明
  3. 可以內嵌在網頁中的影片,使用<video>標記。
  4. 地理位置,位於navigator物件的geolocation屬性。
  5. 永久性的本地端儲存功能,位於window物件的applicationCache屬性。
  6. 離線的網頁應用程式,位於window物件的localStorage屬性。
  7. 改良的HTML表單,新增input標記的型別。
  8. 微資料(microdata),客製用語典(custom vocabularies)。
整體而言,這本書可以讓我們窺見HTML5的概況,內容方面是講述大方向、以概念為主,因此,「HTML5:建置與執行」適合給想認識HTML5的人。若想細部瞭解HTML5的語法和用法,需要再去閱讀HTML5的規範與相關應用的程式碼。

###

延伸閱讀
3 Elements of A Web Page網頁三元素

2011年11月28日 星期一

Learning SQL

SQL語言是使用資料庫時的基礎能力,對一個資料庫管理系統操作就是「說」SQL語言! 這裡介紹一本學習SQL語言的入門書籍,由歐萊禮(O'Reilly Media)出版,碁峰資訊發行,非常適合想學習SQL語言的初學者。

Alan Beaulieu著,張偉超、林青松編譯,陳佳新審校,SQL學習手冊(第二版),台北:碁峯資訊,2011。譯自:Learning SQL, 2nd Edition (Master SQL Fundamentals), O'Reilly Media。

SQL語言可分為三類:
  1. SQL結構描述陳述式(SQL schema statements)
    有關建立資料庫(資料表、索引、條件約束),通常是資料庫管理員要熟悉的工作內容。
  2. SQL資料陳述式(SQL data statements)
    建立、操縱和擷取儲存在資料庫中的資料,通常是程式開發人員與資料庫使用者,以及資料庫管理員必須熟悉的工作內容。
  3. SQL交易陳述式(SQL transaction statements)
    在多使用者的環境之下,用來開始、結束和回復交易,通常是程式開發人員與資料庫使用者必須熟悉的工作內容。
作者將重點放在講述SQL資料陳述式,全書總共15章,用了前面12章說明資料操作的語法,因此這本書適用於程式開發人員與資料庫使用者。另外,這本書以MySQL做為範例操作的資料庫系統,由於MySQL自由免費,而且安裝與使用都很簡單,因此沒有理由學不會SQL語言!

注意到,書中使用MySQL 6.0版本,目前2011年只有MySQL Community Server 5.5版本。 從Wikipedia搜尋發現,MySQL使用新的發行模型(New Release Model),6.0.11是最後一版,詳細可以參閱MySQL開發週期

###

延伸閱讀
Database 資料庫

2011年11月11日 星期五

System Analysis and Design 系統分析與設計

前些日子研讀系統分析與設計(System Analysis and Design),有個問題讓我感到疑惑,為何系統分析與設計的書籍都是討論「資訊系統(Information System)」呢? 若是如此,那書名應該改成「資訊系統分析與設計」。因為我認為「系統」是一個很大範圍的主題,不應該只侷限於資訊系統的分析與設計。同樣介紹一本書,資訊如下所示,聽jasper312說這是「系統分析與設計」領域的聖經本,各大考試的題目與解答都從參考這本喔!

吳仁和、林信惠,系統分析與設計—理論與實務應用,台北:智勝文化,2010。

書籍只討論資訊系統的理由,我認為有二個原因。第一 ,討論資訊系統比較簡單容易,目前資訊系統的分析設計工具與方法很多,因此討論會比較具體且容易。第二,萬物皆是「資訊系統」, 自然界中不外乎存在三種:物質、能量與資訊,討論資訊系統也就等於包含所有的系統。雖說是如此,但系統分析與設計的書籍看到最後,好像就是一本「軟體工程(Software Engineering)」的書籍,變成都是講述軟體開發流程。關於這點,希望未來能有書籍從不同的角度去討論「系統分析與設計」。

「系統分析與設計—理論與實務應用」這本書從兩個主要技術方法討論系統的分析與設計:「結構化技術」與「物件導向技術」,各別使用5章與6章的篇幅說明。結構化技術是將資料與流程分開考慮,而物件導向技術則是將資料與流程封裝成物件處理。除了這兩種技術外,還有其他如元件導向、服務導向等新技術。

整本書的架構如下:
  • 第01章 資訊系統開發概論
  • 第02章 資訊系統開發模式
  • 第03章 需求分析
  • 第04章 結構化技術
  • 第05章 結構化分析與設計-流程塑模
  • 第06章 結構化企業流程塑模個案
  • 第07章 結構化分析與設計-資料塑模
  • 第08章 結構化企業資料塑模個案
  • 第09章 物件導向技術
  • 第10章 使用個案塑模
  • 第11章 物件互動行為塑模
  • 第12章 使用者介面塑模──結構與狀態
  • 第13章 物件資料結構塑模
  • 第14章 系統元件與結構塑模
  • 第15章 結論與展望
若想對系統分析與設計有所認識,我想這是一本入門的參考書,淺顯易懂。另外,建議搭配一本軟體工程的相關書籍一起閱讀,對於資訊系統開發將會有更深入的認識。

###

延伸閱讀
Unified Modeling Language 統一塑模語言

2011年11月8日 星期二

Golden Rules for Writing E-mails 英文書信寫作

介紹一本實用的英文書信寫作書籍,這是「LiveABC互動英語教學集團」出版發行的書本和互動光碟,書中包含35篇主題的書信,內容除了講述撰寫英文書信的格式外,也詳述200個左右的常見錯誤說明,推薦大家這本書非常實用。

吳嘉玲,E-mail寫作不出錯(Golden Rules for Writing E-mails)全新增修版,台北:希伯崙公司,2008。

以下記錄電子郵件與一般書信的書寫格式重點。

一封電子郵件(e-mail)通常有9個項目:
  1. From:寄件人
  2. To:收件人
  3. Cc:副本,是carbon copy的縮寫
    Bcc:密件副本,是blind carbon copy的縮寫
  4. Subject:信件主旨
  5. Attachment:附加檔
  6. Salutation:稱謂語
  7. Body:信文
  8. Closing Segment:結語
  9. Complimentary Close:結尾敬語
 一般書信(非電子郵件)包含9個項目,由信件上至下依序為:
  1. Letterhead:信頭
  2. Date:日期
  3. Addressee:收信人
    Address:收信人地址
  4. Salutation:稱謂語
  5. Subject:主旨
  6. Body:信文
  7. Closing Segment:結語
  8. Complimentary Close:結尾敬語
  9. Signature:簽名
 另外,商用書信的三大格式分別是:
  1.  Full-block Form齊頭式
  2. Semi-block Form半齊頭式
  3. Indented Form縮格式
###

2011年11月2日 星期三

Beginning Programming 學習程式設計

如何學習一個程式設計?這個問題學校教育似乎沒有好好告訴我們青年學子們。以我自己的經驗來看,學校的程式設計課程大部分都是講述程式語法的使用,我認為這是錯誤的方法,教育程式設計的正確方式是:傳授程式設計的核心概念。

以下分享自己在程式設計學習之路的心得,期望能幫助正在學習程式語言的青年學子們。

首先,我們必須知道程式語言(Programming Language)的意義為何?我認為程式語言是「幫助人類完成處理資料的目的」,重點在於「處理」與「資料」兩個部分。

開始學習之前,根據「工欲善其事,必先利其器」原則,必須先準備好開發工具,不過這又關係到程式語言的種類。個人認為選用自由軟體的開發工具作為學習較好,例如EclipseNetBeans,也可以使用微軟的Visual Studio的Express版本。重點不在於開發工具和語言種類,這些都只是工具,學習程式設計在於程式設計本身!

開發工具有了,第一步先了解「資料」這個部分,你必須先認識資料型態,常見的資料型態有:整數、浮點數、字元、字串等, 這些屬於基本資料型態。由這些基本資料型態組合成的資料型態有:陣列、結構、類別等,稱為複合資料型別。學習的核心概念在於認識與瞭解每種資料型態的特性,什麼時候適合採用哪種資料型態,更進階學習則屬於「資料結構(Data Structures)」的領域了。

第二步是了解「處理」這個部分,程式處理資料不外乎兩種模式:重複與判斷。重複(或稱反覆)在程式語言中是迴圈 ,人類利用迴圈自動化處理重複的工作,一般來說有:for迴圈、while迴圈、do-while迴圈、foreach-in迴圈等,用於處理相同的動作。判斷(或稱選擇)在資料處理中依據資料狀態做不同的動作,通常有:if-else判斷、switch-case判斷等。重複與判斷互相搭配使用,已經足夠幫助我們完成處理資料的目的,同樣的,學習的核心概念在於認識與瞭解每種重複與判斷的特性。更進階學習則屬於「演算法(Algorithm)」的領域了。

再來,更進階一些的就是函式(副程式)的觀念,程式寫多的會發現程式碼重複,因此,你可以利用函式將常用的功能包裝起來成為函式,減少後續修改維護的麻煩。更進階的學習則是使用程式庫(library)與開發程式庫。

資料型態、重複與判斷這三類程式語言的基礎知識,如果可以掌握好,我相信你已經有程式開發的基礎能力。至於其他像是物件導向(Object-Oriented, OO)這個部分,我認為這是屬於更進階的程式設計學習,是讓你成為真正的「程式設計師」。

物件導向其實是程式語言的一部分(對於物件導向的語言來說,目前流行的程式語言時之八九都是OO),很難抽離去獨立學習程式語言。因此我建議剛開始學習程式語言,重心放在資料型態、重複與判斷這三類程式語言的基礎知識,物件導向若不明白以後再學習,千萬不要因為不懂物件而受挫,學習程式設計真的是很有趣的一件事情!

###

延伸閱讀
Web Programming Language網頁程式語言

2011年10月27日 星期四

Server Architectures 伺服器系統架構

伺服器(Server)在現在的網路世代非常重要,所有服務都必須由伺服器提供,不過伺服器的組成結構是什麼,對網路使用者而言可說是虛無飄渺像一朵雲!這次介紹這本「Server Architectures」,提供技術決策者(technology decision-maker)與系統架構師(system architect)認識伺服器的組成架構,如此在爾後的系統規劃上能有更高層次的視野。

 這本書以目前來看稍微舊了一些,第一次在2000年以法文發行,我買的這本書是2005年以英文版發行,並加入一些新的內容(2002至2004的技術背景),也許在今日科技技術快速變遷時代,部分的內容已成為過去式,但是其中伺服器架構的核心概念仍具有學習價值!


René J. Chevance, "Server Architectures: Multiprocessors, Clusters, Parallel Systems, Web Servers, Storage Solutions", Elsevier Digital Press, 2005.

這本書分成兩個部分,主要有三個主題,先介紹伺服器的組成硬體(CPU, Memory, I/O)與軟體,接著介紹伺服器系統的架構,最後說明選擇架構的效能評估標準。整本書的目錄如下:
  • Part 1: Architectural Options and Technology Evolution
    • 1 Processors and Memory
    • 2 I/O
    • 3 Evolution of Software Technology
  • Part 2: Systems Architecture Options
    • 4 Symmetrical (Tightly-Coupled) Multiprocessors
    • 5 Clusters and Massively Parallel Machines
    • 6 Data Storage
    • 7 Systems Performance and Estimation Techniques
    • 8 DBMS and Server Architectures
    • 9 The Terminology of High-Availability Systems
    • 10 Hardware and software Solutions for High Availability
    • 11 Selection Criteria and Total Cost of Ownership
    • 12 Conclusions and Prospects
認識伺服器架構之前,必須對更高層次的系統架構(Systems Architecture)有基礎的認識,書中將系統區分成兩類,注意這是以多處理器(multiprocessor)的角度來看:
  • Tightly-coupled,或稱為Symmetrical Multiprocessor (SMP)
    在一台主機上有多個處理器,只有一個作業系統,各個處理器共享所有的系統資源(Memory與I/O裝置)。所謂Symmetrical是指每個處理器在作業系統中都是具有相同能力的意思。
  • Loosely-coupled
    由多個獨立主機互相連接的系統,每個主機有各自獨立的資源(處理器、Memory與I/O裝置)與作業系統,系統中的每個主機稱為節點(node),各個主機之間通常沒有共享記憶體資源。代表的系統架構有:叢集(cluster)MPP(Massively Parallel Processing),也是分散式系統(distributed system)的概念之一。
有了這些基礎認識之下,伺服器通常會有容量的議題存在,因而需要擴充性(scalability)。伺服器的擴充有兩個維度:
  • Scale-up,或稱vertical growth。
    在一個主機上增加資源,增加處理器數量、記憶體、儲存容量。
  • Scale-out,或稱horizontal growth。
    增加系統中的節點數量,進而擴充整體系統的容量或效能。
上述只是稍微講述伺服器架構的基本觀念,還有很多知識需要進行研讀,後續再撰寫文章介紹。
###

2011年10月22日 星期六

Drive: The Surprising Truth About What Motivates Us 動機

這本書是討論動機的真相,如同原文書名「Drive: The Surprising Truth About What Motivates Us」,動機是行為的驅動力。研究指出,過去認為的動機論(原理、理論)與真相之間有著錯誤,導致「激勵制度」建築在有問題的動機論之上,進而產生一些深信不疑的觀念。

丹尼爾‧品克(Daniel H.Pink)著,席玉蘋譯,「動機,單純的力量(Drive: The Surprising Truth About What Motivates Us)」,台北:大塊文化,2010。

科學研究指出動機有三種驅力:
  1. 生理上的驅力:食物、性。
  2. 外在環境的驅力(外在誘因):獎勵懲罰制度(胡蘿蔔和棍子)。
  3. 工作的績效表現(內在激勵):滿足感、成就感、樂趣。
不過在1940年代,科學界普遍認為只有前兩種驅力存在(雙驅力理論),所幸有教授哈利‧哈洛(Harry F. Harlow)與研究生愛德華‧戴西(Edward Deci)這兩位先鋒的研究,動機的第三種驅力逐漸受到重視,讓我們對於人類行為有了更正確真實的解釋。

激勵1.0:人類是生理動物,努力是為了求生。
激勵2.0:人類除了生理驅力,也會對環境中的獎懲做出回應。
激勵2.1:加入道格拉斯‧麥葛瑞格(Douglas McGregor)的學說,主張人類有更高層次的驅力。
激勵3.0:從「I型行為」做基礎,強調內在激勵的第三驅力。

作者提出「I型」與「X型」 兩種行為的觀點,「I型」象徵內在(Instrinsic),指內在驅力大於外在誘因的行為,而 「X型」象徵外在(Extrinsic),指外在誘因大於內在驅力的行為。作者認為「I型行為」的優點比「X型行為」的優點要多,建議我們朝著「I型行為」學習。

I型行為有三大要素:自主(Autonomy)、專精(Mastery)、目的(Purpose)。當這三個要素具備的時候,內在驅力將大於外在驅力,因而產生「I型行為」。

整本書從動機論切入,探究目前企業的激勵制度,作者認為目前工作型態的轉變,已由過去強調利益目標的改變為以內在驅力為導向的工作內容(例如創新、目的感...),激勵制度已經不適用於這個時代,我們必須塑造適合「I型行為」的環境。

###

熱門文章