Skip to main content

· 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 版的開發等等。

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

· One min read

上週在 Coscup 2013 演講的投影片,介紹為何要參與 Open Source 專案,基本 Firefox OS 架構,和 web 技術人如何運用自己的能力來參與 Gaia 專案開發。

Steps to contribute to firefox os (gaia) 

為這次演講花一個晚上做了一個簡單的 hack demo,在撥打電話時,馬總統會報出正在播的數字。

感謝馬總統跨刀演出。

聲音來自 Open Source 的 Bumbler to speech 專案。

· 3 min read

'repo' is a good tool to manage project with multiple git repositories. Its developed to serve the need to manage Android Open Source Project (AOSP), which counts on bunch of open source projects. Then the 'repo' tool is used for chromium and chromium OS (known as open source version of Chrome browser and Chrome OS). Now Mozilla Boot-to-Gecko (B2G, known as Firefox OS) also adpot the 'repo' tool to manage multiple git repositories.

For a short time of experiment, I find its pretty simple to setup your own 'repo' that can help you manage multiple git repositories. Here is my findings.

To install 'repo' command, you can refer to Installing repo.

Make your own repo

All you have to do is:

1. setup an accessible git repository 2. Put a 'default.xml' file in it 3. Use 'repo init' command to access this  git repository.

Done!

Here is the default.xml sample, there are three main tags:

<div class="highlight">> <span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
> <span class="nt">&lt;manifest&gt;</span>
> <span class="c">&lt;!-- define hosts --&gt;</span>
> <span class="nt">&lt;**remote**</span> <span class="na">name=</span><span class="s">"b2g"</span> <span class="na">fetch=</span><span class="s">"https://github.com/mozilla-b2g/"</span><span class="nt">/&gt;</span>
> <span class="c">&lt;!-- default settings --&gt;</span>
> <span class="nt">&lt;**default**</span> <span class="na">sync-j=</span><span class="s">"4"</span><span class="nt">/&gt;</span> <span class="c"><!-- projects -->**project** remote="b2g" revision="refs/heads/master" name="gaia" path="."</manifest>Look at the 'project' tag. It describes that we'd like to sync the 'gaia' repository's 'master' branch from remote 'b2g' host.

Explaination

<?xml version="1.0" encoding="UTF-8">
<manifest>
...
</manifest>

The 'default.xml' syntax is wrapped by 'manifest' tag. It contains three parts of definition:

Hosts

<remote name="b2g" fetch="https://github.com/mozilla-b2g/"/>

remote' tag is used to define the hosts that we'd like to use in projects. Note that it's not the actual git URL, but where the git hosted on.We can specify the actual git URL in 'project' tag.

Projects

<project 
remote="b2g"
revision="refs/heads/master"
name="gaia"
path="."/>

The file describes that we'll like to sync the 'gaia' repository's 'master' branch from remote 'b2g' host.

The 'revision' path is defined within the original .git folder. To switch to branch like "v1.0.1", we could change  "refs/heads/master" to "refs/heads/v1.0.1".

It's almost the same as we have to do with git command.

By the way, default.xml itself is in a git repository, so you can specify versions by branch or whatever you like.

Defaults <default sync-j="4" />

In default tag we can specify the default values in project tag. ex: revisions, default repositories..., etc. 'sync-j' means with this setting, 'repo' command will download 4 resources at the same time.

The usage

Create a folder, switch in it, and run the following command:

> $ repo init -u https://&lt;your own git URL&gt;.gitThen, fetch the resources with command

> $ repo syncTo fetch a branch, run command
> $ repo init -u https://&lt;your own git URL&gt;.git **-b** &lt;branch&gt;

Read Git and repo cheatsheet for more details about how git and repo tool work together.  

Sample

Here is a working sample that able you to sync Mozilla Gaia repositorie, and automatically put vendor customization folder into its 'distribution/' sub-folder to ease the customization work.

https://github.com/gasolin/gaia-custom-repo

Update at 7/29:

A workable process elaboration in slide format http://gasolin.github.io/gaia-repo/