2013/4/27

get the minimum element in list using erlang

Erlang Programming Exercises 給了一個要找出 lists1:min(L) 的習題

Erlang Example: Min and Max Element of a List 給出了一個超簡單的答案
-module(mylists).
-export([max/1]).
max([H|T]) ->
    max(H, T).
max(M, []) ->
    M;
max(M, [H|L]) when M > H ->
    max(M, L);
max(_M, [H|L]) ->
    max(H,L).

簡單地說,就是把 List 拆成 M|T,然後再把 T 分成 H|L,也就是 M,H,L,如果M>H,就繼續計算 max(M,L),如果是其他狀況,就計算 max(H,L)

一開始,我沒辦法想出這個樣子的解法。

不過後來參考了 qsort

qsort([]) -> [];
qsort([Pivot|T]) ->
 qsort([X || X <- T, X < Pivot])
 ++ [Pivot] ++
 qsort([X || X <- T, X >= Pivot]).



想出了另一種解法


max([]) -> [];
max([H|[]]) -> H;
max([Pivot|T]) ->
    L = [X || X <- T, X >= Pivot],
    case length(L)>0 of
        true -> max(L);
        false -> Pivot
    end.
 


重點是 L = [X || X <- T, X >= Pivot] 可以取得所有比 Pivot還大的 list,但如果得到的結果是空的 list,那就代表,最大的元素是 Pivot。


Programming exercises 也給了兩個答案

list1.erl 是比較直覺,看得懂的例子,但缺點是min_max 必須traverse list 兩次
-module(list1).
-export([min/1,max/1,min_max/1]).

min([H | T]) -> min(T, H).

min([], CurrentMin) -> CurrentMin; 
min([H | T], CurrentMin) -> 
  if   
       H < CurrentMin -> min(T, H); 
       true -> min(T,CurrentMin) 
    end.          

max([H | T]) -> max(T, H).

max([], CurrentMax) -> CurrentMax; 
max([H | T], CurrentMax) -> 
  if 
      H > CurrentMax -> max(T, H); 
        true -> max(T,CurrentMax) 
    end.          

min_max(L) -> {min(L), max(L)}.


list2是改進的版本,裡面使用了這個list的函數,min_max 只traverse list 一次,就同時把 min, max 的兩個元素都找出來

foldl(Fun, Acc0, List) -> Acc1
Fun這個函數有兩個參數
第一個參數是List中的元素,第二個參數是Fun函數執行完後的返回值,這個參數第一次執行時
就是Acc0
例子:對[1,2,3,4,5]求和
lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
結果:15
執行過程:首先,Fun第一次執行時,X的值取列表List的第一個元素1,Sum取0,
  Fun第二次執行時,X的值取列表List的第二個元素2,Sum取Fun第一次的返回值
  依次輪推,直到List中每個元素執行完,最後foldl返回最後一次的結果。


%%% Code: list2.erl


-module(list2).
-export([min/1,max/1,min_max/1]).

min([H | T]) -> lists:foldl(
  fun(X,Acc)->if X X; true->Acc end end, H, T).

max([H | T]) -> lists:foldl(
  fun(X,Acc)->if X>Acc -> X; true->Acc end end, H, T).

min_max([H | T]) -> lists:foldl(
  fun(X,{MinAcc,MaxAcc}) -> 
    if 
      X < MinAcc, X < MaxAcc -> {X, MaxAcc};
      X > MinAcc, X < MaxAcc -> {MinAcc, MaxAcc};
      X > MinAcc, X > MaxAcc -> {MinAcc, X}
    end
  end, {H,H}, T).

2013/3/12

精實創業 by 艾瑞克‧萊斯 Eric Ries

有很多書會以這樣的方式來教育讀者,如何在24hrs學會Java,或是如何成功致富,這些正向思考的書教大家如何成功,但是卻省略了最重要的「失敗」的部份,雖然「成功」的媽媽帶來了一句名言「失敗為成功之母」,這句話大家耳熟能詳,然而從小到大,我們在教科書裡讀到的,學到的,都已經是無數前輩經歷過許多失敗才得來的結果,幾乎不會有人教大家怎麼「體驗失敗」。

