2007年12月4日

Getting Real - 37Signal 的成功之道

本麵寫網誌這一個月以來,發現明明都是1000字的文章,有些一小時搞定,有些要花上半個月。這篇文章就屬於後者。通常本麵讀完書之前,是不敢妄下評論的。而這本書雖然是線上免費、屬於短評格式,但畢竟是英文寫的,還是花了半個月才讀完,寫出這篇評論。這一個月另外一個發現,就是這類與軟體開發相關的文章非常不受歡迎...,只有比國外科技新聞即時解析好一點。不過這些是本麵的興趣,我會撐下去的

 

===以上是碎碎念===以上是碎碎念===以上是碎碎念===

 

在介紹書之前,先介紹一下37Signal這家公司。基本上37Signal是一家小型軟體公司,專門製作網站型軟體,產品有Basecamp,Campfire,Backpack等等。但這家公司主要的名聲,並非來自這些利基產品,而是一套Web-based Application Framework - Ruby on Rails (RoR)。做Web的工程師就算沒寫過,也聽過RoR的名聲。到底是一家怎樣的公司,能創造這套framework呢?

Getting Real就是37Signal所出的書,其中道出該公司的網站軟體開發哲學,供好奇的網路人一探究竟。注意:他們專注於網站型軟體的開發,而非傳統、需要安裝的軟體。歸結一下,該書的哲學如下:

  1. 跳過所有間接部份,直攻軟體本身:盡量不開會、不寫functional spec、不寫使用手冊(用FAQ及簡潔設計取代)。重點是:寫軟體。盡快做出真正的網站才是最重要的啦!
  2. 少就是多:不必要的間接部份少一點、文件少一點、軟體少一點、功能少一點、不是基本的東西少、一、點!(完全不像軟體公司會說的話…)
  3. 保持小、輕巧
  4. 先寫使用者界面、再寫後端程式:界面才是使用者會用到的。先確定界面正確、程式才不會錯!
  5. 階段式開發:不需要完成所有功能,發表、調整、持續改善網站才是網站開發的王道!
  6. 有限提供:給客戶他們需要的、除去他們不要的!!

本麵現在的工作正是軟體開發,但應用的開發方式與37Signal的方式非常不同。現在大公司多還是應用一年發行一個新版本的方式。這種方式需要長時間的開發、測試工作。但本麵也觀察到這種方式的確有反應慢的問題。這種問題對大企業還ok,但對小公司則非常致命。有一個可能的解決方法是:減少開發時間,經常發佈新版本。但對需要安裝的軟體而言,並非好的解決之道。但對網站而言,常常發佈新版本或許是比較好的方式。而37Singnal則是依據網站的特性,把網站的開發推到另一個極致。

看完整本書,另外有非常熟悉的感覺:Getting Real的哲學與Joel的哲學非常接近:善用小公司輕、薄、短、小的優勢,集中火力,不怕競爭,專攻利基市場。如果本麵未來有幸到類似公司工作,一定要好好應用這些知識的啦!

這幾天更新會慢一點…

本麵發現用注音打字實在不行 - 雖然有新酷音加持,但選字還是很慢,而且長期下來手也會因為不自然的姿式而受傷。

很久以前,本麵發現自己打注音打太多,中文字都忘了怎麼寫。當時練了一陣了嘸蝦米,後來無疾而終。現在終於決定砍掉重練…也因此一篇文章要三、四倍時間才能寫完,更新速度一定會慢,請大家見諒,謝謝!

2007年12月3日

不要再說你的小孩笨了 - 他們的IQ比你高!(平均來說啦...)

好吧,本麵先承認標題下的有點聳動。應該要下「世界愈來愈聰明了-新世代的IQ愈來愈高」。

這研究由James Flynn所提出,這個效應也被稱作"Flynn Effect"。研究結果顯示,美國白人的IQ在50年間成長了0.3。這個研究也被荷蘭的一個相關研究所證實。所以大家都愈來愈聰明了,耶~

