Skip to main content

· 3 min read

今年的Coscup活動中,我分享了一個開放的講題「人人能編程是可能的嗎?」。

在準備講題的過程中參考了很多資料、思考了很多的可能性,最後選擇以現在的方式和大家分享。

之所以會提出這個講題,其實是自己對我過往在各處分享各種不同講題、寫技術書籍、辦活動的總結。我發現不管我分享的主題為何,似乎這些活動彼此之間有一條驅動我這麼做的暗線存在。就我目前看到驅使我做這些事情的動力,可能是「讓人人能編程」這個願景。

「人人能編程是可能的嗎?」是個開放結局的問題,每個人都有自己的想法,覺得不可能實現或是有自己相信的可能實現。從講題被接受後,我也一直在尋找要怎麼將各種可能幫助我們達成「人人能編程」的各種可能性組織起來。 最後我歸納出可以用「人」、「程式」、「指令」、「機器」四個「從寫程式到在機器上執行」的過程中會遇到的必要元素間的距離來做判斷。用這四個元素間關係所組成的六個維度作為判斷框架,能協助我們判斷每個可能的實現在各個層面對「讓人人能編程」這件事。

從 PC 到筆電到智慧手機 / 平板這條線,改進的是「人與機器的距離」這個維度。

  • 周蟒改進的是「人與程式的距離」這個維度。
  • Blockly改進的是「人與程式的距離」(積木化)、「程式與指令的距離」(輸出 Python, Javascript)、「指令與機器的距離」(網頁上直接執行)、「人與指令的距離」(開源且 Blockly 本身積木與輸出都很容易修改)、「人與機器的距離」(開網頁就能用)這些維度。

因為演講時間有限,沒有辦法把每個想表達的想法都傳達出來,所以特別寫下此文,聊以記之。

· 7 min read

台北市有個便民的服務叫 「1999 台北市民當家熱線」,只要是跟公職部門有關的問題,如在公車上丟失東西、查詢號碼,甚至對公家機關服務不滿想投訴,只要拿起電話,撥「1999」,都會有人受理,找到適合的單位回覆,並追蹤處理狀況。一些透過「1999」反映的問題,還會轉化為上級單位的公文,正式行文要求負責單位回覆。

原來在公車上丟了東西,要先查對應客運公司服務中心電話 / 網站,找到電話號碼或網址,才能到對應窗口反映問題;對公家機關服務不滿意想投訴,要先查對應機關的電話或網址,或找到上一級機構聯絡窗口,才能反映問題,而且還要擔心會不會被「吃案」。整個過程的「交易成本」實在太高,讓大多數市民望而怯步,只能在私下抱怨政府不力。

有了「1999」服務之後,這些「交易成本」被政府吸收,市民只要

1. 拿起電話 2. 反映自己關心的問題 3. 等待回覆

即可,簡直就是人肉版的「Google Now」。

姑且不論弄這個服務所費幾何,又造成多少單位的額外負擔。至少就「便民」這結果而言,「1999」讓所有能夠打電話的市民,都有一個非常方便容易取得資訊、反映問題的管道。

這幾年政府單位開始大量產出各種 App。由於政府並沒有相應技術,因此這些 App 多為外包。然而這些 App 的下載量似乎都不怎麼樣。這是什麼原因哩?當然有很多可以抱怨的點,但如果要拿出一個大方向,我覺得一大部份原因也是「交易成本」的問題。

試想,一般民眾的日常生活中,政府單位的服務就像是自來水和電力一樣,除了停水停電外,不會特別意識到這些服務的重要性。當真的需要各單位的特定服務時,通常也只是非持續性的需求。

在這種使用情境下,該單位為了便民,提供了該單位的 App。 使用者要用到該單位的服務,「只要」上應用商店搜尋,下載該服務 App,開啓 App 後「就」可以使用了。

這樣的使用情境其實非常禁不起推敲:

1. 對於一年只使用幾次的服務,有需要先下載 App 才能使用嗎?更何況可能下載後打開 App,才發現裡面提供的服務都不是我想要的,整個「交易成本」很高。

