標籤彙整: 翻譯

Rails之父:我怎麼學會寫程式的?

DHH,本名David Heinemeier Hansson,Basecamp合夥人、Google 2005年度駭客、業餘賽車手,他最知名的身份是網路開發框架Ruby on Rails的發明者。

DHH曾在部落格發表他學寫程式的心得:

https://signalvnoise.com/posts/2582-how-do-i-learn-to-program

看過之後覺得獲益良多,特此翻譯出來和大家分享。


我怎麼學會寫程式的?

我花了二十幾年才真的學會怎麼寫程式。不是因為我嘗試的不夠,而是因為我一直用錯誤的方法。我以前都看著那些教材、範本照做,寫出一些我根本沒興趣繼續往下寫的東西。這是為了學習而學習。

我知道這方法對有些人管用,這些人就是很樂意學習新東西。我真羨慕你們。但這對我不管用,而且我知道很多人也沒辦法用這種方式學習。

為了解決鳥事而寫程式———對我來說這才管用。寫程式是因為非這麼做不可。寫程式是因為我他媽的在乎自己所寫的東西,而且我希望它越快完成越好。

這就是我學寫Ruby的方法。我把目標定為,用Ruby把Basecamp寫出來。當你因為一個目標而去學習,每件事的先後順序就變得非常清楚。我到底該做什麼才能讓這幾個訊息順利在Ruby執行?哦,我需要在這裡加一個迴圈。哦,我需要在哪裡抓些資料庫的資料出來。

決定目標的當下,你的點子就完成一半了、而且你還知道了該怎麼做。

簡單來說,就是從一些確實的東西開始做起,接著讓時鐘發出「滴」聲,然後讓它發出「答」聲。

CS183第一課:創業–關於未來的挑戰

Paypal共同創辦人、Facebook第一個外部投資者Peter Thiel,2012年在Stanford大學開課分享他創業的心得,課名為「CS183: Startup」。

美國作家Blake Masters將19堂上課內容摘錄成筆記並放在網路上:

http://blakemasters.com/peter-thiels-cs183-startup

這些筆記最後整理成書「Zero to One」,並在Amazon販售:

http://www.amazon.com/gp/product/0804139296

本文譯自於Blake Masters在部落格上的原始筆記。


CS183:創業–關於未來的挑戰

目的與前言

我們好像覺得這世界的零售業都抓狂了、批發業都發瘋了。理由很簡單:我們一直沒搞懂這個世界。最基本的挑戰就是–在商業世界或是人生都一樣–如何整合微觀與巨觀的事物去理解每件事。

人類學已經大致理解了這個世界。但是他們並不從研究中直接學到職涯發展的技巧。工程學則恰好相反,會學到許多技術細節。但是他們大概沒學到「為何」、「如何」、「在哪裡」應用他們的技術。最棒的學生、工作者、思想家會將這些問題整理成一個有力的論述。這門課就是要促進這個過程。

I.          科技的歷史

對於大部分的人類近代史來說–從17世紀晚期的蒸汽機發明一直到1960年代晚期左右–技術的變革非常巨大,幾乎可以用無情來形容。在更早之前的人類社會,人們幾乎都是以掠奪別人來賺取財富。工業革命導致的產業變化使得人們不再掠奪、而是透過貿易賺錢。

這個變化的重要性難以言喻。大概有1000億人曾經在地球上生存過。絕大多數都生活在一個停滯的社會中:成功不是藉著創造價值,而是索取而來。過去幾百年的科技進步真的是奇蹟。

對於未來最樂觀的預期發生在1960年代。人們相信著未來。他們思索著未來。許多人有極度的自信,認為之後的五十年將有史無前例的技術革新。

結果除了電腦產業之外,什麼都沒發生。人均收入持續在增加,但是成長速度大幅下滑。薪資的中位數從1973年就開始停滯。人們發現自己處在「愛麗絲夢遊仙境」式的困境中、必須更加費力的奔跑–也就是工作更長的時間–只求能待在同樣的地方。這個衰退的原因很複雜,光靠薪資數據無法解釋。但這些數據的確說明了過去200年的高速成長正在急劇減速。

II.         電腦科學發生的事情