這本書的作者艾瑞克‧萊斯 Eric Ries以他個人創業的經驗,告訴大家因為他曾經經歷過幾次失敗,因此他得到了很多寶貴的經驗,並以這本書來告訴大家,要怎麼避免一定會導致失敗的想法與作法,希望讀者能以他為借鏡,避開可能的創業地雷,減少損失。

大多數的創業都是以失敗告終,成功並不是想當然耳,指日可待的定律。正因為如此,作者更提出一套創業所要遵循的法則與學問,避開地雷,這本書的具體目標就是,「提高全球各地新產品的成功率。」簡短的一句話,正是所有初創創業該要尋找與訂定的一個長期目標。

創業的五大法則為:一、人人都是創業家。二、創業即管理。三、驗證後的學習心得。四、「開發、評估、學習」五、創新審核法

本書分為三大部份:「願景」「駕馭」「加速」,以下把書本內容一些重要的話紀錄起來,提醒自己要常常回想書本的內容。

第一部份:「願景」

精實創業一詞來自大野耐一在豐田汽車提出的革命性主張 - 精實製造,他的主要原則為:讓每位員工充分貢獻所學,並負起應付的責任,縮減每批工作的生產數量,在市場有需求時及時進行生產並控制庫存,加快生產線循環的速度。

一個完整的創業管理法,要能在極度不確定未來的情況下,提供評估公司發展的方法,必須能明確地指導創業人士,如何做出合適的交易決定,是否與何時在發展過程中加碼投資,如何制定計畫與興建公司基礎建設,何時該選擇獨資發展,何時該與人合資,何時該對意見做出回應,何時該堅定公司立場,如何及何時該進一步投資壯大事業,讓創業者做出可接受檢驗的預測。

精實創業是以願景為基礎,透過各種中間的策略方法,進行評估與學習,最終得到一個產品,並持續進行優化的過程。

創業可能發生在車庫,也可能在一個公司裡面,創業指得是一個整體的初創生態系統,不需要考慮公司規模、部門或發展階段等因素。但通常在大公司裡面,不會遇到各種極度不確定的狀況。

一個由人組成、專事新產品或新服務的開發、未來發展具有高度不確定性的機構,稱之為初創事業。任何可迎合顧客需求的價值來源,都可稱為產品。

初創事業用來測量成效的方法:驗證後的學習心得,這是一個利用實際經驗來證明創業團隊已經找到公司現時與未來發展潛力的過程,它比市場預測和商業企劃來得更實際、精確且快速。學習是初創事業成長的重要元素,那些與瞭解顧客真正需求毫不相干的工作,可以完全捨棄。

改變策略,將產品提早送交給顧客使用,推出劣質的雛型產品,即使是非常不完美的作品,第一天就向顧客收費,以低額的業績目標作為鞭策自己的方法。經過第一手顧客的使用之後,取得來自顧客的使用數據,提交給下一個階段的行動判斷作為依據。避免長時間經過「零」的階段,延遲確認數據,會產生不良的效果,例如:提高工作浪費量、流失重要顧客回應、大幅提高產品無人聞問的危險性。

精實創業法將初創事業的作法,當作一連串的實驗,每一個實驗的目的,都是為了找出一個以願景為藍圖,讓企業永續經營的方法。藉由測試的策略,找出哪些是可行的,哪些又是不著邊際的,一個真正的實驗是依循科學方法進行的。要有個清楚的假設,預測將會發生什麼事情,然後對這些假設進行實際的測試。

創業家最重要的兩個假設:價值假設與成長假設。價值假設要測試的是,產品或服務是否能帶給使用者價值。成長假設要測試的是,新顧客如何發現一項產品或服務。提出一個親自服務式最小可行產品(concierge minimum viable product),根據初步獲得的回應與實驗結果,發展出更多的實驗。以最短的時間,持續進行實驗,並同步地調整策略企劃。

深入產品優化之前,都要先確認風險、擬定主要假設,然後進行實驗驗證。不斷地推出測試版本,不斷地學習,當先行使用的顧客玩得興高采烈時,持續透過網路調查工具,進行更深一步的需求確認,解決真實顧客所反應的問題。