2.  使用者使用的系統平台不同。政府資源有限,使用尚未提供對應 App 系統平台的市民,難道就是二等市民嗎?萬一提供了該系統平台 App,而該系統平台並未成功,負責發包的官員會不會哪天被追究圖利特定廠商?

簡而言之,對於使用頻率不高的服務,多數人還是寧願用行動裝置的瀏覽器直接連上機關的網頁查詢。於是這就牽扯到另一個問題:行動裝置連上政府網頁觀看的體驗不佳。

不少政府網頁還是上個 10 年的水準。大面積的圖片、Flash、塞滿整版面的資訊,完全沒考慮到使用行動設備瀏覽的體驗。根據今年的調查,台灣行動上網人口已經佔到全部上網人口的 4 成,而台北市的佔比應該更高。來自由心證一下,應至少 5 成使用者試過用行動裝置連上政府網站,而政府網站卻不能回應這近半受眾的需求,使得政府網站的功用大打折扣。

政府開發一款熱門平台的 App,所達到的效果只是 854 萬(4 成上網人口,行動上網使用者)   1/2(平台市佔率) 應用商店到達率 (使用者搜尋到這款 App) * 應用安裝率 (不知乘起來有沒有 1/100?) ~= 4 萬 +,於是除非追加預算特地推廣 App,大多數政府 App 安裝數可能都小於這個數字...

與其如此,政府是否應顧好「便民」的根本,

1. 先提供基本款的「行動版網頁」,以服務逐年增加的使用行動設備 / 小螢幕的市民, 2. 並一併重新檢視原本桌面款網頁的機能,以提供更有效率的便民服務。 3. 對於使用頻率較高的政府服務,則可以透過「Open Data」,讓各平台開發者得以接取公開的 API 與資料,提供多樣性的服務。

· 5 min read

第一個中文世界的開放徽章 「徽章」讓原本難以量化的能力,透過徽章的形式具現化。

我一直很留意遊戲化(Gamification)的應用。當越來多多事情變得可以測量之後,很自然的會想在生活中引入遊戲機制,以提高活動的參與度或樂趣。

最常見的遊戲化(Gamification)應用是 PBS(Point, Badge, Scoreboard)- 積分、徽章、排行榜。這些遊戲化元素在許多遊戲和社交網站中都會出現,如 KhanAcademyCodeAcademy 等近年湧現的線上學習網站。在站內學習時,每完成一道題目,就可以取得一定的分數;完成了一個學習單元?恭喜!你獲得了一個線上的徽章,可以把聯結展示給你的朋友或潛在僱主看。

但目前的遊戲化(Gamification)應用有個問題:我已在這平台 / 遊戲上投入了那麼多時間、精力,(可能還有金錢),一旦不用這平台 / 遊戲之後,那些我的豐功偉業都不見了。於是使用者 / 玩家會傾向停留在剛開始選擇的平台中,並減少嘗試其他家服務的意願。於是「Lock in」、大者恆大的現象就出現了。

也因此 Apple、Google 都仿效 XBox 推出自己的 Game Center,提供積分、徽章(成就)、玩家配對等功能,讓在同一個平台上的玩家更方便嘗試不同遊戲,並且保留遊戲的進度,期望能綁住使用者 / 玩家。

這個現象對遊戲或作業系統平台商而言也許是好事,但是如果把目標改成線上學習網站的話... 我是希望可以在更專門的網站學習不同的技能啦。 而且最好是不管線上或學習實際課程後,我都可以得到徽章 / 證書,這樣我可以把我收集到的成就展示給我的朋友或潛在僱主看。

第一個中文世界的開放徽章

Mozilla 嘗試在推動的 OpenBadges(開放徽章)標準就是一個解決線上 / 線下,不同網站之間徽章 / 成就流通,鼓勵使用者多多嘗試的方案。

前幾週在我講授的 COSCUP 課程 上,發出了第一個(? 我想應該是吧)中文世界的開放徽章

發放的流程是這樣的:

1. 學員聽完第一個小時課程,並已實際 Lab 操作一陣子,符合取得徽章的資格 2. 提供學員印出的徽章兌換券,上面的內容如下