電腦是近代科技發展減速的一個例外。Moore’s/Kryder’s/Wirth’s 定律始終靈驗,產業前景持續看漲。電腦科技隨著不斷改善的硬體以及敏捷的開發方式,成為了其他產業的某種標竿。它很明顯是矽谷生態圈的核心、驅動了現代科技的變革。也因此電腦科學成為了讓科技再次發展的起點。

III.       未來發展

A.        全球化與科技: 水平 vs. 垂直發展

發展有兩種:水平/廣泛,以及垂直/密集。水平或是廣泛發展,基本上就是複製行得通的那些東西。用一個單字來說,就是「全球化」。想想看中國50年後會是什麼樣子。保守猜測就是會很像美國現在的樣子。城市會被複製、車子會被複製、鐵路系統會被複製。某些步驟也許會省略。但總之就是在複製。

相反地,垂直或是密集發展,則代表做一些新的事情。用一個單字來說,就是「科技」。密集發展涉及了從0到1(而不像全球化是從1到n)。我們在加州之類的地方看到很多垂直發展,特別是矽谷。但我們要不斷質疑每件事。確實,很多人似乎完全只專注在全球化而非科技;譬如「已開發國家/開發中國家」這個名詞就很藐視科技,因為它暗示了現代是「已開發」、現代已到了極限。以一個社會來說,我們似乎總是會覺得科技在歷史上有某種極限存在。

值得一提的是,全球化與科技確實存在某些相互影響。不應該錯誤的用二分法區別他們。想想看從1到n得面對的資源限制問題。大概不能讓每個人都擁有汽車,那會導致生態浩劫。如果從1到n不可行,那就只有從0到1的解法了。正因如此,科技發展才極其重要,即使我們的重點是全球化。

B.         從0到1的問題

我們如此專注於從1到n大概是因為它比較容易。大家應該都承認,從0到1跟複製某個東西n次有本質上的不同,而且幾乎總是比較困難。就算嘗試走垂直路線,從0到1的過程還是得面對例外主義的挑戰;每個新東西的創辦人、投資者一定會擔心:我真的知道自己在做什麼嗎?我是不是瘋了?

舉一個政治上的例子。美國常常被認為是一個「例外」的國家。至少很多美國人堅信不疑。所以美國知道自己在做什麼嗎?還是它瘋了?每個美國人都擁有槍枝、沒人相信氣候變遷、大部分的人體重超過600磅。例外主義當然有別的一面。美國是一個充滿機會的大地。它是一個開拓新疆土的國家。它提供了新的出發點,保證有才華的人會獲得財富。每年有自認獨具天賦的大概20000人前往洛杉磯,想變成知名演員。其中當然只有很少一部分能真的如願。創業領域大概比較不像好萊塢那樣被例外主義帶來的挑戰所折磨。但它大概也無法完全避免。

C.        教育與敘事的挑戰

教垂直發展或是創新,就某方面來講本身幾乎就是個矛盾。教育本身基本上就是從1到n,我們觀察、模仿、然後重複。嬰兒並不會發明新的語言,他們學習現有的。從最一開始,我們就以複製行得通的東西來學習。

那樣沒辦法創業的。做別人在做的事大概能幫助你走30%的路。(譬如說,一定要把公司弄得很好看才行。然後才可以向創投竭力推銷。)但在某些時刻你必須從0到1–你要做些重要的事而且一定要做好–這可無從教起。想想托爾斯泰在《安娜·卡列尼娜》寫的前言,所有成功的公司都是與眾不同的;他們在不同方面理解了從0到1的問題。但是所有失敗的公司都一樣;他們搞砸了從0到1的問題。

所以研究成功企業的案例幫助很有限。PayPal跟Facebook是做起來了。但是很難得知過程中哪些不可或缺。下一個偉大企業大概不會是線上支付公司或社群網站。絕不能對同一個故事著墨太多。所以商學院的案例研究方法比較像個神話,幫助不大。

D.        決定論 vs. 非決定論

有關發展的一個困難問題就是如何評估一個冒險的成功機率。在從1到n的範疇下,那只是統計問題。可以分析然後預測它。但在從0到1的範疇下,那就不是統計問題了;樣本數為1的標準差是無限大。沒辦法做統計分析;統計上來說,我們一無所知。

