本採訪原意是來自於唐鳳在iThome Open Source 專題採訪中的一段發言:
在 20 年前,我們有所謂「結蛹期」的概念。這是黑客詞典 Jargon Files 裡的一個詞。它說,基本上要成為一個專業的程式員或黑客,你必須花三、四年的時間沉迷於電腦當中,你會完全打亂你的睡眠模式,一次寫 20 個小時的程式。然後,到了某個點,你就會頓悟。這其實很像禪宗的想法。
一旦你到了那個點,所謂「零的轉移、巫術的權勢」,基本上你就成為一個巫師。一旦你成為巫師,正如松本行弘所說,所有關於性別、種族、年齡、國籍的差別都會消失。這就像《駭客任務》中 Neo 把一切都看成是綠色數字的一幕。到了那個階段,沒有東西能夠影響你的客觀判斷。這也是一個非常禪宗的概念。
可是我認為這算是一個神話,主要是因為那個時候如果沒有網路社群,要學習程式是非常困難的事。
現在有 RailsGirls 和類似的社群,我們就有了一個緩坡。你可以非常舒適地留在斜坡上的任何一點,還有很多人會在同一級階梯上互相支持,不一定需要兩三年的密集時間。用這種方式,你可以學上五、六年 —— 你甚至可以一天睡 8 個小時也不會退步。我認為這會大幅改變市場,因為除了業餘愛好者和專業人士之外,階梯上的每一點還會有細分的市場,這樣市場和社群都會變得大很多。"
---
希望可以藉由採訪,了解唐鳳所提到的「結蛹期」究竟是怎樣的概念,紀念以往的網路歷史。透過這些問答也希望可以讓更多資訊人了解一些方向。本採訪內容將以cc0釋出,歡迎大家取用、增加問題。如果有意願的朋友,也歡迎回應。
採訪時間:2015/5/30 萌典松會後
錄音檔 https://mega.co.nz/#!1xYijApb!Q2C95uliD6ua2hSOKTL9i_JjjyBZe0edXVeRToxWhBQ
以下為即時關鍵字 / 句紀錄
蒼:在技術生命週期還太新,還沒有好的教學文件或好的領隊之前,要怎麼自學?
au:在連 technology 都不是、只是 heuristics(嘗試錯誤)時,挑好的專案、作實際的 project。或就是找到一個 team(山友團)一起 try,一個人錯誤的機會總會比正確的時候多。
蒼:大家對新技術都會很困惑,到底是要趕快學,壓寶看會不會賭贏,還是?
au:專案出來都是為了解決之前專案沒滿足的地方,只要你的專案跟他想解決的問題很像,去學去參與就有價值。如果只是因為它很紅就跟風.....沒有必要
問:在早期,網路剛出現的時候,網路世界長什麼樣子?你從哪裡學到技術的?有沒有有意思的網路社群?
蒼:在前 http, gopher 時代,長什麼樣子?
當時出現並被覆蓋的原因,是因為版權的問題;但現在像 Node.js 這種 OS,比較像是適者生存,不同的專案在競爭專案開發者人力(以及注意力),看哪些專案能爭取到最多,並生存下來⋯⋯
au:1995 年發生了什麼事情,可以看一本書《一千零一網》,有許多第一手資料
園藝、ecology 的概念,可以參考 Eric Raymond 的《開拓智域》
這是他接著《大教堂與市集》的第二篇作品。他是開源世界裡面的人類學家、觀察行為模式。我是看他們的文章長大的。
這些作品成篇於當代,是口述歷史的概念,比較中性,沒有後面的歷史 / 信史造神的問題。
問:是怎樣的契機,讓你進入了結蛹期?
蒼:瘋狂寫程式的契機?
au:很小的時候就會為自己或家人 coding, 但還不算懂得軟體工程。在還不會「正式寫程式」的 1993~1995,因為身體的關係不能作別的事,當時就是玩 mud、寫 mud 程式,東方故事二是我第一個軟體工程專案。
蒼:我發現這個過程跟大家學的過程蠻像的。(玩中學,有人帶)
問:在結蛹期時,你鑽研的項目是什麼?有沒有什麼令你印象深刻的事情發生?
問:發生了什麼事,讓你理解自己已經頓悟了?
分成好幾個層次來講
《大生義經》:跟著瑜珈傳統,當你的主觀意識被某種特定東西充滿時,會排擠掉其他一定會考慮的事情,包含自我形象(忘「我」)
若是短時間的持續,大家都可以進入那個狀態,是謂 flow
但結蛹期是指較長期、可能好幾天都處於那個狀態,要出來時則不知道「自己出能出去哪裡」(莊周夢)
禪宗則是把這件事 technology 化了 XD
====
蒼:希望有更多人深蹲下去研究 https 等,有什麼技術或概念,是你覺得很值得、鼓勵大家多去研究、通用,甚至是一個完全不一樣的軟體觀?
au:剛剛問了兩個問題,第一個是什麼是經典
例如你要作 web 開發,不去研究 http 是不可想像的。因此「請循其本」,去了解你想做的東西,它當時是怎麼出現的(為了解決哪些個問題)。
例如當初 web 出現,是因為要解決超文本傳輸的問題。請循其本,源則無盡,可能追到最後要去學希臘文之類的——hyper 的確是希臘文XD——但你可以選擇停在你舒服的位置。
至於什麼技術是值得大家多研究的.......
圖靈前沒有計算科學,computable function,其實你可以去看看這些技術當初是為了什麼需求,所以規劃出來的。當時的論文可以看看,看過自然就會明白。
開始舉了很多例子(記錄者打字不夠快 follow 不上,請聽錄音檔)
====
我講的「結蛹期」,是在有社群以前,在單一神話結構下的神話。但現在已經有了社群,所以我們走到了緩坡上——如入不退轉地——不容易「不進則退」。
蒼:我覺得結蛹期在有社群支持時還是存在。例如當時你在寫 mud 也有社群支持,但還是需要大量的自己的投入,才會發現自己有躍進式的轉變,之後只需要每天花一點點時間,就能輕鬆跟在大家(潮流?)身邊。但在那之前⋯⋯
au:我講的正是以前,不可想像每講一個字就去可以查維基百科,現在遇到問題,思緒的停頓是短的,在思緒不會完全中斷之前,就可以尋求到支援。社群支持、討論軌跡、甚至頻寬和延遲度,都是成就這個「不中斷、緩坡推進」的重要因素
每天花五分鐘十分鐘,不是指自己練苦功,而是跟著社群的進展一起進展
以前結蛹期有操作型定義,hacker dictionary 有人類學式的定義。
BP:如果到這麼高的密度,只有極少數的行為可以這樣。例如實體創作,還是要出門買東西,就無法結蛹
蒼:米開朗基羅就躺在那邊,可以叫人家幫你買畫材
au:學徒就是在做這件事
ve:講了當「高頻率 try and error 反饋、更多降低成本的工具、trace」發生,走上凍土凍死前無法成路足印瞬間抹消 vs. 溫暖濕軟的土壤,一踏上就有夯路之功
au:補充 ve,《開拓智域》援引了人類學「部落」的概念
問:你頓悟的道理是什麼?可以嘗試描述看看嗎?
問:頓悟了以後,看到的世界和以前有什麼不一樣嗎?是否在看待問題時,思考的方向、解決的方式會有所不同?
問:現在的技術其實發展越來越快,許多技術出現,也有許多技術沒落。現在面對一個新技術,你怎麼確定這個技術值得學?你又會用哪些方法去理解、學習新的技術?
看社群大大討論什麼東西,看風向
問:除了新技術以外,你怎麼看核心技術?你會推薦大家學習哪些基礎知識?
問:對於許多進入電腦科學,想要精進卻找不到方向、找不到定位的人,你會給予怎樣的建議呢?