2011的文章

Coding: 寫 Test 還是不寫 Test?

September 1st, 2011

appWorks 有一些問題我們常常討論,例如:用什麼工具、做什麼產品、該怎麼行銷、該跟誰合作、怎麼合作、什麼時候增資、該拿多少錢… 等等,這些問題往往沒有一定的答案,也必須要視情況而定。但越是沒有標準答案的,我認為越是應該多討論,這樣才能幫助創業者們根據自己的情況,定義出最適合自己的處理方式。

而關於 coding,「要不要寫 test」就是其中有一個這樣的問題。我個人的意見是當你要做一個非常簡單、用完即丟的 MVP,那不必寫 test。如果邏輯比較複雜、日後有維護的必要或是有和人家協同工作,那你一定要逼迫自己寫 test。

這絕對不只是完整性、邏輯性或是身為一個工程師的職責問題,而是你如果不寫 test,就是跟自己過不去 — 跟好的 comment/documentation 一樣,不做的話,日後要維護時,你將會花更多時間在弄懂自己當初寫的 code,當別人要用你的東西,你也必須花更多時間跟他解釋,這不就是跟自己過不去嗎?

我得承認關於更深入的判斷什麼時候要寫 test、該怎麼寫,我不是專家。但是今天讀到一篇文章寫得很好,在這裡跟大家分享。

  1. Test 讓你用程式功力去挑戰你的程式功力 — 身為工程師,大家最討厭的就是不斷的手動測試了,那何不把這些寫成程式?況且最好的進步方法就是以己之矛,攻己之盾,這樣不斷的循環下去,你的程式功力一定突飛猛進。
  2. Test 讓你跟你寫的程式還有你自己對話 — 當你若干時間之後回來看自己寫的 test,你將會重新檢視自己當初的邏輯 — 這樣複雜的錯誤處理真的有必要嗎?這個物件夠獨立嗎… 等等,並且想清楚你寫的程式跟整個系統的架構是否吻合。
  3. Test 提醒你程式是用「用了」多少行衡量,而不是「寫了」多少行 — 記住,最棒的程式碼,不是程式碼
  4. 好的 Test 設計還包含好的 Test 註解 — 如果你寫好的測試,別人更容易了解你的程式,和如何跟你介接。
  5. Test 讓你可以看穿別人寫的 code — 同樣的道理,如果大家都寫好的測試,那你可以更容易了解別人寫的 code,大家都會進步的更快。

以上,就是一些關於寫 test 這件事情的觀念,希望能夠讓你更認同 test code 的價值。或許你有更有趣的經驗?歡迎留言跟大家分享。

想要在臥虎藏龍的 appWorks 跟高手們一起創業?第四屆 appWorks 育成計畫歡迎你的加入。

(image via richardmoross, cc license)

別再寫科幻小說!

August 31st, 2011

這個工作最大的好處,就是每天都會有創業者來找我聊天。他們真的很有創意,會提出許多你從來都沒有想過的 ideas 和做法。不過也常常發生的,就是這些 ideas 最後都變成了科幻小說的劇情。

創業是科學的

創業,尤其是網路創業,其實是很科學的。除了好的 ideas,你必須要用數字去證實這些 ideas,到底是有價值還是沒有價值、有效率還是沒有效率、消費者買單還是不買單… 等等等等。例如我上星期寫了這篇「Mr.Jamie 網誌的流量與營收秘辛」,其實就是在示範數字的解讀 — 今天如果我要最佳化這個網誌的營收,那應該多推薦書籍,不過那不是我寫網誌的目的。

Science vs. Science Fiction

而科幻小說和科學之間的差異,就是 Science Fiction 偏重作者主觀的感覺,或者只採取自己願意相信的數據。舉例來說,今天早上讀到的一篇文章,美國 10 年全球反恐戰爭,每年花費 750 億美金,結果呢?這些年來在國外死於恐怖分子攻擊的美國公民人數比死於車禍、大腸病變的都還要少。

當然這不是最好的例子,因為保護每一個人民是政府的責任,但如果你是創業團隊,與其一廂情願的花費更多錢在開發反恐裝備、制度,讓使用者的生活更不便,還不如把汽車安全和大腸檢測的儀器做好。這也讓人想到台灣每年要賠在面板、DRAM 產業上的幾千億資金,如果只要拿 1% 來投資網路業,那該有多好。這些,就是科學和科幻小說的差別。

假科學