我們很常用統計的方式去思考未來。統計學告訴我們那是隨機的。我們無法預測未來;我們只能用機率的角度去想。如果市場用一種隨機步伐在走,那就沒什麼道理去算出它。

但是有另一種數學式象徵可以用:微積分。微積分式象徵想知道能否、如何去搞懂接下來會發生什麼。舉NASA跟Apollo任務為例。必須非常確定月球到底會在哪。必須替火箭規劃出足夠的燃料。諸如此類。重點就是沒人會想搭乘一個在統計上只根據機率去飛的太空船。

創業在這個程度上就像是太空計畫。從0到1必須讓決定論壓過非決定論。但有一個很實際的問題。有個詞用來描述那些宣稱能看到未來的人:先知。在我們的社會裡面,沒有真的先知。Steve Jobs很巧妙的處理了決定論與非決定論之間的分界;人們都認為他有遠見,但他沒有太貪心去猜更遠。他應該是抓了個不會太遠的距離(也因此成功了)。

運氣跟實力的問題也很重要。要區分兩者非常困難,幾乎不可能。試著這麼做很可能產生錯誤的推論。我們現在最該做的也許是點出這個問題,然後建議企業家、可能的企業家,應該要注意這個事情。

E.         密集成長的未來

關於密集成長的未來有四種理論。第一種是收斂理論;從產業革新開始,會先有一個高速成長過程,但科技會減速、成長速度會趨緩。

第二種稱之為循環理論。科技發展呈現循環;有進展,然後接著緊縮。週而復始。在過去的人類歷史這大概一直成立。但之後會不會繼續成立就很難說了;很難想像我們會以某種方式失去所有累積下來的資訊跟知識、然後必須重新探索一次。

第三種是崩壞/毀滅理論。某些科技發明將導致我們如此。

第四種是特異點理論。某些科技發展將產生人工智慧或是到達新的知識水平。

人們很容易高估收斂理論以及循環理論的可能性以及解釋能力。相對地,他們可能會低估崩壞/毀滅理論以及特異點理論。

IV.         為甚麼是公司?

如果我們希望科技發展,為什麼是公司去做這件事?畢竟,也許有可能讓整個社會的人都替政府部門工作。或是相反,所有人都是獨立承包商。為甚麼是這種介於中間的版本、包含至少兩個人、而不是地球上所有人都做一樣的事?

答案可以用Coase定理說明。公司之所以存在是因為他們最佳化了內部以及外部的協調成本。大致來說,隨著組織單位成長,它的內部協調成本也會成長。但它的外部協調成本會下降。極權政府很明顯的太大了;外部協調很容易,根本沒有成本。但是內部成本則如同Hayek以及Austrians所說的,困難又代價高昂;中央統一分配行不通。

另一方面,獨立承包商則是毫無內部協調成本,但是外部協調成本代價高昂(需要跟所有需要打交道的對象獨立簽約),幾乎累到癱瘓了。理想狀態–公司大小–就是如何找到適當比例。

V.        為甚麼是新創公司?

A.        成本的影響

大小與內部/外部協調的成本影響很大。設想遠方有個100人的公司,員工彼此都不認識。公司政策會變得很重要、員工動機全都變質。讓工作看起來做完變得比實際上有沒有做還要重要、這些成本幾乎一直被低估。如果公司有一個以上的辦公室,專業投資人要不要投資就該再想想了。嚴重的協調問題常常是從擁有多層樓辦公室這樣乍看之下微小、無害的事情開始的。聘請顧問並且試著將關鍵專案外包也是一個嚴重警訊,理由類似。儘管過去40年的確減少了協調成本–這也說明了為什麼企業似乎比以前更小了–整體來說依然太過低估了。這些成本始終很高,值得我們努力去思考。

Path限制使用者只能擁有最多150個「朋友」就闡述了這種觀點。古代部落總有很明顯的大小上限,幾乎不太會超過。新創公司重要之處就在於他們很小;如果一間企業的大小與複雜度就像企業內人數的平方值,那新創公司就處於一個獨特的位置,可以減少人際、內部成本並因此能把東西做完。