第二部份:「駕馭」

「開發、評估、學習」的回應循環機制:構想->開發->產品->評估->數據->學習,然後不斷地循環,並致力把給一次循環所需要的總時間減到最低。適用於初創事業的精實製造理念:MVP小量生產的效力,這個最小產品,必須是可以接受測量的。

進入評估階段後,最大的挑戰是確定產品開發的努力,是否讓公司有所成長。使用用來評估成效的創新審核的度量法,可以用來設定學習里程碑,並取代傳統界定的產品里程碑。

走完「開發、評估、學習」的回應循環機制之後,就會面臨創業家最難決定的問題:「選擇Pivot或是堅持原來的方向。」如果發現有一項假設是錯誤的,就應該快刀斬亂麻,重新設定一個新的策略假設。

策略立足於假設之上,策略可幫助創業家找出對的問題來回答,而策略的決定,必須建基在對顧客的第一手瞭解上。每一個商業企劃都是從假設出發的,列出的策略都把假設當成已知的事實,然後直接提出如何達成公司的願景。但由於假設未經過驗證,其實很多都是錯誤的,初創公司初期目標,應該是儘快對假設進行測試。

這些假設備稱為「絕對信念」,因為整個企業的成敗完全操在它們的手裡。成功的創業家,都擁有遠見、能力及有用的輔助工具,這些工具是用來發現,計畫中哪些部份發展出色、哪些策略被誤導必須予以修正。

從辦公室出走,拿起電話簿隨意撥打電話,詢問民眾的需求。以抽樣調查的方式,直接進行客戶訪談,確認需求的真實性。與客戶作初步接觸,用以釐清我們是否對潛在顧客遇到的問題,有了粗淺的基本認識。基於這個認識,就能打造一個顧客原型 customer parchetype:一個把目標顧客擬人化的簡單描述。顧客原型只是一個假設,不是一項事實。

做了再說創業派一般沒有耐性花時間分析策略,通常只會隨便找幾個顧客交談,就迫不及待地開始製造產品。很不幸地,顧客並不知道自己到底想要什麼,這一派創業家會因此被蒙蔽。另一類創業家是「分析性癱瘓」受害者,他們無止盡地分析商業計畫,無論訪問顧客、研讀研究報告或白板作戰,對他們都沒有幫助,最大的問題是,他們倚賴的事實基礎是錯誤的。很不幸地,這個錯誤無法在白板上被發現,只能在顧客與產品互動時被偵查到。

「最小可行產品」與雛型產品或產品概念測試不同,它不是用來回答設計或技術上的問題,而是為了要測試重要的商業假設。「最小可行產品」是可以讓「開發、評估、學習」循環的時間減到最低、又不費功夫製作的一個產品。

「最小可行產品」的重點是:一項產品功能就算再重要,只要它超出了足夠開始學習的基本需要,即屬浪費。創業家必須要抗拒過度製造與過度承諾的誘惑。

案例:「影片式」dropbox、「親自服務式」Food on the table

MVP挑戰傳統觀念對品質的要求,如果已經掌握消費者,就可以使用品質論,但初創事業根本連顧客是誰都不確定,自然在一開始要忽略對品質的要求。

製造「最小可行產品」的風險是實際與想像兩種,最常見的減速丘是法律問題、對競爭者的恐懼、道德影響力、以及品牌塑造的風險。

初創事業的任務是:一、積極評估自己現在所處的位置,然後勇敢面對評估出來的殘忍事實。二、設計可以學習如何將實際數字推向目標的實驗。

創新審核法步驟:一、用MVP將公司現狀的數據建立起來。二、從基準線出發,朝理想的方向去調整引擎,當初創事業做好細節修改和產品美化工作,準備從基準線朝理想出發時,它會來到一個決策點,就是步驟三、軸轉或堅持。

「群組研究」是分析初創事業最重要的工具之一,它不考慮總收入或客戶總人數之類的累積總數,只看個別使用過產品的客戶群的表現,每一組客戶稱為一個「群組」。案例:將客戶分為(1)登記卻未曾登入(2)曾登入(3)進行過一次對話(4)進行過五次對話(5)付費,以漏斗式分析法,查看客戶的比例。有數據時,會極力去探討,為什麼顧客對產品的改良沒有反應?為什麼努力都沒有回報。很快地就能找到答案,對客戶有了真正的瞭解。

