星期二, 9月 29, 2009

專案管理之美學--讓事情發生


Making Things Happen---Mastering Project Management
書名:讓事情發生《專案管理之美學 第二版》
作者:Scott Berkun
譯者:陳建勳
ISBN:978-986-6840-23-4
頁數:408頁
出版日期:2008年06月
售價:580



最近讀了一本 Scott Berkun 的書《專案管理之美學---讓事情發生

這類被推崇的書,像是 《Peopleware: 腦力密集產業的人才管理之道》,內容都有些共通處,最主要的就是尊重你的部屬 (人才管理) 以及認清管理工作的真正目的 -- 讓人才發揮他們的能力。所以專案經理的工作是建立與維持專案團隊的工作氣氛,以及創造前進動力的因素。後者就是《第十三章 讓事情發生》的內容。

在閱讀這本書時,我想每個人的感觸都不同,譬如 IT肥蝦似乎就比較關注專案經理的 心智修為,而 Evan 似乎就對 《第十章: 怎麼做才不會困擾別人:流程,電子郵件,以及會議》比較有感觸。

我個人對於電子郵件的部份也蠻有感觸的。比起電話,我更喜歡使用電子郵件,但是似乎效率不彰, 我想我應該考慮一下該如何節制之.

但是最能打動我的章節,其實是《第十二章 領導力為何是以信任為基礎》。

要贏得信任,人們得將工作做好,承擔起專案目標的責任,公平對待眾人,以及在艱困時刻,表現依然穩定。沒有人提到是否喜歡那些人,或者想邀請他們吃晚餐。看起來,信任是某種把其他人格特質砍掉的東西。我們可以信任不喜歡或不希望花時間相處的人。

而一致的行為和給予他人信任也是建立起他人對你的信任的要素。

星期三, 4月 22, 2009

美麗程式:頂尖程式設計師的思考方式

美麗程式:頂尖程式設計師的思考方式
Leading Programmers Explain How They Think

* 作者:Brian Kernighan等
* 譯者:陳建勳
* 出版社:歐萊禮
* 出版日期:2008年04月14日
* 語言:繁體中文
* ISBN:9789866840197
* 裝訂:平裝

