24 歲的程式開發者之路:從創造自己的世界到跟社群分享

「為什麼你會對寫程式有興趣?」回憶了好久,最後發現其實起因和大家都一樣:遊戲。比較特別的是,後來發現比起玩遊戲,我更喜歡創造自己的世界。也因為這樣一頭栽入了「可以創造自己世界」的程式領域。
評論
評論

作者 Mosky Liu,是 Pinkoi 的 Python Charmer,是個熱愛 open source 精神的 Python 工程師。同時有在教授 Python 課程,也擁有數個 Python 專案,例如 ZIPCodeTW、Clime 與 MoSQL。也曾在數場研討會分享過,包含臺灣的 PyCon、COSCUP、TEDxNTUST,以及在日本、新加坡、香港、韓國等地的 PyCon。更多請見: mosky.tw

原文為 《轉眼、24 年》,INSIDE 獲授權轉載。

年初發現今年農曆生肖是自己的生肖時,感到一陣恐慌 — — 什麼,今年要滿 24 歲了嗎!之前朋友和我聊相似的感觸,才用冷淡的態度回應過,結果自己遇到時才真的懂那種恐慌感。

目前為止,做了好幾個開放原始碼專案、講了更多場大大小小的分享、包含一場 TEDx、百餘小時的課程,上個禮拜還剛完成 在五個國家演講過 的紀錄,說起來也還是比上不足、比下有餘。決定將這 24 年整理一下,下個逗號後繼續前進!

忽略框架:年紀不重要

前面提了不少次年紀,但通常我在各種場合時,會刻意隱藏關於年紀的線索,像以前會避免提到自己是學生。因為在很小的時候,就發現過偏見形成的框架、或說自我應驗預言對一個人的影響有多深刻,所以養成了這個習慣。

這個習慣也形成了有趣的個性。做事時,我從不會用年紀當理由,盡全力就對了;討論時,我也從不考慮輩份,盡事實、邏輯就沒錯。有時的確會忘了分寸,但獲得的成效是很值得的。

說到這裡就有些遺憾,24 歲可以說是社會對一個人期待的分野,以後就不能故意忘記分寸了,哈。但刻意忽略自己或別人強加的框架,真的是一個滿實用的思考習慣。

977410_10201151578172811_1546514368_o
Mosky Liu

發現動力:寫程式創造自己的世界

從第一次寫程式算起,到 2016 結束就至少滿 12 年了,佔了短暫人生的一半。也常常會有人問「為什麼妳會對寫程式有興趣?」,頻率多到都覺得應該列入 FAQ 了,哈。不過我每次給的答案都不一樣,其實是自己都記不清楚了。

回憶了好久,最後發現其實起因和大家都一樣:遊戲。比較特別的是,後來發現比起玩遊戲,我更喜歡創造自己的世界。也因為這樣一頭栽入了「可以創造自己世界」的程式領域。

其實最早最早有興趣的是天文學和生物學 — — 現在也還是很有興趣 — — 小學中低年級時獲得了兩本天文書和電子的天文、人體大百科就自己啃了起來,對九大行星(當時)、恆星種類、太陽表面溫度、恆星演化、白矮星、黑洞、超新星、類星體、大霹靂、宇宙膨脹、甚至理髮師悖論、紅白血球、血型、巨噬體、抗體、抗原、小腸絨毛、循環免疫神經骨骼系統之類的東西如數家珍。同時間因為媽媽朋友偶爾會來幫忙重灌電腦,而覺得神秘還原軟體(Ghost)的文字畫面很酷。

再來中高年級時和朋友開始玩線上遊戲(魔力寶貝、仙境傳說)誤入了歧途、玩私人伺服器、自己架、寫 NPC 腳本,開啟了這段程式之路。一直以來我在「練功」這事上就興致缺缺,開始寫了 NPC 腳本後,才發現覺得比遊戲更有趣的事:創造自己的世界。

後來因為當時流行的視窗炸彈而對網頁產生了興趣,當時是想說這樣就可以把桌面設成網頁,加上有點令人懷念的輸入提示框(prompt)就可以設定密碼。因為只放了一行,瞬間被我弟破解;接著複製了幾千行,也是被我弟按著 enter 一秒破解,哈哈哈。

國中時自己邊摸索邊懂了 JavaScript 語法,也買了書,開始能設計比較複雜的程式。寫了養倉鼠遊戲、挖礦遊戲,唯一玩家都是我弟,回想起來我弟還真捧場,人也太好。還寫了以凱薩加密法為基礎的加密程式、國中時很煩幾百題作業的二元一次聯立方程式計算機,還會列出計算過程讓你抄、私服的魔物編輯器、還有一個現在想起來還是滿厲害的網頁視窗函數庫。

不過,其實我的數學計算能力都被當年寫程式算就好的這個想法給摧毀殆盡了。曾經我的數學還不錯,但自從學會程式後,每次寫數學作業、考試,都覺得很厭惡,覺得明明電腦算就好呀。但事實上計算練習真的是學習高階數學和其他學科的重要基礎,想起來真的還滿遺憾的。

在國三暑假時確定了自己對程式的興趣。當時和同學們玩了另一個線上遊戲,瑪奇,遊戲世界裡有相當多事件都是有固定模式可循的;就臨摹了一個著名的攻略網站,自己寫了一個更好用的。當發現上線只是聊天、反而寫程式寫得比較起勁時,終於確定自己有興趣的並不是遊戲,而是程式。

說到這有些感慨,天文學、生物學因為直到國中教的都沒有超過我小三小四時就會的範圍,那時也沒有機會特別接觸,興趣就這樣完全轉移到程式上了。

