RailsGirls.tw 特別講座 · 會後座談

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:我想邀請你忠於你自己。在台灣你可以在雜誌或書本上看到很多,人們都追求要像雜誌或書本封面的人一樣成功,或者一樣的有趣,或時尚。這種訊息到處都是。我想這已經是世界性的事情。

但我想鼓勵你,讓你知道,如果你遵循這些雜誌書本所列出的方式做人,你頂多只能夠成為一個很好的複製品,或者是某人一個更好的複製品。但是,那也不是不可替代的。這不是原創真實的,對你來說也不是真誠的。

我想至少對我來說,唯一追隨熱情的方法,是想想自己有什麼獨特的經驗,讓你在乎你所在乎的東西、讓你以自己感覺的方式去感覺事情,然後再從中發現真實面對自己的理由。無一例外,我認為熱情和慈悲心會隨之而來。謝謝。 [掌聲]

Matz:我喜歡閱讀科幻小說和幻想小說,也喜歡看好萊塢電影和科學小說,但在現實生活中我們沒有 ESP,也不像蜘蛛俠或者超人般有神奇力量,可是現在我們可以控制電腦。

我們可以控制網絡,從而以光速在一秒之間跟世界各地的人溝通。這是一種神奇的力量。我相信程式是一種神奇的力量,讓想像成真。所以透過學習,並具有程式設計能力,讓你可以命令電腦使用一些神奇的東西。學習程式,成為一個魔術師、一個精靈,變得更快樂。[掌聲]

Linda:現在我依然在試著搞清楚自己長大後到底想做什麼,到底我想要做什麼事情。 [笑聲]

我和 Audrey 有完全相同的概念。我回首看過自己的人生,試著找出是什麼時刻讓我變成今天的自己,讓我做著今天在做的事情。我想首先是八歲的那一年,我讀到 Steve Jobs 的一句話,那時候他在談論把點連接起來。如果你只會往前看,而不是向後看,你怎麼可能把點連接起來呢?

然後我看著天空,星星形成的形狀,有誰知道到底是哪個人想出了星座這回事?絕對不是科學家,也不是工程師,而是講故事的人。

人們以前想要透過繪畫,並說「這是一隻貓頭鷹;這是一頭驢」,然後試著了解天空。同樣的方式,我一直在嘗試找出自己生命中的點到底是什麼,而它們會形成一張怎麼樣的圖畫。

這些圖畫會隨著時間而改變,當中也有可能有著不同種類的連接,但擁有這些點本身就很重要,而且要開始思考它們會形成什麼。這就像 Audrey 說的,是每個人的個性,而且非常獨特,絕對不是從別人那裡複製的東西。[掌聲]

Charles:我有一點偏頗,但說實話,我相信能夠編寫程式是一個人能夠擁有最強大的技能。它基本上沒有要求什麼資源。當然有一台電腦的確有幫助,但本質上這一切都只是來自你的頭腦,就看你能創造出什麼來。

任何你能夠想像的,你都可以創造出來,而且你不需要什麼,只要有時間和精力就行。一旦你開始投入其中,它幾乎就像嗑藥一樣。你會感覺到自己到底有多強大,也知道你可以用程式做多少東西。要努力熬過艱難的早期階段,因為它是一趟很棒的旅程,真的令人興奮。[掌聲]

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 秒,都可以感覺到你是社群的一份子。而你結識的人,將來當你有多一點時間時,就會帶你進一步向前走。

comments powered by Disqus