或許是因為我本身寫的程式不多,所以無法感受到書中某些範例的美。

  • 1 正規運算式比對器---by Brian Kernighan

    基本上這是簡單版的 regular expression decider. 與其說這篇文章是在討論何謂 beautiful code,不如說在討論簡單又有延伸性的教學題目。

  • 2 Subversion 的 Delta 編輯器:只談介面---by Karl Fogel

    完全無法體會...XD

  • 3 我從沒寫過的最美麗程式---by Jon Bentley

    文章翻得不太好,譬如『動態程式設計』一詞應該是指 Dynamic Programming,一般是翻成動態規劃。『Knuth 的出版品』,應該是指 Knuth's publication,翻作 『Knuth 的著作』比較適當。

    這章是以 Quick Sort 為主,相當有趣。實作 Binary Search 和 Quick Sort 的文章有很多,實際上 Jon Bentley 本人的文章在這方面是經典。但是這篇文章的有趣之處在於他在討論如何『做實驗』。算是延伸了他之前的經典文章,相當有趣。

    有興趣更進一步的人其實可以看看他的線上演講:Three Beautiful Quicksorts

  • 4 找東西---by Tim Bray

    這一章主要是講正規表示式和 Binary Search。有趣之處有兩點。一是他的 Binary Search 和一般不同。(Gaston Gonnet 教的)

    我們在做二元搜尋法時,需要兩個變數紀錄邊界,並以此求出中間值,但在 Tim Bray 的程式中,他假設 這兩個變數的起始值是 -1 和 n+1,也就是說,這兩個值都是不合法的。他說這樣可以不用考慮很多 boundary cases,不過我不太清楚為什麼。

    另一個有趣之處是他的迴圈不會檢查是否找到搜尋值,因為 Tim Bray 覺得反正在大部分的情況下,都要花將近 log n 的時間才能找到元素,所以直接跑完迴圈再做檢查 (因為二分逼近法會夾住我們要的結果,所以可以事後再做檢查) 反而比較省時間。

    如果我們把這個 binary search 想成是 complete binary tree,我們就會發現,最後兩層的點會佔一半。所以這樣的作法還蠻合理的。

  • 5 正確>美麗>快速:設計 XML 查證器的教訓---by Elliotte Rusty Harold

    我的感想是,constant 非常重要。在演算法時間複雜度的分析中,constant 通常是不被注意的。除了某些已經被做到很徹底的領域,像是 String Matching。但在程式設計時,根據輸入資料的大小,提供好幾個方案是必要的,譬如 hash, array 等等,各自有其適用的尺度。

    但是這種 tunning 的動作在研究中似乎並不太被重視。

  • 6 整合測試的框架:來自脆弱性的美感---by Michael Feathers
  • 7 美麗測試---by Akberto Savoia
  • 8 動態產生影像處理程式---by Charles Petzold
  • 9 由上而下運算子優先權---by Douglas Crockford
  • 10 追尋加速的族群計數---by Henry S. Warren, Jr.
  • 11 安全通訊:自由技術---by Ashish Gulhati
  • 12 BioPerl 的美麗程式---by Lincoln Stein
  • 13 Gene Sorter 的設計---by Jim Kent
  • 14 優雅程式隨硬體演化:以高斯消去法為例---Jack Dongarra & Piotr Luszczek
  • 15 美麗設計的長期益處---by Adam Kolawa
  • 16 Linux 核心驅動程式模型:一起運作的益處---by Greg Kroah-Hartman
  • 17 另一層間接層---by Diomidis Spinellis
  • 18 Python 的辭典:滿足所有人的需要---by Andrew Kuchling

    這一章節中探討了 Python 辭典的設計。跟前面幾章一樣,一些優化的討論是免不了的,尤其是在 Python 之中,很多功能基本上都是以辭典為基礎建立起來,譬如 module 和 class 都是存放在辭典之中。

    文中也包含了一些我不太清楚的設計細節,譬如當 compiler 限制的 hash function 的 range 大小時,是採用 mask 的方式直接把高位 bits 給遮住。而且為了因應大量的比較,他們會把 mask 記憶下來。當然這種 tunning 其中牽扯到很多對效能的統計分析,譬如採用 open addressing 而非 chaining 等等。

    另外,作者也提到,跟 Jython 不同,Python 並不提供專門處理字串的辭典,而是根據 lookup key 來決定,如果使用的過程中都沒有碰到非字串型態的 lookup key ,則就採用只搜尋字串的 function,如果有碰到 非字串型態的 lookup key ,才會將 搜尋函數轉化為 general 的版本。

  • 19 NumPy 的多維迭代器---by Travis E. Oliphant

  • 20 NASA 火星探測任務~ 高度可靠的企業系統---by Ronald Mak
  • 21 ERP5:追求最大適應力的設計---Rogerio Atem de Carvalho & Rafael Monnerat
  • 22 一匙污水---by Bryan Cantrill
  • 23 分散式程式設計和 MapReduce---Jeffrey Dean & Sanjay Ghemawat
  • 24 美麗的並行性---by Simon Peyton Jones
  • 25 語法抽象:syntax-case 展開器---by R. Kent Dybvig
  • 26 省力架構:網路軟體之物件導向框架---William R. Otte & Douglas C. Schmidt
  • 27 整合商務夥伴:REST 方式---by Andrew Patzer
  • 28 除錯之美---by Andreas Zeller
  • 29 把程式視為文章---by Yukihiro Matsumoto
  • 30 對世界的唯一連繫---by Arun Mehta
  • 31 Emacspeak:完備的音訊桌面---by T. V. Raman
  • 32 運行中的程式碼---by Laura Wingerd & Christopher Seiwald
  • 33 替「算書」寫程式---by Brian Hayes