但究竟原因為何?難道我們腦容量在50年間就有顯著成長嗎?一般研究顯示環境是IQ成長的最大關鍵。現在的生活環境、工作內容需要大量的邏輯、推理、記憶,而這些也是正式IQ測驗所測試的。研究者也認為,IQ提高是有代價的:新世代在其他能力也有所折損,來平衡IQ的成長。

順便討論一下「我的孩子不比別人差」的台灣現狀。因為本麵也有一個兩歲的小子,所以能理解為人父母的心理。例如楚狂人為子祈禱文,道盡了父母對兒女的期望。但本麵認為,父母能給的,是好的環境與正確的價值觀,然後祈禱。曾經聽過,養小孩跟種樹一樣,你永遠不知道拿到什麼種子。當你拿到向日葵的種子,卻要他像榕樹...通常結果...

結論是:如果你是父母,希望兒女能成功(贏過別人通常是成功的定義),很抱歉讓你失望了。你的兒女IQ應該會比你高,但他們的世代IQ也跟著提高了。難道真的要去上陳俊生老師的快速記憶訓練課程...

原文連結:THE WORLD IS GETTING SMARTER

2007年12月2日

玩紙上大富翁(地產大亨)的必勝之道 - ㄟ,這也跟經濟學有關喔?

原文在此:How to Win at Monopoly® - a Surefire Strategy

先正名一下:我們熟悉的大富翁(地產大亨),可不是台灣人的發明。這遊戲是美國人在1935發明的啦。當然國外不會買我們台灣的台北車站、仁愛路,那是台灣人將遊戲在地化的結果!

