KKV Programming Contest 2016

Nov 13 2016

kkbox

2016/11/11, 有一群愛台灣的人進電影院看李安導演的比利‧林恩的中場戰事 Billy Lynn’s Long Halftime Walk 。 有更多人受到商人的鼓吹與店家的特惠活動,在當天貢獻了不少商業行為,買了不少東西,活絡了市場。 然後有一群來自 KKBOX 子集團 – KKV (KKStream & KKTV) 的人,窩在台北的一個角落, 他們有的是在寫程式 PK;有的下注手指彩卷。 至於喝 Orion 啤酒、聽台灣的故事,聆聽現場的演奏,則是每個人共同享受這個下午時光的方式。 是的,我要記錄的就是我們這一群人下午的一個小故事…

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

緣起

KKStream 與 KKTV 在今年的 3 月正式宣佈成立,以 KKBOX 集團子公司的形式問世。 是個好理由,可以來做點什麼不一樣的,平衡一下每天工作之餘的左右腦, 順道把大家帶離開辦公室(這才是重點)。 於是,我說,我們來辦個程式設計比賽吧。 KKV Programming Contest 2016!

上半年就提出要來個程式設計比賽,然後一路發懶,拖到下半年, 驚覺到再不捲起袖子來執行,就要跳票了! 趕緊號召人組成籌備組, 相較於 PyCon Taiwan 的籌備,我們運氣比較好, 彈指間就處理好了金援、場地、攝影、娛樂,以及最重要的人手。

不好意思 其實我想押自己 😆

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

Steve : 撒💰囉

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