星期五, 3月 06, 2009

Peopleware: 腦力密集產業的人才管理之道

Peopleware: 腦力密集產業的人才管理之道 Peopleware: Productive Projects and Teams, 2nd ed.
* 作者:Tom DeMarco、Timothy Lister
* 譯者:方亞瀾、錢一一
* 出版社:經濟新潮社
* 出版日期:2007年12月02日
* ISBN:9789867889645




這本書有兩個版本。早期的版本中譯叫做 天才當家,新的版本叫做 Peopleware: 腦力密集產業的人才管理之道。新版做了一些修改,可是好像差異不大。

我自己是學術實驗室裡的小螺絲釘。所以對這個問題一向很有興趣。什麼叫做好的管理?尤其是最難管的知識工作者 ~~ !!!

程式設計師可能是最難管的這一群中裡的翹楚。這本書一開始就說:很多人以為自己是待在高科技產業,其實並不是,他們只是去應用高科技而已,大多數的軟體開發公司也都是如此。

這本書雖然是一本『管理學』的書,但是一點都不難懂,全部都是使用平易近人的例子,作者提出的論點也簡單到讓你不敢想像。

在開始談之前,我想要引用這本書讓作者的一句話,因為這句話,讓我很想讀下去。呵。

處於時間壓力下的人不會把事情做得比較好,只會做得比較快。(p.39)



Peopleware 的第二部份全部是在講如何營造好的工作環境來提高生產力。而他們的論點很簡單,不用錢的飲料和零食?不用!員工運動中心?不用!


(圖片來自 Office Design Gallery > Google)


最重要的是:安靜而寬暢舒適的工作環境。

一般的公司,或者我們實驗室也一樣,都是一個方形空間加上辦公室 OA 做成的隔間。這樣的設置的困擾是,噪音很大,例如,電話的響聲,同事的討論聲等等。像 Google 這樣已經是太有錢的狀態了。作者建議的方式比較實惠,利用 OA 隔間,動態地由小組成員決定分隔方式。這樣既可以達到互動的效果,也可以達到刪減造噪音的效果。(p.80)
  • 人均工作空間 2.8坪
  • 每人工作桌面約 0.84坪 (大約是 1.6 公尺x 1.6 公尺)
  • 封閉式或180公分以上的隔板

根據他們的研究顯示(p.75),生產力前25%的公司至少都提供兩坪以上的工作空間,而後25%的公司則是一坪多一點。此外下列幾項也有類似的關係。稱生產力越高的公司在這幾點上都做得很好。
  • 安靜
  • 隱密
  • 電話可轉為靜音
  • 有人代接電話
  • 同事不會沒事來打擾


這裡可能會有一個很直覺的問題是:好吧,我知道噪音很討厭,但是要減低到多少?可不可以背景音樂或小一點的空間就好?我自己的經驗是,聽音樂工作沒什麼影響,所以覺得用背景音樂應該還好。可是這裡作者卻大力反對。(p.111)

他提出一個實驗結果。1960年代,康乃爾大學找了兩批人來做實驗,一批喜歡邊聽音樂邊做事,另一批喜歡安靜的環境。這個實驗叫兩群人在相對應的環境下去寫 Fortran 程式,看看結果如何。

後來發現,兩邊工作表現完全一樣。

這個論點很合理,畢竟左右腦職掌不同。不過作者提出,在安靜的環境下工作的這群人,發現規格裡故意設計的數學巧合的人很明顯地多很多。作者認為這是因為創意思考之類的更高等級的腦力活動絕不是靠數理的那半邊腦就夠了,而是需要全腦應用,因此安靜的環境才會有比較好的表現。

從這個觀點延伸出來,作者指出了另一個email的好處:不會被打擾。(p.105)

利用email 除了可以減少電話的噪音外,也可以減少同事間的打擾。Skype 和 msn 或許也有類似的效果。Plurk 也是,如果只是閒聊的話,這個還蠻有減少打擾的功能。畢竟這是被動去觀看的:)