工程師、設計師與行銷人都擅長將事物優質化,但如果是一個錯誤的產品,不管如何優化,都得不到好的結果。

提防「虛榮指數」可能帶來的危險。案例:即使總收入增加,但付費客戶在所有客戶中所佔的比例始終沒有改變。

「分組測試」,在同一時間對顧客進行不同版本的測試,藉由觀察兩組客戶行為的差異,對不同變數造成的影響得出結論。這可以幫助團隊更瞭解,什麼是顧客的真正需求。

一份報告必須要有(1)可行性actionable:必須展示出明確的因果關係,否則只是一個虛榮指數,例如要明確地說出,要採取哪些行動,才能複製出相同的結果。(2)易理解性accessible:報告要讓大家一目了然。要提高員工取得資訊的方便性,每個員工都可隨時登入,取得實驗報告,依據此摘要報告作為排解產品開發歧見的標準。(3)可檢視性auditable:當報告不利於主管、開發工程師或某些人時,就會被質疑報告的正確性。要讓數據能夠以人工的方式進行測試,也就是實際訪問顧客,確認數據是否屬實。另外要降低報告的複雜性。

決定Pivot的時機,軸轉需要勇氣。軸轉後,要取得軸轉前後的創新審核數據結果。

十大軸轉類型

1. 推近軸轉 zoom-in pivot:將焦點從過去一個大範圍,縮小到其中一個點。

2. 拉遠軸轉 zoom-out pivot:將舊產品轉變為另一個產品的一項功能。

3. 顧客區隔軸轉 customer segment pivot:維持產品功能,但改變目標對象。

4. 顧客需求軸轉 customer need pivot:調整原本產品設定要解決的問題。

5. 平台軸轉 platform pivot:改變一次針對一個顧客銷售的方式,利用信用卡進行自助式銷售的平台。

6. 企業架構軸轉 business architecture pivot:一般企業是高利潤、低貨量(常見於B2B)或是低利潤、高貨量(常見於消費性產品)。

7. 價值擷取軸轉 value capture pivot:改變擷取價值的方法,通常會對公司其他部份、產品及行銷策略產生十分深遠的影響

8. 成長引擎軸轉 engine of growth pivot:加快公司的成長速度或創造更高的利潤

9. 通路軸轉 channel pivot:改變銷售通路

10. 科技軸轉 technology pivot:用一項完全不同的科技,達到同樣的效果。

軸轉是一種策略假設,即使轉錯彎,也要有輔助工具,可以幫助我們瞭解錯誤,並快速地找到下一個出路。


第三部份:「加速」

當初創事業成長成大企業時,仍然可以使用「開發、評估、學習」的方法。

精實創業採用即時可擴展性的方法,進行產品實驗,以避免事先企劃與設計上,花費大量的金錢與心力。

如果要裝一百封信,你會一次裝好一封信,還是先摺好一百封信,再裝入一百個信封袋?答案是,一開始要作小量生產,就可以馬上發現問題。避免進入大量生產的死胡同。

成長引擎,是初創公司用來建立永續經營事業的機制。每一個引擎都跟一群特定的顧客及習慣、喜好、廣告接觸媒介、與他人相互聯絡的方式息息相關。

舊客戶帶動企業成長的途徑有四種
1. 口耳相傳
2. 使用產品的附加價值
3. 廣告刺激
4. 重複購買或使用

有三種成長引擎
1. 黏著式成長引擎:維持高顧客保留率,長期使用。
2. 病毒式成長引擎:人與人之間的訊息交換,藉由人的互動,在無意識下扮演了傳播者的角色。
3. 付費式成長引擎:從每一個顧客身上獲得更多收益,或是降低爭取一個新顧客的成本。每一位顧客在其生命中,支付若干費用在產品,扣除變動成本後,剩下的數目就是顧客的終身價值。