還記得以前玩大富翁,只有兩種玩法:第一種,不怕死,拼命買,買到沒錢,然後開始祈禱有人不小心踏入我的地盤,付我一大筆保護費...不是啦,是過路費,如果在這之前踏上別人地盤,就被亂刀砍死...不是啦,就破產了,END。(本麵在寫古惑仔傳奇嗎?第二種,小心翼翼,什麼都不買,然後最後不小心踏上別人地盤,破產,END。

其實你有更好的選擇(本麵在賣落健嗎...),一個大富翁愛好者在精密計算之後,認為這個遊戲混和了運氣、策略與人際技巧(因為可能有人與人的交易),所以新手也可能贏老手;但如果掌握策略,長期而言應該可以提高勝率。

作者提出了一些獲勝的策略:

  1. 車站一定買。公用事業不買。在以下情況買下其他種類地產,可以獨占(買下所有同色的)或阻止別人同色。這代表一開始就要猛買,但記得要留一些錢。
  2. 一開始買一、二側(從開始數起),即使要把二、三測的地產賣掉。之後儘快蓋不多不少三棟房子。
  3. 等一、二側賺錢,開始開發三、四側。一樣蓋剛好三棟房子。
  4. 沒房子的土地是最差的投資。
  5. 唯一例外:要防止其他人完成購買同色的土地,則以上規則都可以違反。
  6. 坐牢也是好事:如果已經有人完成寡占,走來走去也是浪費錢。除此之外,付錢逃離監獄。

五個最佳地產:

  1. 四個車站
  2. 在三塊橘色土地上各蓋三棟房子
  3. 在三塊淺藍色土地上各蓋三棟房子
  4. 在三塊淺紫色土地上各蓋三棟房子
  5. 在三塊深紫色土地上各蓋一棟旅館(蓋好旅館之前,是很糟的投資)

這裡有圖,不過是英文版的

對了,這跟經濟有什麼關係?喔,還記得經濟學的假設嗎?「人是理性的動物」,以上策略都是經過精密計算的結果。不然你看看下面這張圖,夠理性吧!想知道整體策略的來源,請參照原文

有人要跟本麵玩嗎?我猜沒有...

最後這邊還有一篇關於大富翁怎麼協助盟軍戰俘逃出德國戰俘營的故事:War-opoly: How History’s Most Popular Board Game Helped Defend The Free World

還有最新、可以刷卡的電子版地產大亨

資料來源:Freakonomics

2007年12月1日

專案總是延誤?因為你用錯排程方法了! - Joel on Software系列

Joel在軟體開發上,總是有獨到的見解。本麵認為基本上他的概念,有下列幾個基石:

  • 以人為本:找到對的人,好好照顧他們,通常一切就會對了 。
  • 不自欺欺人:不訂定做不到事,包括功能、時程等。

這次要介紹的是:Evidence Based Scheduling,本麵翻為實際排程法,因為基於實際資料、作法實際、做出來的時程也實際(這也是最重要的一點)。

開頭Joel就說明,工程師都不喜歡定時程:第一、很難預估,第二、沒有人認為時程是真的。針對這兩個問題,Joel的公司發明了Evidence Based Scheduling (EBS)來解決這個問題。EBS的步驟如下(細節有興趣的朋友可以去看原文):

  1. 做出Work Breakdown Structure (WBS):以小時為單位,把工作分成細項。每個工作最長不能超過16小時。時間太長的工作,代表你根本沒有去想到底這個工作要做多久。在你把工作分為細項的同時,你也在確定設計細節。
  2. 追蹤花費時間:追蹤之前每個工作所花的時間,算出工程師預估的時間與實際花費時間的比例,當作未來預估的基礎。
  3. 模擬未來:使用蒙特·卡羅方法,找出可能的專案完成時間範圍(重要觀念是,比較正常的預估得到的結果,應該是範圍,不是一個固定值)
  4. 管理專案活動:找出Critical Path啦,等等,依照實際狀態,調整你的時程。如果專案預估時程隨著時間愈來愈晚,You are in trouble。

另外有一些要注意的重點:

  1. 由做事情的工程師預估時程。
  2. 隨時解bug,把花的時間加到該工作花費時間裡。
  3. 不要讓管理者跟工程師「橋」出更短的時程:菜鳥經理會任為短的時程可以激勵工程師加快腳步。根本是白痴。落後時程對士氣勢打擊,而非激勵,這道理很多台灣企業永遠都不懂。(或者他們裝不懂)。整天加班長期而言生產力並不會提昇,懂嗎?
  4. 時程就像一箱木塊:如果箱子裝不下,你有兩種選擇:找個更大的箱子(時間拉長),或拿出一些木塊(減少功能)。你不可能把木塊變小(你可以欺騙自己那些木塊很小,但那終究沒有用)。時間不夠,就砍功能吧!天底下沒有非要不可的功能。Joel的一個經驗是:在Excel 5認為絕對必要,但被延後到Excel 6的功能,後來一個都沒做-因為都是些根本沒價值的功能。你的產品有比Excel好嗎?

Joel保證用EBS你可以準時下班。

本麵讀完之後的感想是:信任是台灣企業目前最缺乏的(還是說台灣社會?)。Joel提的這些方式,都是基於企業信任員工的基礎上。台灣企業看到這些方式,反應不外乎:

  • 「要是工程師騙我,把時程估的很長怎辦?」:你怎麼會請到這種員工?或者說,為何你的員工要用這種方式保護自己?一定是他受過傷(被擠壓時程、加班加到天昏地暗)。歸咎起來,就是大家都不信任彼此。要改變這種文化,請從管理者做起。
  • 「現在擠壓時程估計要做五個月,這種方式不是要做十個月?」:所以這功能應該哪時候有最好?今天嗎?如果一個功能應該今天就有,為何規劃者(經理、PM)不能在之前就規劃出來?所以其他人的無能要由工程師用加班來承擔摟?那你薪水要不要工程師幫你領呀?

無怪乎台灣人加班加的要死,員工效率在全世界排倒數(日本也是)。很多時候都在做虛工(好聽一點叫做調整策略方向,讚啦!)。天佑台灣!