大家熟知的Austrian批評也與此吻合。就算一台電腦能夠很嚴密的把一間公司面對的所有經濟問題都考慮進去(說明白點,根本沒辦法),那還是不夠。想考慮所有成本,還必須把人類的不理性、情緒、感受、以及互動算進去。電腦幫得上忙,但資訊還是不夠。如果我們真有全部資訊,也不知道怎麼利用這些資訊。所以在實務上,公司終究是有個固定大小。

B.         為什麼要創業?

這個問題最簡單的答案有點負面:因為你無法在現存的組織裡面發展新科技。在大公司、政府、或是非營利組織裡會遇到一些問題。他們可能無法理解財務需求:被官僚體系癱瘓的政府會付某些人太多的薪水、同時又付給某些人太少的薪水。不然就是這些組織無法處理個人的需求:你在大官僚體系很難得到尊重、名譽、鑑別度。有使命感的人容易想從0到1。你只有在被一群想從0到1的人環繞時,才有可能真的從0到1。這只會發生在新創公司,大公司或是政府都辦不到。

為了金錢而去創業不是一個好主意。研究顯示更多錢會讓人們更快樂,但在每年$70000到達極限。超過之後,更高收入帶來的邊際效應或多或少會被其他因素抵銷(壓力,高工時,等等。就算不考慮這些,金錢的邊際效應也很自然會遞減。)

也許想被紀念、出名會是比較好的動機。也許不呢。成名與否是不是真的如同人們以為的那樣重要,十分有待商榷。想要改變世界應該是比較好的動機。1776-79的美國就是某種形式的新創。開創者的動機是什麼?動機很大一部份也被文化影響。在日本,創業被視為輕率的冒險。在某處當終身員工則會倍受尊敬。這種觀點背後的字面解釋就是「所有財富背後都隱藏著嚴重犯罪」。Founding Fathers是犯罪集團嗎?所有開創者都是某種形式的罪犯嗎?

C.        失敗的代價
新創公司付的薪水比大公司少。所以創辦或是加入一間新創公司代表了某種程度的財務損失。這些損失常被覺得很多。其實,並沒有那麼多。

非財務的成本其實更高。如果你參與了一間失敗的新創公司,你可能沒學到任何有用的東西。你可能只學到了怎麼再失敗一次。你可能會變得更討厭冒險。你不是在買彩券,所以你不應該認為失敗只是n次裡面1次的機率問題。股份代表的不只那樣。

從0到1的創業不只財務成本低,連非財務成本都低。你至少會學到很多,而且你大概會因為你的努力而變得更好。從1到n的創業代表了很低的財務成本,但是滿高的非財務成本。如果你試著在馬達加斯加創辦Groupon然後失敗,沒人確定會怎樣。但是那樣不好。

VI.       從何開始?

我們可以在從0到1的這個過程上問三個問題。第一,什麼東西有價值?第二,我能做什麼?第三,什麼東西還沒人做?

問題本身很直觀。第一個問題闡述了業界與學界的區別;在學界,抄襲是萬惡之首,微不足道則不是。所以很多發明晦澀難懂,而且完全沒用。沒人會在乎一間奇怪又做不出好產品的公司。第二個問題在確保你能著手解決問題;不然,也就只是嘴上說說。最後一點,也是最常被忽略的,就是原創到底重不重要。忘了它吧,我們只是在複製而已。

用一個比較智慧的說法來闡述這幾個問題:你深信什麼沒人相信的真理?

比較商業的版本則是:哪種有價值的公司還沒被人建立出來?

這些是很棘手的問題。不過你可以驗證你的答案;就像許多人正在做的,如果有人聲稱像是「我們的教育系統崩壞了,現在就得設法修復」這樣的事,你知道那不是真的(那也許是真的,但很多人並不認為)。這多少解釋了為什麼現在有這麼多非營利教育機構、教育相關的創業公司。不過,要對他們是處在科技模式還是全球化模式保持懷疑。當你的答案符合下列形式,你就做對了:

「大部分的人都相信X。然而X不是真的。」

別誤會了;這非常困難的。很少人真的弄懂從0到1的艱難之處,所以它非常罕見、獨特、微妙。但這個過程中,就算沒有成果,也能帶給你豐厚的回報。