接下來的一個難題,是要怎麼讓整個活動成功。 整個活動叫 KKV Programming Contest 2016 (#kkvcodecontent), 活動報名頁有兩種組別,分別是競賽組以及歡樂組。 競賽組負責程式設計比賽以及吃喝玩樂; 歡樂組參與手指彩卷(感謝 Vicky)以及吃喝玩樂。

我們成功的偷拐搶騙,組了 18 隊競賽組, 一組至多兩人,但想要獨挑大梁的也可以一人參賽。

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

我賭 ____ (咦?

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

目標

整個活動的目的很簡單,就是:

  • 離開辦公室。
  • 程式設計比賽。
  • 非競賽組的人也可以同樂。
  • 愈刺激愈好,愈好玩愈好。
  • 替接下來的 KKV Hackathon 來個暖場。

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

嚴肅點說的話,就是想把我學生時代的 ACM ICPC 的感覺,帶進我們的團隊。 ACM ICPC 是大學時期,有幸跟著同學一起參與的一個年度活動。 五個小時,八個題目,一台電腦,一組四個人,同時只能三位進場, 旁邊有小點心,每完成一題就有一顆氣球,可以一路從區域賽比到世界總冠軍賽, 題目都很難,不乏數學,資料結構,演算法比重很高的題目,而且對程式的執行效率非常要求。

ACM ICPC 的活動,是個非常特殊的一個過程。 雖然可以同時有三位團員進場,但是只有一台電腦可以用,而且題目多達八題, 難度是那種你五個小時內解不完的程度,挑戰性十足,不是目前網路上的面試考題所可以比擬的。

於是你為了在這種限制下勝出,就會發展出不同的團隊合作方式, 其中像是 paper coding, pair programming, printed implementation for algorithms, cooperation of different fields of questions, … 就現在軟體產業來看,是會覺得非常詭異的一種比賽的。 它一方面強調考題的困難度,而且情境是要求你自己從無到有刻出來,沒有什麼 library 可以用。 另一方面,它又只給你一台電腦,讓你的隊友想幫你都很困難,隊友甚至無法幫你 google 或是上 stackoverflow!? 事實上,在那個時代,stackoverflow 根本還沒有出現! 聰明如你,一定會覺得辦這種程式比賽要幹麻,一點用處都沒有,還不如辦個 hackathon 比較有意義。

但如果我換個方式說明,你可能就不會這麼想了。 大家都知道 Google 是一家非常優秀的公司對吧? 雖然有 Facebook, Amazon, Apple, Microsoft, Twitter, Netflix 等這些一樣非常厲害的公司, 但是一但聊到「比較硬派的軟體公司」或是「基礎技術比較深厚的公司」時, 大部分人應該會覺得還是 Google 拔得頭籌的吧? 那你知道有個叫 Google Code Jam 的活動嗎?!

Google Code Jam is an international programming competition hosted and administered by Google. The competition began in 2003 as a means to identify top engineering talent for potential employment at Google. The competition consists of a set of algorithmic problems which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions.

In 2008, over 11,000 people from more than 128 countries competed for prize money totaling over $80,000, including a top prize of $10,000.

wikipedia

KKV 並不是要這麼不務實,喊著要朝向 Google 為目標發展,但實際上卻只做著技術整合的公司。 相反的,KKV 更像是在朝向商業成功的同時,持續花力氣在某些領域深耕, 同時以各種形式來提醒自己,我們是一群要求在技術上有不同觀點與堅持的公司。 某種程度上,是傳承著 KKBOX 這家以「技術著手,產品著眼」的公司文化的一群人。

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

競賽規則

  • 會一次收到三封 codility 的邀請函(題組)。點開聯結,就差不多開始了。
  • 只能有一台電腦,同時開啟三封信來比賽。
  • 總共有 18 (3組 * 6) 題,不用擔心太快就沒事了。
  • 比賽時間總計 137’(是個質數)。
  • 可以選擇最擅長的程式語言比,但你的英文一定要 Ok。
  • 每題只能 submit 一次,多多善用 test run。
  • 每一題的得分是 0~100,總分 1800,最高分得獎。
  • 每完成 [1, 3, 5, 10, 15, 18] 題,就有一顆氣球!60 分算完成。
  • 拿到所有組的第 [10, 30, 50] 顆氣球的組別,一樣有獎!
  • 不欣賞作弊行為,但是,我們也不阻止互相騷擾的行為 :D

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

不要說我沒努力

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

至於歡樂組規則呢…這點我們就跳過,當作營業祕密吧 :D

發🎈的小女孩

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

場地

感謝後台Backstage Café的協助,在這個舒適的場地,渡過了一個下午。

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

現場演奏

天空下 by 盧芸

另一首安可曲(忘了名字) by 盧芸

沒 Youtube ;p

阿春仔伊阿嬤 by 進錕

228 by 進錕

沒 Youtube ;p

黃昏的故鄉 by 進錕

母親的名叫台灣 by 進錕

沒 Youtube ;p

回顧與反思

我想…我們這樣硬是拿 codility 來作為程式競賽的系統,應該算是及格了。 codility 原本只是 KKBOX 集團拿來做為輔助面試時的一個工具: 主考官出幾題程式題目,應徵者在規定的時間內,上機 live 解答,整個過程都會被錄下來。 它目前有約 15x 個題目,其中 coding 與 algorithm 是比較適合,加起來約有 100 題可以挑選。 這些題目支援的程式語言很多,從 C/C++/Java/JavaScript/Python/PHP 到 Go/Scala/Swift 2&3 都有。

美中不足的,是一個題組只能有 6 題,這也是為什麼我們的比賽規則要求選手要一次開三個題組。 如果以 codility 一個 credit 約台幣 200 元來看, 我們這一次的活動用掉了 18 * 3 * 200 = 10,800 TWD :D

另一個非常不 ok 的,是每一個題目你只能送件一次,這點與 ACM ICPC 很不同 :p 要求參賽者每一題只能送件一次,有點太嚴苛~

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

另一個讓人覺得有點可惜的,是啤酒實在太少了! 有競賽組的同事表示,沒有啤酒他無法專心下來寫 code… 更有表演的進錕自己掏腰包買杯冰啤上台表演的…

A photo posted by KKV Programming Contest 2016 (@kkvcodecontest) on

對了,我有沒有提到,整個活動能完成,全歸功於所有 KKV 成員?!

參考

comments powered by Disqus