當然,團隊認同感的營造還是很重要的。所以作者也強調了『一起吃飯』的重要性。(p.125-p.126)

在第十六章,作者也很嚴肅地討論了離職率的重要性以及計算其中的成本,這個部份還蠻有趣的。我以前上科技管理時,也提過這個問題,不過老師只回答我說,這是高科技業的常態......。頗有這個問題不值得一談的意味。

這個問題的重要性不言可喻,前提是你的部屬的確是資產而不是負債。在這個面向上,作者的觀點是:良材是天生的,不是訓練的。所以一開始就找對人比什麼都重要。


這本書的最後一章,也就是第三十三章,是談開會時間與專案人力分配的問題。

這裡作者強調,簡報式的會議是浪費大家的時間。因為其他小組的成員對別的部門的事情並不感興趣,頂多會待在旁邊思考輪到自己報告時該說什麼而已。

這其實還蠻像我們實驗室的狀況。雖然實驗室的角色和商業公司有點不同,但應該還是蠻值得參考的。

星期日, 2月 08, 2009

新人文主義

新人文主義-從科學的角度觀看
The New Humanists: Science At the Edge

作者:約翰.布
編/譯者:霍達文
出版社:聯經
出版日:2008.04.30
ISBN:9789570832617
語言:中文 規格:中文平裝 
適讀年齡:全齡適讀 分級:普級
開數:25開15*21cm 頁數:336
定價:380元



  • 科若寧的文章《正確掌握人性》裡面有一段話,和我的想法不謀而合。

    性別色盲的社會政策不是不偏不倚的,也不是比較公平的,而是更偏袒更不公平。例如,我們為什麼假定男孩子和女孩子都以同樣方式學習?數學這門兩性差異最大的科目裡頭,男孩子的優勢很可能來自他們在機械和立體思考兩方面的先天優勢。有些證據顯示,假如我們使用避開這種優勢的方式調教女孩子,他們會有一些改善。這才是公平的教育政策所應該注意的問題。不論社會政策要處理的問題是法律、工作場所和經濟規劃,道理也是一樣的。

    科學和價值認知常常都是分道揚鑣的。尤其是在相對主義的影響下,一下要尊重這個,一下要尊重那個,但這未必是開放而理性的態度。

    舉個例來說,女子百米世界紀錄一直差男子很多,以及黑人比較不擅長游泳(!?)。這些未必都是因為歧視。社會影響是一個因素,但未必是唯一的因素....。

  • 藍尼爾 《半份宣言》提到圖靈測試

    圖靈錯在她假定,假如有一天一台參加這項實驗的電腦成功了,唯一的解釋是電腦變得更聰明,更像人,於是地位得到某種提昇。其實有另一種解釋也是同樣有效的,那就是人變笨了,變得更像電腦了。

    其實這並不是沒有可能阿:)

    當我們越來越依賴電腦,很多認知其實是得自於電腦,而可以得自電腦的東西,當然會受限於電腦的極限,人,也有可能因此更接近電腦。

  • 賴德 《多快、多小、多強大?》提到了 Margolus-Levitin theorem

    The processing rate cannot be higher than 6 × 10^{33} operations per second per joule of energy.

    說明了計算機的物理極限是多少。換言之,依賴實做技術的改進,我們還是無法處理 NPC problems,除非設計出更有用的算法。

  • 後面幾章關於弦論的部份我都看不懂,不過我覺得施莫林的《環圈量子重力》裡引用物理大叔關於研究方法的意見,頗為有趣。

    愛因斯坦在世時曾經抱怨說,許多科學家把自己侷限在容易問題的範圍之內,『專門找木薄的地方鑽洞』。我和費曼交談的機會不多,就有麼一次我們交談時,他說許多理論物理學家在他們的職業生涯中只提出有數學趣味的問題。他說:『如果你要有重大發現,那你得研究的問題是答案可以導致實驗預測的問題。』