徽章兌換券 3. 學員直接使用智慧型手機掃描條碼,或前往 http://badg.us/ 網站輸入兌換碼。 4. 學員登入後可取得徽章

 

http://bit.ly/15rbii1

5. 取得的徽章可以直接分享給他的朋友或潛在僱主看,或導出到 徽章背包 (http://backpack.openbadges.org/) 中備份。所有符合 OpenBadges 標準的徽章都可以備份到 徽章背包 中。學員可以結合其他網站上取得徽章,將這些徽章整理成一個個收藏(Collection),有系統地分享給他的朋友或潛在僱主看。

透過這樣的方式,即使是實體的課程,也可以在線上留下印記!學員除了學到課程知識,也得到了一個可以永久保存的紀念章。

除了讓使用者願意多方嘗試之外,同時也讓一般人擁有發放徽章 / 證書的能力。從初步的使用經驗來看,開放徽章還有很多的可能性值得探索。

· 8 min read

大企業喜歡名校畢業生並不是沒有原因的。

我們知道每個人都有自己的偏好,不太可能剛好喜歡每個要學習的科目。 成績優秀的學生不只是頭腦好,同時也有辦法控制自己的偏好,能同時把多種不同類型的科目都搞好。

可以把不見得那麼喜歡的工作也很好地執行,正是許多缺螺絲釘的大企業所需要的。

還好社會不是只有讀名校 ->進大企業這一種出路。不少非名校畢業生在開始工作後,也逬發出驚人的能量,在職場上如魚得水。就我觀察屬於這類型的朋友,通常在做喜歡的事情時都具有非凡的熱情。

當你對一件事情有熱情,持續投入一萬個小時,你一定會有所專精。當社會剛好需要你的能力,又出的起價錢時,你就算有所成就了。

找工作與經驗

有所成就之前要有一步步踏實積累的過程。如果能找到適合的工作,那對實現目標肯定有幫助。而就人力銀行等機構放出的調查來看,要找到適合的工作不容易,而許多工作又要求先有經驗。

現在已經二十一世紀又過十多年了,網路從普及,社交化,到漸漸融入了日常生活。 累積經驗的過程已經不只是進企業實習一途。

我認識了一些在學業上可能不算頂尖,但在我眼中絕對算優秀的學生, 從他們的表現我認識到:對想找 ITC 資通軟體類工作的大學生來說,開始要工作時,「沒有經驗」只是個借口。

為什麼我說沒有經驗只是個借口?因為資通軟體類(甚至企劃,行銷類)累積經驗的機會實在是太多了。

Open Source 相關的實習機會

請試著猜猜以下問題的答案:

  • 去年有多少 APP 比賽?
  • 去年中研院幾個月舉辦一次百人聚會?
  • 估計台北每個月舉辦的免費聚會 / 演講數目光 2012 年,台灣至少有 3, 4 個 App 比賽,中研院幾乎每個月都有 Conference 聚會,台北每個月至少 10 個以上免費聚會 / 演講。幫忙聚會的籌備,招商,報名,會議當天的網路,動線,飲食,時間控制,算不算實習經驗?

參加 App 比賽,需要企劃,設計,開發,美術,簡報,行銷等技巧,可不可以算實習經驗? 協助舉辦百人聚會算不算企劃,行銷類的實習經驗?

我說我沒有企劃,行銷背景,但我們辦的 GTUG Taipei 專頁 有 28000 人追蹤,可不可以算實習經驗?

有志於進軟體公司的學生,那更沒有藉口了。Github, GoogleCode 上面有多少大大小小的開源專案,只要在家裡,就可以學到如何使用工作中一定會用上的 svn, git 等版本控制工具,並透過郵件列表,Issue Tracker 等與世界各地一流的工程師直接溝通。可不可以算實習經驗?

就我來看,這些當然不該算做實習經驗。因為你參與的不只是實習,而是真正有意義,實在的工作經歷。

我反對缺乏目的的進企業免費實習。但我贊成主動透過參與開源社群,邊貢獻社會邊學習。

參與 Open Source 活動的好處

用參與 Open Source 活動作為實習經歷有什麼好處呢?

  • 透過 **參與活動時扮演不同類型角色 **,可以摸清楚自己的偏好與特長
  • 實習的成果公開,可以放在履歷上讓潛在雇主隨時 Reference
  • 查看你的活動記錄,可以看出你的團隊合作技能
  • 有參與過國外開源專案,你的英文程度至少在書面溝通上沒問題
  • 「我有貢獻 python/android/mozilla 專案的經歷」,怎麼看都很威
  • 和各型各色,但一樣具有熱情的人一起共事的經驗,將會影響你做事與看待事情的態度何況大型開源專案對貢獻程式碼的流程,與控管程式碼品質的嚴謹程度,遠高於一般台灣軟體公司。此外還有社會化的因素:你的程式碼所有人都看得到,不寫好一點好意思放出去?

因此參與開源專案對磨練自己寫程式的水準也很有幫助。

如何將 Open Source 活動貢獻加入經歷

透過 Ohloh 或是 Careers 2.0 (by stackoverflow) ,可以追蹤不同來源的開源軟體專案貢獻度。近年也可附上個人Github 頁面

國外招聘網站如 linkedin,可以在「Projects」或「Experience」中加入 Open Source 的貢獻成果。

參考資料:

"Whether or not somebody has contributed to open source is a good indicator of whether they're a good engineer" -- Companies turn to GitHub to find tech talent

如何參與 Open Source 活動

這樣聽起來還不錯,但以前我都不知道這些資訊,我可以從哪開始參與哩? 這邊列出一些很安全的選擇供參考:

1. 台灣每年固定的大型開源社群活動

2. 愛台灣:讓台灣公開資料更易使用

3. 有組織地協助學生參與開源專案:台灣MozTW社群

4. 如果人在台北,對 Web 或 Mobile 相關技術有興趣,歡迎來 GTUG Taipei 聚聚。

其他我參加過,放心推薦的社群,可以依地域選擇參與

不用害羞,我們可以幫到你,為了將來有更棒的夥伴,為了能在台灣一起做更棒的事。

相關文章

· 4 min read

暑假都快結束了,你的暑假夠充實嗎?參與開源專案,其實離身為學生的你沒那麼遠:(以下拿 Mozilla 跟 g0v 相關專案做範例,當然不止這兩家的開源專案,可以在 github, googlecode 等開源專案聚集地上找到有很多有趣的開源專案,選這兩家的原因是在台灣你一定找得到人問)

一。你不見得要懂英文 Fluent English is not essential criteria

剛打出這點,我自己都覺得很扯,跟軟體扯上邊的事情不懂英文怎麼搞?但我發現這點還真的成立,因為現在身在台灣就有不少參與開源的機會,這是幾年前難以想像的:

二。你不見得要會寫程式 Coding skill is not essential criteria

如果你的英文還行,大型的開源專案需要各種人才的貢獻,諸如協助新使用者(Helping Users)、多使用並協助找錯誤(Quality Assurance)、協助推廣(Spread the word)、將軟體翻譯成中文(Localization)、改善文件(Documentation)等等,抽點時間出來,選擇自己能做的,就可以為其他人帶來幫助,也幫自己累積經驗。這不只是社會服務,你可以自行選擇參與自己愛用的、相信的開源專案。

三。你不見得需要先有想法 Idea is not essential criteria

對於會寫程式的人來說,大型專案會有非常多的現有問題需解決,並會為新人提供一些指引。如 Mozilla 提供了「what can i do」網頁,讓具備各種不同技能的開發者可以更快地參與能貢獻的專案。

  • what can i do http://www.whatcanidoformozilla.org/ (右上角可以切換語言) 例如熟悉 JavaScript 的開發者,可以參與 Firefox OS 使用者界面
  • Gaia 專案、Mozilla 網站開發、Firefox 界面等。

 

熟悉 Java/Android,可以參與 Firefox for Android 版的開發等等。

有自己的想法想實做當然很好,但在還沒找到之前,不妨先參與看看中大型的專案,查看文件、瞭解文化、學習程式風格、開發流程、與其它開發者互動等學校裡沒教的事,絕對會是很難忘的暑期經驗。