創造一個高適應性企業adaptive organization,一個能夠因應情況自動調整流程與工作表現的機構。

如何培育破壞性創新思維:稀有卻穩固的資源、發展事業的獨立自主權、以及提供專屬個人的戰利品

對於最初的願景,我們應該儘快測試它,而不是捨棄它,我們應該追求杜絕浪費,而不是建造高不可攀的品質標準,應該利用敏捷法來達成,並突破現有的事業結果。

以下列出,書本裡特別指出的「錯誤」想法
1. 透過堅持、才華、好時機、一個好產品,就能成功地致富:有一個對的產品,並不是就能成功,過程中還需要注意很多東西,也就是本書提供的管理法。

2. 創業要有一個完善的創業計畫:因為初創事業的不確定性太高,未來的不確定性,無法使用舊有的管理策略與方式,紮實的經營策略與看似聰明的市場調查是行不通的。

3. 做了再說:當使用傳統的管理方式時,無法解決很多問題,索性就不管了,直接做了再說。然而一個分裂、創新又混亂的初創公司是必須被管理的,而且是使用另一套管理的邏輯。

4. 跨功能工作團隊會影響生產力,應該把依功能分成多個專職部門:對習慣在小範圍內評估自己生產力的人來說,工作一整天不被打斷,代表當天生產力很高。但其實精實創業希望大家用不同的角度來評估生產力,由於初創事業常會意外製造出沒有人要用的產品,在這個狀況下,工作是否準時完成、是否超出預算都已經不重要了。重要的是要儘快想出值得創造的產品,也就是客戶願意付錢買的產品。

5. 將自認的顧客需求當作是真正的顧客需求,很容易去學習到一些與成長無關的事物:使用驗證後的學習心得這個方法,取得來自真實顧客的實際數據作為依據。

6. 這個產品做得出來嗎?比較恰當的問題應該是:「我們應該製造這個產品嗎?」「我們可以透過這個產品或服務,創造一個可以永續經營的事業嗎?」

7. 產品開發部最常發生的問題是,不會去確認消費者到底存不存在這個預先定義,需要去解決的問題。而直接跳到我們有辦法解決這個問題嗎?做事之前應該要問自己(1)消費者知道自己有這個你想幫他們解決的問題嗎?(2)如果這個問題有辦法解決,他們會想買這個產品嗎?(3)他們會向我們購買嗎?(4)我們有辦法解決這個問題嗎?

8. 問題:你們的產品有比較好嗎?回答:是。問題:你們怎麼知道的?回答:我們是工程師,上個月做了幾項修改,客戶好像蠻喜歡的,而且整體銷售數字在這個月也提高了。  實際上要確定這個結果跟我們所做的修改有關。

9. 虛榮指數瞄準人性的弱點,要探究數字改變的原因,是一件相當花錢的事情,因此大部分的企業管理人,都選擇憑自己的經驗和參加會議者的集思做出判斷,然後儘快進行其他的工作。

總結來說,這本書的用意是告訴大家,創業不光是要有一個好的想法,還得搭配一個適當的創業管理法。

2013/1/5

破戰者 by 布蘭登.山德森

又看了一部布蘭登.山德森的作品,破戰者這次所設定的奇幻世界,是運用顏色。

每一個人都有一道駐氣,這個駐氣可以送給別人,失去駐氣雖然不會死亡,只會失去顏色,全身變成晦暗的色彩。得到多餘駐氣的人可以利用這些駐氣行使識喚術,駐氣越多,就能作很多事情。哈蘭隼充滿了各種鮮艷色彩崇拜虹譜,死而復生的復歸者被視為神明。

身體的色彩,讓我回想起很久以前新聞裡面的騙子,我記得應該是宋七力,他們就是用照片去拍攝宋七力,然後看到照片裡面的人,身邊多了一些奇怪的色彩,就說這是神蹟,利用這個方式來行騙。

不知道布蘭登.山德森是從哪裡得來的靈感,竟然跟造神的宋七力一樣,有了顏色就有了神的力量,唯一的差別應該是布蘭登.山德森是拿這個想法合法地寫書吸金。人的身上出現的顏色,衍生成一道精神力量,可以化形改變其他物體的形狀或硬度,可以修補死魂兵,收放之間,就成為特殊的武器。