另外一個常犯的錯誤,就是把因果關係的邏輯搞混的「假科學」。例如我們常常說「黑人比較會運動」,因為觀察到從 100 公尺、馬拉松、籃球到拳擊,獲勝的人常常都是黑人。但事實上,這件事情跟黑黃白一點關係也沒有。以長跑為例,常常獲勝的人其實都是肯亞人,而且都是肯亞的南地人 (Nandi)。也就是說,南地人有著一些特殊的基因,讓他們在長跑上更勝過其他地區的人。

而常常贏短跑的則都是牙買加人和美國人,其他非洲人根本沒有機會。所以跑步這件事情跟黑黃白其實一點關係也沒有。事實上,大部分的事情跟黑黃白都沒有關係 — 在同一顏色人種中,基因的差距影響高達 85%,但是在不同顏色人種之間的影響,只有 15%。

網路業也常常有類似的假科學,例如用「年齡」、「性別」去區分你的客戶。這是一件愚蠢到不行的事情,首先,誰知道電腦影幕前坐的到底是誰。再來,會買單的人就是會買單,你管他是幾歲、男的女的,重點是他買了之後還會不會回來,即使是一個 80 歲的老阿公,如果一試成主顧,你還是要好好服務他。所以一天到晚在那邊講我們要服務「女性」、「25 歲」的使用者,其實透露的是你對科學的不理解。與其那樣說,還不如說我們要服務所有「想要用高級保養品有效永保青春」的消費者。

精實創業說穿了,也就只是這樣而已。把科學的方法用在創業上,讓你不再矇著眼睛寫小說,結果當然是大大增加創業成功的機率。這樣,你懂了嗎?

準備好把靈魂出賣給科學了嗎?第四屆 appWorks 育成計畫歡迎你的加入。

(Image via dahlstroms, CC license)

為什麼 3 個臭皮匠 > 1 個賈伯斯?

August 29th, 2011

飛機在北加拿大的雪山中間墜毀了,你們是幾個倖存的人。時間是一月中,日間溫度是華氏 -25 度,夜間則是華氏 -40 度。根據推算,你們距離最近的城鎮有 30 公里。從飛機的殘骸中,找到了 12 個可能有用的裝備 — 鐵絲、斧頭、手槍、報紙、沒油的打火機… 等等。現在,請你們把這些裝備,按照求生的重要性排列。

Stern 新生訓練時,一個管理學教授給了我一堂永生難忘的課。他先把我們分成 4-5 人一隊,然後玩了上面這個「生存遊戲」。首先,我們必須先個別寫下自己的答案 (裝備重要性的順序),然後再跟小組的人討論,決定小組的答案。

最後,教授公布由野外求生專家推薦的「正確」順序,每個人再根據這個順序幫自己的答案評分,也幫小組的答案評分。所以這個遊戲的最後,選出了最能夠在冰天雪地合作生存,默契最好的團隊。

錯,事情才沒有那麼簡單!

大家算完分數之後,就看到教授緩緩的把成績都在黑板上寫下來,然後揭漏了一個很恐怖的事實。當你把個人所得的分數拿來平均之後,這個結果居然遠低過幾個團隊分數的平均。然後更重要的是,當你把所有團隊的答案拿來綜合,得到的列表居然跟求生專家的建議如出一轍。

這什麼意思?

意思是說當你結合了眾人的智慧,得到的答案正確率會是非常非常高的,即使個別來說每個人都很遜 — 不要懷疑,MBA 學生都不是野外求生專家。這課「三個臭皮匠」,真的讓我留下了非常深刻的印象,但也更好奇這個「眾人智慧」到底是怎麼運作的。

MIT 研究報告

剛好今天早上讀到這篇「MIT Unravels the Secrets Behind Collective Intelligence – Hint: IQ Not So Important」,解開了我多年來的疑惑。原來,根據 MIT 的研究結果顯示,當你把一群人組合在一起時,集體智商所發揮出來的效果,居然會比團隊中任何成員的智商都還來得重要好幾倍。

也就是說,當你把眾人聚集在一起時,大腦會發揮「串聯」的效果,產生的馬力將比任何個別大腦都還來得高。

使用須知

但要使用這個「雷電合體」的串聯功能,有幾個注意事項。首先,這個團體的平均值很重要,所以創業夥伴一定要是 A 咖。再來,團體決策一定會花比較多的時間,所以什麼事情要大家一起討論,什麼事情要讓個人可以快速決策,大家必須要用心的去定義,才能夠達到效率的極致。

以上,希望有幫助你們理解「三個臭皮匠」為什麼有機會打敗 Steve Jobs,加油!

需要更多 A 咖跟你一起討論、做決定?歡迎加入第四屆 appWorks 育成計畫

(Image via eole, CC license)

©2024 MR JAMIE.
網站由 Allen Hsu 設計 | Logo 動畫由 Wen Chen 完成