# 2014-04-27, TEDxTaipei,
https://www.youtube.com/watch?v=E6xIcKTRZ00# Hazel (主持人)、Linda (RailsGirls 創始人)、Charles (JRuby 創始人)、Matz (Ruby 創始人)、Audrey。
Hazel:現在,我們準備問第一個問題。你們都準備好了嗎?第一個問題是「今天,獨立工作已經不再流行。在這個跨領域合作的時代,團隊合作成為了潮流。」
「我們在程式編寫中學會的東西 —— 能夠在現實生活中幫助我們更好地工作嗎?也許 —— 為男人,也為女人 —— 為所有人。」
Linda:起初當別人告訴我,學習程式設計讓你學會怎樣思考時,我剛開始的時候也不明白。後來我慢慢學習,跟工程團隊有很多合作。它確實能夠幫你以一個特別的方式去構建它,讓工程人員更容易處理問題。
舉例來說,我想出一個功能,然後他們會說:「嘿,好吧,我們就做這個」。儘管我沒有以工程師的身份工作,可是如果能夠理解代碼如何運作,或者產品如何建立,或者建立什麼樣的功能才是可行等等,都能夠幫助我更好、更有效地工作。[笑聲及掌聲]
Charles:這很有趣,因為在過去幾個星期,我太太決定開始學習程式設計。她對於種種的可能性感到非常興奮。開始的時候她也會因為想到可能會遇到的困難而感到害怕。可是,多年來她一直是家裡的大廚。她會照顧小孩,她會編織,也做了其他不同的手工藝品和專案。
她開始看到的是,她在寫程式當 中所學會的,跟其他使用方法、藍圖的系統、甚至於製作手工藝或做飯等這類事情,都非常吻合。她越是學會寫程式,這些事情就越跟她的人生連繫在一起。看到這一點讓人很興奮。[笑聲]
Audrey:既然 Linda 和 Charles 已經把程式設計的重要性解釋得這麼好,我想談一下關於團隊合作的部分。我覺得作為聽眾 —— 我們都知道 —— 作為聽眾,聆聽能力是最重要的。
我認為現在網路上很多寫程式的經驗,無論它發生在 GitHub 或者是其他社交活動上,要感知、或者是看到對方的觀點,都和聆聽能力有關。我們從 GitHub 的問題看得到、從郵件列表中看得到、從 IRC 上看得到、從維基上也看得到。
我認為這些事情合起來,比代碼本身重要得多。我們看得到,正如 why the lucky stiff 轉發的推文所說,代碼本來就不會長久,它總會被新東西所取代。
可是人類的記憶,那些我們一起共享的靈魂碎片,可能沒有代碼一樣精準,可是它們比代碼維持得久。社群、人類、它們之間的關係、它們的連繫,都比代碼長久。
代碼給我們一個美好的機會,讓我們學會聆聽對方、做出更漂亮的東西,而這都是客觀存在的。就像是一個文物、一座金字塔,或任何我們可以看得到的東西,每天實際地在成長,全都因為我們對彼此慷慨。
我認為懂得聆聽和回饋,是我們在團隊合作設計中要學習的最重要事情。那是我們的未來。謝謝。[掌聲]
Matz:我想我要說一些話。[笑聲]
從原來的問題偏離一下。在以前,創作認真的軟體不是獨立的工作,所以人們不能單獨創作正式的軟體,他們要在同一家公司、同一個專案中工作,然後作為一個團隊一起合作,也許當中會有幾百位程式員,創作出像 IBM 的 System/360 這一類系統。
可是,科技發展已經改變了這個情況,Ruby 就是一個例子。Ruby 是我自己以業餘程式語言設計師的身份開始的。我創造了第一個雪球,把它放到網路上,讓大家聚集在一起。然後,我們在網路上一起合作。
Ruby 變得越來越大,也越來越好,團隊不斷擴大。後來創立了 JRuby,之後是 Rubinius,也跟 Rails、Sinatra,甚至於其他社群,例如 RailsGirls 諸如此類的單位有很多合作專案。這意味著技術的使用讓我們變得更靈活。
我們可以單獨工作,一個人也可以利用網際網路的力量開始偉大的事情。與此同時,使用 —— 比如說社群、網路,甚至是 GitHub —— 大家可以進行社交活動,形成一股力量,讓大家寫程式來創造偉大的事情。
我認為那就是靈活性,從個人到龐大的社群,數以百萬的人。做選擇的是我們自己,而不是公司,也不是專案,更不是組織機構之類的。我相信這種靈活性是 21 世紀的新力量。
Charles:還有一個想法。我發現學習程式的其中一個最大優點,是你能夠跟其他程式員合作、互相了解,跟他們一起工作,而且我們這些程式員的確愈來愈多。
每天都有更多的新軟體面世。它們推動世界的運作,並成為世界的一部分,我覺得這意味著幾乎每個人都應該學習如何寫一些程式。你要了解一下你周圍的世界是如何運作的。還有,剛才 Matz 談論起 Ruby,你永遠都不知道明天自己寫的那段代碼,你所建立的那個專案,會不會就是將來成林的那顆種子。
幾年前 Matz 發起的專案,正就是我們今天在這裡的原因,所以才會有這麼精彩的活動,我們才能夠創造出這麼棒的應用程式。這可能是你們當中任何一個人。下一個可以長成奇妙程式世界森林的作品,可能就是來自你。[掌聲]
Hazel:可不可以提供一些建議,給那些希望推廣程式設計的人,以避免這種情況(性別排斥)?Linda,也許你可以分享一些想法。你覺得有什麼可以有效改善這種讓人不舒服的情況?可能是針對這個情況,或者是你自己的想法。至於 Matz 和 Charles,也許你們可以分享一下在這個 IT 行業所看到的情況。
Audrey:Hazel 指的是我們在會面前私底下的對話,我們當時討論的是,台灣一方面受到日本文化對女人的刻板印象所影響,另一方面也受到中華文化對待女人的態度影響。
這裡有一種內在固有的禮貌意識,不只是女人,而且是每一個人都有的。當我們加入一個社群的時候,往往會尋找一個安全點,讓自己跟團隊建立某種同理心, 或者是同情心,或者是理解共識,才有勇氣開始說話、開始舉手。這是東亞地區一個非常普遍的事情。
可是,尤其是女人,如果她們看到整個空間都是由男性,或者是一些持不同性別表達方式的人組成的話,要在開始加入參與之前建立這種關係或相互支持感是非常困難的。正如 Hazel 自己所提到,這是一個真正的門檻。這是由社群成員組成結構造成的,也是台灣(或者是東亞地區)的文化造成的。
這不單單是女人獨有的。至於如何去解決這個問題,有些人就純粹無視他們的社會劇本。他們會說:「好吧,我們就從這裡跳進去。」[笑聲]
當他們剛跳進一個社群,開始問一些愚蠢的問題,有些人會說:「嘿,你為什麼在這裡?你這樣不妥當,對吧?」可是之後 [笑聲] 過了一段時間,他們就開始成為社群的一部分,而且實際上這是最快的方法。
正如 Matz 所暗示,讓社群繼續運作的最快方式,就是釋出一些不盡完善的東西。就像發表你的問題,然後用一個非常糟糕的方式回答,就有很多人會回應說:「嘿,其實有一個更好的方式來做到。」
因此,這種無視社會規訓的人,實際上可以更容易進入網上技術社群(雖然可能要經過很多爭辯和吵鬧),而且他們所遇到的困難,比有禮貌的人來得要少。後者也許就轉向到其他比較友好的社群(像數位藝術創作)了。
其實我的建議,就是要「策略性」的忽視禮貌。 [笑聲] 只要開個頭進去,假裝你已經是團體的一份子,然後這就是一個自我實現的預言,你很快就會真正成為團體的一部分。
Linda:我有一個非常個人的體驗。我之前不是一個專業程式員,而我現在還不是一個專業的程式員,所以我在發起 RailsGirls 時,對軟體界的生活方式、那些過去的創傷、所有在科技圈內圍繞著女性的戲碼,以及各種問題,完全一無所知。
我只是想要可以幫助我學習程式設計的東西。我不知道「Girls」這個詞會得罪這麼多美國人。我想當初能夠建立這個平台,也是因為英文不是我的母語,那時候我真的不知道業界是用這種方式或那種方式來教程式設計。
有這麼多我們不知道的事情,讓我們所有人去嘗試,並且真的去做事情,而不是去擔心會發生什麼事。
我完全同意最好的辦法就是闖進一個社群,然後開始提出問題。在我的文化裡,跟別人一樣也是非常重要的。芬蘭人通常比較安靜,屬於觀察型, 而不會主動提出問題。其中一個我特別想 RailsGirls 工作坊有的東西,是一些關於文化的環節,我們可以談論不同的人 —— 比如說在 Rails 社群內有哪些人。
我們會談論 Matz;我們會談論 DHH;我們會談論 _why;我們會談論 #FridayHug。我們會談論我引用的所有這些其他機構和東西,因為這不單單是關於代碼。
然後,我們鼓勵人們去成為他們本地社群的一份子,再來參與這些活動,並能夠有信心說:好吧,我所知道的足夠讓我去一趟社群聚會,參與更重要的事情。技術上我可能還不到這個水平,但是我很想再見到 DHH。[笑聲]
Charles:其中一件事情,我很想講清楚,其實今天一整天都已經以各種方式說過,就是如果你覺得自己被排除在外,或者是被孤立,請你永遠記住一點,這不是你的問題。
每個人都要面對這個問題,不僅僅是程式社群。你可以去問任何一個超過 40 歲的程式員,問他覺得自己在舊金山、矽谷可有受到歡迎,或者是類似的問題。你看,這不是你的錯。請記住,我們之所以有這樣的活動,而這些問題都變得那麼重要,更成為人們討論的焦點,都是因為我們正在嘗試修正問題。
現在已經有資源幫助你避免被排斥在社群之外。只要繼續奮鬥,我們一路上會嘗試盡力幫助你。 [笑聲]
Matz:真的,已經開始了,只要多努力一點。[笑聲] 在 CRuby,我們有大概 90 多位核心的貢獻者,他們有核心檔案庫的寫入權限。其中有些是日本人,有些住在美國,也有一些是歐洲人。我不知道任何台灣或中國的。不幸的是,目前還沒有女性貢獻者,但我還挺期待的。
其實我並不關心這方面,有關於性別、國籍、年齡、職稱等等。我們有非常年輕的貢獻者(大概只有 18 歲左右),也有很年長的貢獻者(像 50、60 歲),但實際上我不在乎。正如 Audrey 所說,我們看重的是人們內心的價值。我認為只有公平,而不需要太在意其他特性,才是對社群管理至關重要的。
待人友善在我們的社會是一個非常好的傳統,所以 Ruby 社群都以友善著稱。正如 Linda 所說,無論是社群、開源,甚至是網際網路,都是屬於人的事情,我們都是人,都有心靈。心靈之間的溝通,在程式設計、軟體創作,或者是任何事情裡面都是非常重要的。
Charles:對不起,我想快速分享一個勵志故事。2013 年我去了突尼斯的一個會議,是大概有 100 人參加的 Java 活動。第一次,在突尼斯一所技術大學舉行,無論是那個會議,還是那所大學都是以女人為主。那是我在全世界第一次看到的場面,我感到很驚訝。
可是她們都表現得很興奮,她們幾乎已經掌控了那裡的一切。 [笑聲] 舉辦那個東西的都是她們。很高興看到世界上已經有些地方在做著這種事情,並開始讓更多女人涉足科技。我很高興看到它在這裡,甚至世界各地發生著。
感謝 Linda 安排這個活動,並感謝 Rails Bridge 伙伴們在美國做的所有工作。這真是一個很激動人心的時刻,很高興現在有這麼多精彩有趣的程式員加入社群。
Linda:昨天在 RubyConf 台灣的活動上,有很多 RailsGirls 校友參與,並自願留在那裡幫助組織活動。我認為突然之間有數百位女人參與演講會議,幾乎就像童話一樣。
我真的希望昨天來幫忙的你們能夠繼續設計程式,明年可能換成是你在那裡演講,而我們也將會有更多女人擔任講者或者參與會議。
Hazel:主辦本次活動的是 RailsGirls,所以現在讓我們來談談 RailsGirls 社群。根據你的觀察,這個社群有什麼因素能鼓勵女人加入程式設計?
Linda:我認為那有拓展的作用,但是因為 RailsGirls 是我學習程式設計的一個非常個人的東西,不能單純照本宣科、套用到每一位女人身上,就讓人走進程式的世界。正如 Charles 提到,還有很多團體組織正在以非常不同的方式工作。可以重複一下問題嗎?是什麼?[笑聲]
Hazel:也許我們可以改變一下問題,有哪些因素...
Linda:對了,有什麼因素鼓勵女人加入程式設計?正如我在演講中提到,對我來說,當初給我那個「啊哈時刻」的,是程式的實際應用、表達自己的能 力,以及事物創意的一面。我認為其中有兩種重要時刻:第一種是非常切實的時刻,就是當你看到栩栩如生的畫面,然後你說:「哇,這是我做的嗎?」第二種是比較知性上的樂趣,就是當你看到類似漂亮的程式碼的東西,然後你會說:「哇」,這是一個知性上的「啊哈時刻」。
有時候,我們的教育系統針對的是後者,在我們有那種實做的「啊哈時刻」之前,總要花很長一段時間去了解陣列怎麼運作之類的。也許要吸引更多女人加入,其中一種方式就是讓她們有更多第一種時刻。
Audrey:延伸這個比喻,我想說一下「人們為什麼要寫詩?」人們寫詩,是因為他們對某個東西有很強烈的感覺。正因為如此,很多十幾歲的青少年都會寫詩,因為他們對事物有很強烈的感覺。[笑聲]
只有少數人之後會繼續寫作,但無論如何,那就是火花的開始。那是第一個時刻。無論你是什麼性別、年齡,如果你開始非常關注某個東西,程式設計總是有方法幫助你實現這個目標。
一般來說,它可以自動化一些任務,讓你減少挫折;或者傳遞你的訊息;或者讓你身邊有更多的社群;或者得到更好的裝備,讓你可以更有效地做任何你關心的事情。軟體總有某種方法,像熟練掌握語言一樣,幫助你跟其他人溝通。
而 Linda 所說的第二點,當你看到你寫的詩感動了別人,他們到你這裡來,然後說:「嘿,我讀了你的詩,我感動極了,而且哭了起來。」—— 只是閱讀你的詩。然後你會得到一種成就感,因為你創造的東西觸及到另一個人的心靈。
這實際上很容易做到,尤其是做網站。所以這就是人們傳遞訊息時應該專注的另外一件事,不僅僅是使用現有的網路系統,例如 Twitter、Facebook 等等。只要你自己設計的東西 —— 即使它只是使用 iframe 和入門級 CSS 寫成 —— 就有著一種影響力,因為這就是你;它是你的一部分;是你靈魂的其中一塊,而不單單是部落格系統或社交網絡系統中的帖子。謝謝。[掌聲]
Charles:我想說,讓女人更容易進入程式世界的其中一個最大因素,正就是你們在做的事情 —— 讓更多女人投身社群,讓更多可以被識別為新程式員的女性加入。
你正在幫助未來女性程式員奠定基礎。你在幫助打開那扇門,讓它變得更具吸引力,使未來的女人可以更自在的成為程式員。
不要忘記,你正在做的是一件很了不起的事情。沒有你們,未來那些希望入行的人,將會跟 10 年前或者 20 年前的人遇著同樣的麻煩,所以繼續努力做你正在做的事情,因為你真的在幫忙。你現在正幫助世界上所有的女人。
Matz:我一輩子從來沒有寫過一首詩,但古語有云,詩是心中熱情的結晶。如果這是真的,那 Ruby 本身就是我的詩,是我大概用了 600,000 行 [笑聲] C 代碼寫成的詩。 [掌聲]
Charles:對啊,是一首史詩。 [笑聲]
Audrey:而且很動人。
Matz:但無論如何,創造 Ruby 背後的主要動機是熱情,是我對程式語言的熱情。熱愛程式語言對大多數人來講都不可思議,但我就是不能控制。[笑聲] 從高中時候開始,我就喜歡上程式語言,所以接下來的熱情很重要。
也許圈內的女士、女孩和男孩都會有同感,會有熱情想要創造東西,然後你看到你的軟體寫在屏幕上,讓你感覺很好。那就是讓你開始的熱情,熱情讓你成為更好的程式員、更好的創造者,甚至是藝術家。
如果我要說一點什麼,那就是 —— 順應你的熱情,然後滋養你的熱情。也許這對你成為一個更好的人是非常重要的。
Hazel:首先請大家給他們四位一點掌聲 。 [掌聲]
這真的令人興奮,對嗎?我知道在座很多人都從沒有參加過程式課程,或者是參與編碼過程。我想問一個問題。你們想要學程式嗎?如果你想,請舉手。舉起你的手,高一點。 [笑聲]。拜託,OK。請不要把手放下來。拜託,我們很快就會錄取你。[笑聲]
在座有沒有任何程式員願意教這些人,請舉手。哇,你看,有好多的手都舉起來了。我認為這是真的有可能。如果你真的想參與這個社群,想要學習,你只需要請他們教你,也許像 RailsGirls 一樣,你可以建立自己的社群。也許使用不同的語言,在不同的城市、不同的區域,這一切都有可能。
最後,我希望在座各位給觀眾一些話,鼓勵他們追求學習程式,或者也許他們想做點別的。你們可以講一些話嗎?
Audrey:我想邀請你忠於你自己。在台灣你可以在雜誌或書本上看到很多,人們都追求要像雜誌或書本封面的人一樣成功,或者一樣的有趣,或時尚。這種訊息到處都是。我想這已經是世界性的事情。
但我想鼓勵你,讓你知道,如果你遵循這些雜誌書本所列出的方式做人,你頂多只能夠成為一個很好的複製品,或者是某人一個更好的複製品。但是,那也不是不可替代的。這不是原創真實的,對你來說也不是真誠的。
我想至少對我來說,唯一追隨熱情的方法,是想想自己有什麼獨特的經驗,讓你在乎你所在乎的東西、讓你以自己感覺的方式去感覺事情,然後再從中發現真實面對自己的理由。無一例外,我認為熱情和慈悲心會隨之而來。謝謝。 [掌聲]
Charles:我喜歡閱讀科幻小說和幻想小說,也喜歡看好萊塢電影和科學小說,但在現實生活中我們沒有 ESP,也不像蜘蛛俠或者超人般有神奇力量,可是現在我們可以控制電腦。
我們可以控制網絡,從而以光速在一秒之間跟世界各地的人溝通。這是一種神奇的力量。我相信程式是一種神奇的力量,讓想像成真。所以透過學習,並具有程式設計能力,讓你可以命令電腦使用一些神奇的東西。學習程式,成為一個魔術師、一個精靈,變得更快樂。[掌聲]
Linda:現在我依然在試著搞清楚自己長大後到底想做什麼,到底我想要做什麼事情。 [笑聲]
我和 Audrey 有完全相同的概念。我回首看過自己的人生,試著找出是什麼時刻讓我變成今天的自己,讓我做著今天在做的事情。我想首先是八歲的那一年,我讀到 Steve Jobs 的一句話,那時候他在談論把點連接起來。如果你只會往前看,而不是向後看,你怎麼可能把點連接起來呢?
然後我看著天空,星星形成的形狀,有誰知道到底是哪個人想出了星座這回事?絕對不是科學家,也不是工程師,而是講故事的人。
人們以前想要透過繪畫,並說「這是一隻貓頭鷹;這是一頭驢」,然後試著了解天空。同樣的方式,我一直在嘗試找出自己生命中的點到底是什麼,而它們會形成一張怎麼樣的圖畫。
這些圖畫會隨著時間而改變,當中也有可能有著不同種類的連接,但擁有這些點本身就很重要,而且要開始思考它們會形成什麼。這就像 Audrey 說的,是每個人的個性,而且非常獨特,絕對不是從別人那裡複製的東西。[掌聲]
Matz:我有一點偏頗,但說實話,我相信能夠編寫程式是一個人能夠擁有最強大的技能。它基本上沒有要求什麼資源。當然有一台電腦的確有幫助,但本質上這一切都只是來自你的頭腦,就看你能創造出什麼來。
任何你能夠想像的,你都可以創造出來,而且你不需要什麼,只要有時間和精力就行。一旦你開始投入其中,它幾乎就像嗑藥一樣。你會感覺到自己到底有多強大,也知道你可以用程式做多少東西。要努力熬過艱難的早期階段,因為它是一趟很棒的旅程,真的令人興奮。[掌聲]
Hazel:OK。謝謝你。我從觀眾那裡收到了一些問題,但在回答問題之前,你們還有沒有其他問題想問?有沒有任何筆記你們想要傳到台上?有沒有人?這已經是所有的問題嗎?
那我們開始 Q&A 吧。我認為這個問題應該由程式員來回答。是什麼讓你想要讓女人參加這次活動?你認為這對參與本次活動的女人會有什麼不一樣的影響?
Audrey:現在的問題是,我想,是關於我們認為這對參與這次活動的人有什麼影響,那些活動讓參與的女人會有什麼生活上的改變。這是一個非常好的問題。
當我們想讓參與者自願擔起重要的社會任務時,我們要謹慎使用技巧。這是有關培養的問題,要培養一個在人們內在點燃的火花、觸及他們所在乎的東西。也許有人覺得很無力,是因為相信自己是世界上唯一在乎某個問題的人,或是認為那個系統太大、不可改變,單靠自己根本不能挑戰什麼,諸如此類的原因。
我認為寫程式本身,就是一種能夠賦予人們力量的方法,讓你看到世界上有上百萬的人,他們也許每天只花五分鐘的時間做某件事情。或者,如果你真的上了癮,你會每天花 15 個小時去做那些事情…… [笑聲]
而這些事情很明顯讓世界變得更美好。我認為那會影響一個人的生命,以其他領域很少可以提供的方式,賦予人們力量。
Charles:我想說我的理由比較自私一點。幾乎每個我所碰過的程式員都教會了我一些東西。如果女人不是這個社群的一部分,那麼有些事情我就學不到。我希望每個人都成為這個社群的一份子,有一天讓我有機會跟你們見面和討論程式。
這一切都是雙向的。社群的運作總離不開社群本身。它裡面必須有很多不同的人,很多不同的想法和看待事物的不同方式。它也不只是為了你而存在。我認為在程式世界、IT 和高科技世界裡,引入更多想法絕對是至關重要的。這是一個很好的方法去做到這一點。
Linda:至於 RailsGirls 活動,我們常常說,其實在一個週末,特別是對 Rails,根本不可能學到太多關於程式設計的東西。可是,你有機會跟導師接觸,你能夠跟一位真正的程式員溝通,然後你也會跟其他所有因為科技感到興奮的女人碰面。
在台灣,你會在活動上看到很多女人,但我們曾經在埃及開羅或者是亞塞拜然,他們甚至不知道有其他女人會因為這個東西而感到興奮。這是一個非常強大的東西,去改變和接觸人民群眾。
Matz:每一個人的動機和背景都不一樣,比如說獲得新的知識,或者是透過學習程式設計提高收入,但不管你背後的動機是什麼,我真的希望你能夠理解寫程式本身是非常愉快的事情。它很有趣。我寫程式已經超過 30 年,但我從來沒有感到厭倦。這是非常令人興奮的。我經常忘了吃飯,忘了睡覺。[笑聲及掌聲]
真的,它真的那麼有趣。我希望你能夠理解當中的樂趣和喜悅,而且你也會有自己的個人動機,加上你知道那種樂趣將會改善,甚至於提升你的個人動機。
Hazel:第一個問題之後,現在輪到第二題。這題也涉及到第一題。發問的人正在行銷業工作,想問學習程式設計,會對現實生活有什麼幫助?
我想也許這個問題,我們應該問一下這裡的 RailsGirls 參與者。有沒有任何 RailsGirls 想要回答這個問題?有沒有 RailsGirls?哎呀。我覺得 Linda 應該有很多關於這方面的經驗。
Linda:讓我想一想,行銷人員,也許會舉辦電郵活動。也許你可以做一個儀表板,展示那些電郵活動的分析,那樣你可以更好地傳達給老闆知道,這些東西有多麼重要。
也許你需要買一個新的活動網站,然後程式員告訴你:「這是不可能的。你不能做到這樣。」之類的話。那麼你就可以肯定的說:「是喔?亂講。你這樣做就可以了。」 [笑聲]
這類事情,我想你的行業裡有很多實在的東西可以做。有沒有其他想法?我從來沒有做過行銷。
Audrey:我打算從比較哲學的角度聊一下。行銷就是把訊息傳遞給其他人,讓對方用他們有的東西跟你交換,然後彼此都變得更好。這就是行銷的基本概念。
傳統上,有三種為人熟悉的交換或市場營銷行為。其中一種是內團體(In-group),就像我們同在一個家庭,或者是處於同一個「社區」裡,當中有分內團體(In-group)和外團體(Out-group)。
家庭或是這些內團體的成員,他們會共享一切、交換一切,可是他們不會跟外人,比如說非我族類(「外來人」)分享。這就是其中一種交換模式。
第二種交換,就是我們在政府或者是其他層次結構中看到的,我們只會跟梯子上方或下方的人進行交換。比如說,我只會向我的經理報告,然後我的經理會跟他們的經理報告,再往下分配資源。這種交換是完全科層式的。
第三種就是我們跟任何有錢的人交換。我們向有錢的人提供服務或貨品,然後我們用這筆錢再與別人交換,與其他向我們賣東西的營銷者交換。基本上就是使用貨幣交換。
以上是世界上三個主要的交換模式。
可是,以行銷者的身份參與開放源碼(像 Ruby 社群),你就能學會世界上第四種交換模式,也就是說,你可以自由地跟世界上任何人,為了任何目的而交換。
這是一個非常革命性的想法:我不在乎你是否跟我來自同一個族群;我不在乎你是不是台灣人。我不在乎你是不是老闆或經理;我不在乎你有沒有錢。我想向你提供我的服務,我就慷慨給你。
我們已經證明了,這種行銷方式(像 Linda 的 Kickstarter 活動)比起前三種傳統交換模型,能夠更有效地在更短的時間內接觸到更多的人。這將會是 21 世紀的潮流。參與開源社群,你會親眼看到它如何運作,以及掌握它的運作方式。 [掌聲]
Matz:我曾經是一個專業程式員,我現在還是。可是以前我為公司打工,我在團隊裡開發軟體。那個時候有很多事情都不在我控制之內,所以當時老闆決定說,你要使用這個工具、你要使用這個語言,諸如此類的,但都是廢話。 [笑聲]
現在我在做開源軟體,主要是因為它比較受我控制。我可以自己決定做什麼專案,可以決定使用什麼技術。某程度上我可以決定自己今天想要做什麼,比以前好多了。我想寫程式的樂趣之一,就是讓你更有權力、更能控制。當然,有權力就必然有責任。
Hazel:謝謝。接下來是關於程式設計普及性的問題。如果女性程式員社群越來越大,她們對程式設計的相關市場有沒有什麼影響?
Linda:我之前在寫關於這個問題的報告。世界上首位專業程式員出現在第二次世界大戰的時候,當時也有很多女人操作電腦和計算彈道等事情 —— Audrey 可能會知道更多關於這個歷史 —— 當時他們在為自己的國家服務。
然後到了上世紀 60 年代,操作電腦或者是做電腦程式的都是女人,因為男人覺得這是一個愚蠢的體力勞動,所以就讓女人去做,她們負責操作電話系統也是相同的原因。
可是這些女人後來意識到,程式的力量真的很強大,然後她們的技術變得愈來愈好,就像從前的貝爾實驗室。
我已經不記得那台電腦的名字了,但人們那時候就在這台電腦上工作。「程式設計只屬於男性」的整個形象都是在 60 年代的時候才出現的,因為男人想回到程式行業。他們所設立的程式員職位的要求,都是為了只讓年輕男性入行而訂下的,而且整個運動就是很刻意的去做。在這之前,它就是一個女人的職業,不論好壞,因為它沒有受到當時的社會所看重。也許 Audrey 會了解更多。
Audrey:其實,Linda 已經幾乎說了美國那邊所有有關的歷史。我認為程式教學和服務業 ,將會變得非常分散。
在 20 年前,我們有所謂「結蛹期」的概念。這是黑客詞典 Jargon Files 裡的一個詞。它說,基本上要成為一個專業的程式員或黑客,你必須花三、四年的時間沉迷於電腦當中,你會完全打亂你的睡眠模式,一次寫 20 個小時的程式。然後,到了某個點,你就會頓悟。這其實很像禪宗的想法。[笑聲]
一旦你到了那個點,所謂「零的轉移、巫術的權勢」,基本上你就成為一個巫師。一旦你成為巫師,正如 Matz 所說,所有關於性別、種族、年齡、國籍的差別都會消失。這就像《駭客任務》中 Neo 把一切都看成是綠色數字的一幕。[笑聲]
到了那個階段,沒有東西能夠影響你的客觀判斷。這也是一個非常禪宗的概念。可是我認為這算是一個神話,主要是因為那個時候如果沒有網路社群,要學習程式是非常困難的事。
現在有 RailsGirls 和類似的社群,我們就有了一個緩坡。你可以非常舒適地留在斜坡上的任何一點,還有很多人會在同一級階梯上互相支持,不一定需要兩三年的密集時間。用這種方式,你可以學上五、六年 —— 你甚至可以一天睡 8 個小時也不會退步。我認為這會大幅改變市場,因為除了業餘愛好者和專業人士之外,階梯上的每一點還會有細分的市場,這樣市場和社群都會變得大很多。[掌聲]
Hazel:下一個問題:你第一次投身程式設計是什麼情況?
Charles:我真的不知道是什麼時候,大概六、七歲吧。我學會了如何使用電腦後,就立刻試著了解如何讓它做更多的事情。
可是這麼多年來,真的激發了我繼續走下去的,除了覺得自己很厲害的感覺之外,就是能夠編寫軟體幫助人們,讓別人快樂、讓人們的生活變得更容易。
我對 JRuby 工作很有熱情,因為我聽到使用者的故事,他們很愛使用我們的軟體。他們很高興,而且生活都變得更好。那就是真正讓我繼續走下去的動力,而且還激發了我繼續成為一個程式員,嘗試讓每個我認識的人都成為程式員,因為它真的為其他人的生命帶來很多。
[講者把麥克風傳來傳去]
Audrey:這就像在傳接力棒,對吧?
我記得我第一次寫程式是在我七歲的時候,家裡有一本很舊的書。Matz 剛剛私底下告訴我,他在一間小鎮的圖書館裡,找到一本關於 Ada 程式語言的書。 那時候日本沒有很多關於程式語言的書籍,所以這本 Ada 參考書,他就從頭讀到尾。很不幸的是,我的書是講 GW-BASIC 的。[笑聲及掌聲]
如果它是一本 Ada 的書,也許我會成為一個更好的程式員。可是無論如何,我也把它從頭讀到尾。但那時候我沒有任何電腦,也沒有看過任何電腦。
我所做的是,拿了一張紙,開始在上面寫,又畫了一個鍵盤在上面。我開始在紙上按著。我按著那些鍵,並寫下出現在命令行後的英文字母。然後,我還記得輸入「10、空白鍵、RANDOMIZE TIMER」時候手指的觸感(這是 GW-BASIC 程式一開始要做的)。在我遇到人生第一台電腦時,這已經銘刻在我的肌肉記憶裡了。
這對我來說,是一個關鍵的時刻,因為它的意義是,計算不只是和電腦有關,而是某種思維方式。透過某種方式 —— 如果你用某種方式組織你的思想,它會產生可預期的成果。它所產生的東西,你可以展示給其他人看,這樣他們就可以複製你的成果。
實際上這就是科學的範型。一個沒有任何科學儀器的人,可以靠著一本古老的 GW-BASIC 書,就自己體認到科學方法。對我來說,這就是具決定性的一個時刻。
Matz:嗯,我也有類似的經歷。我遇上電腦的時候已經長大了,那時候我 15 歲。那時候電腦運行的是 BASIC(簡化版),語言是非常有限的。它只有大概 4K 的記憶體,BASIC 的要求非常嚴格,它只容許一個字符的變數名稱,意思就是說,你只能有 26 個變數。這讓我很挫折。
在書店裡,我找到一本關於 Pascal 語言的書,於是我就從頭讀到尾。後來我意識到,其實世界上有很多種程式語言。各種程式語言彼此不同,那些語言的創造者一定有自己的意圖。
那個時候,不知道為什麼我有個想法,如果有人為了自己的目的去創造了程式語言,那為什麼我不行?
從此以後,這個想法擊中了我的大腦,我對程式語言變得非常、非常感興趣。不管是怎麼樣的程式 —— 我不在乎,我只在乎程式語言。
所以,我有其他朋友想要寫程式,比方說,來創作遊戲或賺錢什麼的,但我都不在乎。我只關心這個媒介,而不是目的。我跑去讀 Ada 的書、Pascal 的書,還有 Modula、Lisp 和其他程式語言。
可是我沒有一台電腦用來創作程式語言。我沒有關於編譯器或解釋器的知識,所以我就拿出筆記本,用我想像中的程式語言寫下程式。你不需要會寫程式,就可以設計程式語言了。
不幸的是,我弄丟了那個筆記本,真的很可惜。我什麼都不記得了。我相信那是在 Pascal 和 LISP 之間的一種語言。
其實我在高中時代沒有懂得電腦的朋友。後來上了大學,我遇到一些喜愛寫程式的人。那個時候,我發現很少有人會關注程式語言。之後,我去研究資訊科學,學會了怎樣寫編譯器。接下來,我慢慢地創造出 Ruby。不知不覺地,它就接管了世界。 [笑聲]
Linda:[笑聲] 我已經講過關於我做高爾網站的故事了。 [笑聲] 關鍵的時刻。最近,我去逛書店。在做畫 Ruby 繪本之前,我試著找一些書籍,是孩子了解電腦如何運作的。
我找到大量談論天文學的書籍,像如何成為一個天文學家,或者內燃機如何運作,目標讀者都是孩子 [笑聲] ,但就是沒有一本有解釋電腦是如何運作的。對我來說,那就是一個「啊哈」時刻,這種關於軟體工程的材料有存在的需要,也許要做這件事的人就是我。我很喜歡 Audrey 提到的紙張電腦例子。
其中一件我想做的事情,就是做一個小小的摺紙電腦,孩子們可以自己動手組裝,放入迷你 CPU,就像擁有一台真正電腦的感覺,是他們第一台摺紙電腦。正如 Audrey 所說,運算不只是關於實際硬體或者類似的東西,而是操作它的那段經歷。
Charles:保持對程式的熱愛,看看你每天都會碰到的問題,然後找個方法使用程式來解決它。以養育孩子為例,真的有千千萬萬種方法讓你使用程式來幫助你管理 —— 睡眠時間、飲食等等。各種各樣的事情,你都可以做得到。 [笑聲]
另一件事要記住,我們作為人類擁有的所有技能當中,進行程式設計的能力,對你的要求可能是最少的。你真的只需要花一點時間和精力。當然,如果你在養育孩子,那你真的可能沒時間也沒力氣。
可是只要你能夠每天拿出短短幾分鐘的時間,繼續前進,從你的生活和熱情當中創作出新東西(如果需要的話,有關於孩子和家裡的東西)。那麼你就可以繼續下去。你就可以繼續下去。
我已經無法想像程式設計不是我生活的一部分這回事。即使在最困難的時候,我有時候都會拿出一點時間來休息,我不得不離開一下。我曾經被自己在做的專案累壞了,也曾經因為別人針對我、我的程式、我的專案所說的話感到難過。可是我總是會回來。
我不認識有任何人曾經是程式員,後來卻放棄的個案。它以某種方式改變了你,我想這會跟著你一輩子。
Linda:一個實際的例子,我的朋友做了一個小小的 Arduino 時鐘,連接到她的 Fitbit。它有一個小屏幕,總是為她的小孩顯示著她離家還有多少步。也許就是這種專案,幫助點燃心中的熱情。
我想引用一些很實際的德國朋友說的話。我曾經跟世界各地很多人談過他們參加 RailsGirls 的動機。其中一個德國女孩跑過來跟我說:「寫程式是最靈活的工作,薪水高,你可以在家裡跟孩子們一起做。你可以在晚上做,也可以在早上做。」這讓她們能夠自給自足,因此她們想要轉行。 [掌聲]
Matz:女士們很容易從程式設計和事業分心。主要是因為社會壓力,還有心理「思維模式」之類的。我現在宣布,對程式和事業抱有熱情是沒有問題的。即使你要照顧家人和孩子,你都可以對程式或事業抱有熱情。
你任何一天都可以回來。那種熱情可以激勵你。那種熱情可以推動你向前。[掌聲]
Audrey:以下是親身經歷,其實我弟前一陣子在教我父親寫程式,那是好幾個月前的事。我的父親 60 幾歲。他有很多學生要教,還有很多日常事務,他有三隻狗,還要照顧父母等等。
我在教人寫程式時,我覺得最重要的事情,是把你的想法放在某個地方,讓其他人可以看到並改進。當然 Ruby 是讓你做到這一點的快速方法。只要你有 GitHub 帳戶,你就可以直接放一些東西在那裡,甚至只是作為一個 Gist 也好,不用建立一個檔案庫,人們就可以開始使用代碼工作,並給你想法和建議。
即使這很困難(GitHub 對我爸而言並不容易),也可以使用其他工具,例如 Hackpad,甚至像 Google Doc、Google Spreadsheet、EtherCalc 或類似的東西,任何線上的試算表、共筆文件、或者是繪圖工具。你可以把你的想法發布在一個地方,讓每個人都可以看到和評論。這其實就是寫程式的第一步。我的意思是從社群的角度切入,而不是從代碼的角度。
回到原題。我覺得對於時間比較零散或有限的人,其中一種方法是觀看或參與。有一些需要群眾投入的專案,其實並不需要你投放全部時間。
舉例來說,這裡幫 g0v 零時政府打個廣告。我們現在有一個專案,有人到監察院裡印出政治獻金報表。它被鎖在 PDF 格式裡面,而且只能列印成紙本帶出,一定還會加上浮水印。他們不在網上發布,而且印的人還要付列印費,每次只能夠拿特定的頁數出來。這是非常古老的做法,因為監察院沒有足夠預算做電子化。
我們所做的,是請人們把列印本拿出來,進行掃描,再把它們上傳到 DropBox 或 Google Drive。你不需要有什麼技術去做這一點,然後我們用演算法把它們分割成單獨的格子。
然後你到網站上,會看到某個格子的圖形。這就像一個驗證碼(Captcha)或遊戲,只會看到一張圖片,然後你要輸入 —— 也許是一個名字,或者是一個數字,你只需要鍵入它就好了。有了這個群眾來源的方式,我們已經辨識了 300,000 格的資料,而且還在增加當中。人們一起改善代碼和流程,讓捐款資料能夠公開透明,成為公共財的一部分。
這個專案激發了很多原本不知道什麼是程式設計的人,他們開始幫助我們寫更好的指引。比如說,有一位朋友,他從來沒有設計網頁的經驗,他只是非常認同這個活動,就自己開始學習如何寫一個基本的 HTML 網頁,只是為了把自己設計的漂亮圖示,寫進專案的標準作業程序裡。
總歸來說,就是要把東西放到人們可以看到,並允許他們有貢獻的地方。哪怕你每天只有五分鐘,或者只有 15 秒,都可以感覺到你是社群的一份子。而你結識的人,將來當你有多一點時間時,就會帶你進一步向前走。
Like kids everywhere, U.K. schoolchildren know all about using
tablets and PCs. Now they’re about to learn how to create programs to
run on them.
The U.K. government last week launched a promotional effort for its
new computer-coding curriculum, aiming eventually to teach coding to all
students ages 5 through 16.
The government says the U.K. will be the first G20 country to implement the teaching of coding on a national level.