希麗與維溫娜兩個姊妹,一個臨陣受命,為了不讓義卓司跟哈蘭隼戰爭,臨時代替姊姊維溫娜跟神君結婚,到了神君身邊,發覺神君雖然繼承了強大的駐氣,全身充滿了華麗的色彩,但卻離奇地沒有舌頭,而且還不識字,希麗的行動,為了神君,也為了義卓司的人民,原先對抗的祭司,沒想到最後成了自己的幫手。

維溫娜從小就接受訓練,希望她能從容地面對神君,保護義卓司的人民,沒想到因為父親的轉念,一瞬間失去了生活目標,而獨自前往哈蘭隼希望能解救希麗。原先認為自己利用了傭兵,想不到卻是反過來被利用,只能怪罪自己的單純。

萊聲的部份,就比較獨立,跟其他幾線的情節沒關係,他復歸的二次人生,一直在想盡辦法找回過去的自己。在最後,為了解救法謝而用掉了全身的駐氣,結束了自己身為復歸者的唯一一次任務。

一開始就出現的法榭,總是在殺人,或是做一些地下工作,感覺上跟其他主角的劇情都沒關係,一直到了最後,才點明這才是神君背後的大哥,這樣特殊的關係與結局,讓人非常意外。

這部作品的情節發展,跟布蘭登.山德森其他的作品一樣,同樣是令人覺得每一個階段都有驚喜。不過很多驚喜都在故事的中、後段才發生,看得時候,得要有多一點的耐心,讀者完全沒辦法在讀完前面的時候,就猜到故事的結局。

讀書心得:破戰者(WARBREAKER)
【破戰者導讀文】布蘭登.山德森— 當今奇幻界的說故事天才
破戰者

2012/10/9

如果杜拉 by 岩崎夏海

「如果杜拉」是「如果高校棒球女子經理讀了彼得·杜拉克」的簡寫,這是日本作家岩崎夏海在2010年發表的一本小說,因為賣得太好了,沒多久就馬上推出了動畫、漫畫,還一併有了真人版的電影。

故事進行的節奏很快,一開始馬上就進入主題,女主角川島南因接手野球部經理,到書店去找跟管理有關的書籍,店員聽到「管理」這個關鍵字,沒有多想就直接介紹大師彼得·杜拉克的管理學,小南誤打誤撞買了這本管理學經典,並將管理學的概念實際應用在野球社中。

組織的定義是什麼,組織的業務內容是什麼

對任何的組織來說,都必須要有一個共同的目標,還要有明確的定義,這個事業該做什麼。當我們定義企業的目的和使命時,只有一個出發點,就是顧客,這些顧客決定了「企業的業務內容。」換句話說,要先知道公司的產品是要賣給誰,瞭解客戶知道客戶到底要什麼東西之後,自然就知道公司該做什麼產品出來賣錢。

野球社很明確地就是打棒球,這個部份似乎就有點跟上面說的相反,一般公司成立之後,都會先瞭解市場的需求,確認有什麼東西能賺錢之後,才開個公司去做那樣的產品。而棒球社很單純地,先把產品確立了,就是打棒球而已,反過來從野球社去思考,野球社的客戶是誰。

球隊的顧客是誰?

棒球社的顧客就是那些幫社團出錢出力的人,包括學校、球迷、還有球員自己和球員的父母都是棒球社的顧問。組織存在的目的,就是為了要滿足顧客,主角想到了在日本「高中棒球」和「感動」是密不可分的,特別是日本高中生打野球的唯一目標,就是「進軍甲子園」,因此將棒球社的定義為「為顧客帶來感動的組織。」

在專案管理的領域中有個專業名詞stakeholder,其實也是同樣在定義顧客,甚至還比顧客的定義範圍還大一些,不僅是專案的成員,包含業主以及所有使用者,所有被專案影響到的人都可以說是stakeholder的一員。專案的唯一目的,就是要滿足所有stakeholder的需求。

滿足顧客是企業存在的最大使命和目的
管理,就是透過有生產力的工作,讓工作者展現成果
有效運用團隊的人力資源,充分激發每個人的專長