此時開始想學習「真正的」程式語言,於是買了書,學了 C++ 的皮毛。之後還自己發展出了一種結合一般陣列和鏈結串列特性的資料結構,幾年後才在別的地方看到相同的實作。不過 C++ 實在不像 JavaScript 好玩,因為 C++ 要寫圖形介面的門檻實在高上太多,所以很快地就回頭寫 JavaScript 了。雖然之後曾經一度是個指令列狂熱者,但回想起來,真的要有圖形介面的互動才能激發學習熱忱。

同時也對程式語言本身產生了興趣,還記得國中有堂國文課在講白居易作詩都求要老嫗能解,暗自下了決心自己寫程式也要能這樣。所以 Mosky 寫程式對可讀性如此偏執,還 到處提倡 提升可維護性的方法,其實都可以追朔到十年前開始在潛意識中轉動的小陀螺,哈。

所以,怎麼說呢。從小開始,我的動力都來自於獨立探索一件事,而程式是其中我玩得最盡興的一件事。

14089614_10207318982514620_1471870766_n

學會分享:從開放原始碼社群到更好的自己

2008 年,也是我高一時,當時 Windows Vista 是過街老鼠,同時 Ubuntu 有著比 Windows Vista 還炫麗的介面,加上小時候架私服時聽過 Linux,就決定要來學 Linux 了!

當時讀著 Ubuntu 中文維基,除了學 Linux 外,也認識了 Ubuntu 的核心精神「群在故我在」,讀完對開放原始碼產生了濃厚的興趣。進一步查了更多關於開放原始碼的介紹之後,真的深深感動了我。這世界上怎麼會有這樣的一群瘋子,自己寫的程式明明可以盈利,卻願意拿出來讓所有人無償使用、甚至修改。算是踏入開源社群的第一步,最後也是成為了瘋子中的一員啦,哈哈。

同時也決定想學一個 Linux 上的腳本語言,當時在讀維基百科上 Perl、Ruby、Python 的介紹,因為老嫗能解的小陀螺作祟,覺得 Python 強調的極簡風格、高可讀性、團隊合作、數學風、應用廣泛完全符合我對一個好程式語言的想像,因此就去抱了一本書回家開始學。

也是因為一開始不知道怎麼設定讓 Python 可以寫中文,也覺得未來想讓更多人用,就決定從今以後盡量看英文,註解也全都用英文寫,最後不知不覺地維持了這些習慣直到現在。也沒想到這決定會成為第二顆重要的小陀螺,這幾年的開源專案和國外演講,都多虧當時的這個決定。

2009 年開始參加 Ubuntu-TW 社群,同年也參加了 COSCUP 籌備團隊,隨後也在 COSCUP BoF 做了第一次的小分享,關於那時寫的套件管理系統(APT)增強小工具,也是第一個完整的 Python 專案,還同時支援英文和中文,哈。其實我的許多非程式能力,像是基本的溝通、企劃、組織能力都是在這時候培養出來的。對現在的我也相當有幫助,軟體工程師要懂的真的遠遠不止程式。

2010 與 2012 年,分別很謝謝兩位朋友的介紹和鼓勵,開始了我的教課、開源專案和研討會演講生涯。是一個第一次教得還行就有機會繼續教;第一次投稿就繼續投上癮的節奏,持續到了今天。

2012 年也加入了 Pinkoi,說起來真的是一個滿好的時機,剛好能力足以做出貢獻,也同時能從團隊中學習。看著團隊從不到 10 人成長到現在超過 70 人的跨國團隊,真的是非常非常難得和獨特的經驗——現在我們還 在找工程師 喲。

2015 年也有幸在 TEDxNTUST 分享了我對開放原始碼社群的認識,是一群熱血的瘋子軟體工程師,最終改變了這個世界!

從 Ubuntu 到 Python,之所以能用能學全來自於開源精神和「群在故我在」,所以一直以來都覺得將專案或心得回饋給社群對我來說是像呼吸一樣自然的事。但其實後來發現,無論是專案或演講,在其中受益最大的或許是我自己。

說起來實在令人起雞皮疙瘩,一開始開放原始碼灌溉了我,再來受到開放原始碼精神的驅動而分享,但最後的最後還是我自己獲得了最多的好處。

從開放原始碼精神中學會分享,對我來說真的是相當重要的一課。

1072092_646641105347522_258244205_o
Mosky Liu

繼續前進:用分享做為動力來源

今年在撰寫年度計畫時,將「分享」列入了主要目標之一。在撰寫這篇文章時,決定讓分享這件事成為我的第三顆小陀螺,用分享做為繼續前進的動力來源。

曾經讀過一篇描述擁有第四種錐細胞而能分辨出更多色彩的女性畫家,在一次戶外課程中,提醒了學員看草叢中陰影的紫色、藍色和各種色彩,學員感謝地說「要不是她提醒了我,我這輩子可能都不會注意到簡單陰影中的美妙色階。」人類的第四種錐細胞雖然不能讓人類看到紫外線,但能讓人類更仔細地分辨顏色(不好意思,找不到原文,只找到 這篇介紹),只有極少數的女性能夠擁有這樣的基因。

那段敘述深深地打動了我,我們因為天賦、努力而獲得的能力,和第四種錐細胞又有什麼不一樣呢。而如果這些能力能夠看到美好的事物,是不是能夠也和其他人分享這些美好呢。

以前分享是因為開放原始碼精神,未來、我決定分享是為了讓所有人都能感受到我所認識的美好事物。