小南將球隊主要顧客,也就是球員的需求視為最先要滿足的需求,透過讓臥病在床的前經理宮田夕「探病面談」的策略,深入瞭解球員們的想法與對組織的期望。在確認每一個人打球的目的、理由跟理想後,小南就很明確地知道,該讓誰負責什麼工作,例如更換隊長的職務,讓二階正義擔任專職的隊長,讓北條文乃跟教練一同專職負責設計球隊的訓練方案。

社會責任

小南專業的管理才能,讓學校裡的其他社團都聞風而來,希望小南能幫大家找出社團的問題,小南並沒有拒絕,反而藉這些機會,幫助大家,同時讓野球社的成員參與其他社團的活動,例如跟田徑社一起練習,讓大家更能掌握跑壘的技巧,跟讓球員幫忙烹飪社做試吃調查,同時補充了球員的營養,也讓烹飪社員有更明確的試吃意見,用來改進自己的優缺點。跟管樂社的合作,促成了棒球社啦啦隊及應援團。

行銷 (marketing) 和創新 (innovation)

企業的目的,在於創造顧客,因此,企業僅有的兩項基本功能,那就是行銷 (marketing) 和創新 (innovation),只有行銷和創新才能創造成果。在行銷方面,野球社透過舉辦活動,讓社團跟學校附近的住戶還有家人打成一片,也等於是讓野球社這個大家庭更緊密、更有向心力。

管理的最終目的就是要獲致成果

「經理人的任用標準不在管理技巧或專業能力,而是成果和績效。」當一位管理人,並不單純只是做有趣的事,管理的目的講求最後的成效,換句話說,如果沒有任何成果可以用來說嘴的,那麼管理階層就要有自知之明,漂亮地找到更適當的人才來處理事情。

雖然Linus說做Linux是Just For Fun,但Linux發展到現在,他身為Linux的管理人,已經不再能單純地只為了有趣而做事,他必須要確實地掌握Linux的發展,確認要採用什麼Patch。曾經有一段時間,他忽略了patch,造成許多開發人員的不滿,後來Linux社群才慢慢地採用了多層次分散權利結構,將功能分層,分別找到適當的維護者,像衛星一樣環繞在Linus周圍。

雖然Linux是個有趣的開始,但當參與的人員變多,自然就衍生出組織管理的問題,而且以Linux現在的狀況來說,即使某一些成員發生問題,應該都能在良好的組織默契下,自行修復,而讓Linux擁有自己的生命。

如果高校棒球女子經理讀了彼得·杜拉克 wiki
正妹柑芭嗲 wiki
「如果杜拉」讀後感想
如果杜拉
動畫-如果杜拉
如果杜拉與我
[閱讀筆記] 如果高校棒球女子經理讀了彼得.杜拉克 Peter Drucker
管理的力量:岩崎夏海《如果,高校棒球女子經理讀了彼得.杜拉克》

2012/9/18

Just For Fun: Linus Torvalds自傳

從阮一峰的文章 《Linus Torvalds自傳》摘錄 得知這本書,搜尋過後,發現這是2001出版的書,現在已經絕版了。也是在搜尋中,看到taaze讀策生活網路書店JUST FOR FUN-LINUX創始人托瓦茲自傳(二手書) ,運氣不錯,二手書才大約一百元,第一次加入會員又有送優惠券,兩天後就在超商拿到這本二手書。

C 還是 Java?

其實我對Linux一直保持著相當的敬意,也很佩服能夠瞭解這個作業系統的工程師,那是因為我老是沒有辦法讓自己深入到這個作業系統中,對於Linux上的coding經驗,也僅止於socket programming課堂上曾經做過的作業,用pipe把模擬的terminal client資料串來串去。

2001年,正好是進入職場的頭幾年,也是決定投身Java的時候。讓我放棄C語言,投身Java的原因只有一個,那就是Garbage Collection,在受夠了C語言記憶體的諸多錯誤後,Java讓我感覺到,花一樣的時間,卻能夠做更多功能與事情,有著良好規範單純笨拙的Java也沒有太多的奇淫技巧,這更適合腦容量本來就不大的我了。當然進入Java領域後,卻又掉入了Design Pattern等等軟體工程的陷阱,這就不是當時所能預期到的了。

雖然已經不再寫C的程式了,我是從組合語言,進一步學C語言,再學Java,雖然很辛苦,我還是建議要從基本學起,這可以知道貼近電腦核心運作程式的感覺。

通才與專才

Linus Torvalds 在書本裡面提到了 Linux 誕生的過程,身為 Linux 的創始者,開發的初衷其實也只是由於大學的機器無法同時處理16個以上的用戶,要用機器就得排隊等待。恰巧他遇上了開放規格i386系統普及的階段,在電腦零件介面標準化的推動下,電腦硬體逐漸地調降到可以接受的售價,而且想要想要解決MINIX的問題,很自然地就驅使他去實作一些他所需要用到的程序。

他的老媽說,Linus 是個好養的小孩,只要在櫃子裡放台電腦,再加上一些食物,就可以讓Linus安安靜靜。Linus 的人生從小開始,就發覺自己的興趣,沒有家人的阻攔,他很自由地自修學習了所有coding的知識。他是非常幸福的人,因為在很早的時候,就已經知道自己的興趣,並深入培養了專業技能。

他是個電腦專才,但是一個好的工程師,接近無為而治的Open Source專案Linux的管理者,並不代表他就是個好的小組管理人,全美達曾經嘗試讓 Linus 帶領一個團隊,結果是失敗收場。

現在的學校教育,還有一些媒體,常常會透漏訊息告訴同學們,除了某一項專業技能之外,還需要多方面認識與瞭解其他的知識,成為一個全方位的通才,才能保有職場的競爭力。我並不認同這樣的論點,一個人通常都要在某一個領域成為特殊的專才,受到大家的認同之後,接下來才有機會讓其他人注意到這個人的其他事情,發表論點才有說服力(就像是選舉的時候,李遠哲、王雪紅等等專業人士,登高一呼吸引選票的效應一樣)。

就像是Linus這本自傳的書,假使不是因為Linus在Linux的成功,因為這樣的成功事蹟,讓大家感覺到好奇,希望能知道跟Linus有關的事情,要不然怎麼會有人想要出版他的自傳,又怎麼會有讀者想要買來看。

晚上還是睡覺比較重要

Linus 說他晚上是不寫程式的,他反而是比較喜歡睡覺,不過這也是因為 Linus 不會花時間做一些多餘的事情,像我自己會用電腦打電動、聽音樂、看電影等等,如果在終端機前面,可以專注地做一件事,而不會被其他網頁、聊天訊息干擾,自然就可以好好地高效率地把事情做好,而不會用到睡覺的時間。

最近我也強迫自己得在11點就去睡覺,原因當然是身體出了問題,其實早一點睡也沒什麼不好,反正晚上也常常都是在補充動漫資訊而已。

女人比電腦重要

Linus 提到他第一次遇到老婆托芙,是在當助教時十五名學生中的一個,有一次的作業是讓所有人發一封email給他,而他的老婆email內容,就是邀他出去約會,過沒多久,他們就住在一起了,而這也是他第一次發現,回家的時候,不用跟電腦在一起,也可以活得很愉快。老婆托芙是個幼稚園老師,還有六度芬蘭空手道冠軍,也是個狠角色。

求生存

Linus 認為科技與軟體的進步,會歷經三個程序,首先是求生存,再來是建立與維繫社會秩序的社會化,最後是娛樂、找樂子,文明的最終目的,就是追求娛樂。

回想過去三年公司從開始到現在的狀況,其實也沒有那麼夢幻,反而像是個傳統產業一樣,悶著頭開發與販售產品,另外也一步一步尋找合作的同業夥伴,然後依附在一些品牌公司下面,做一些專案,公司還一直在求生存的階段掙扎,現在也只能期待真的樂在工作,不愁吃穿的時刻到來。

Just for fun ----Linux創造的那些傳奇
Just for fun
讀書心得: Just for Fun : Linux 創始人托瓦茲自傳
Linux之父出新書:Just For Fun(只是為了好玩)