2014 IBM Master the Mainframe World Championship

ibm

Participation

“Is this OOO?"

“This year, we would like to hold a Master the Mainframe World Championship."

The beginning of this story was like a dream — just as I came up with the idea to finish my reflection on the 2009 Master the Mainframe contest, I got a call from IBM Taiwan. They asked me whether I would like to join the first-ever Master the Mainframe World Championship.

“We will invite students around the world who have won Mainframe contests in the past to join this IBM Master the Mainframe World Championship. Participant must still be a student and be willing to complete some introductory challenges remotely and to go to New York City for the final rounds. This is a great opportunity to meet talented people and all expenses will be paid by IBM. Are you willing to participate?"

“Sure."

It had been so many years since my last participation in the 2009 IBM Mainframe contest, so I was rather surprised by the call. Although I was not that keen on travelling, I still felt it would be a good thing to go to see the US. This could make me braver. The opportunity to demonstrate and present my work before everyone would also be a good way to improve myself.

The competition had three stages; and in addition to technical challenges, we had to write three reports and to demonstrate our work in person. The competition started from 3/10 and participant could complete different tasks at his own pace. But we did have specific deadlines for the reports. Preliminary rounds for demonstration were held in the US, and 6 finalists were selected. The final rounds were held on 4/7. All challenge documents can be found on the website.

Story

The technical challenges didn’t take long to complete, so it went pretty smoothly at the beginning of the competition. However, there were some ambiguous instructions. Since I always preferred it to be precise, I had many email conversations with IBM before I finally solved some problems. In this process, I figured out a logical error in the code of the tasks, so IBM changed the instructions to ask participants to fix it.

Meanwhile, I got a lot of support from IBM Taiwan, and we also had several oversea teleconferences, where we could ask technical questions and listen to lectures about the business trends that could help us write the analysis.

When I finally started the implementation of the bank application, I heard that someone asked whether it’s okay to use PHP instead of Liberty for the development and was given the permission. Since I was unfamiliar with Liberty development using Java, I also decided to use Django for the backend application. However, the DB2 driver given only had JDBC support and cannot be used with Django. So I searched for a while for Python drivers, but I had never succeeded in making it work. Finally I realized that a license file was needed to use the driver, so I sent an email to IBM, and they told me they would try to figure out the solution, but Liberty was still recommended.

But I didn’t want to give up. I spent more time searching, and I found that I could use Jython to execute an old version of Django. In this way, I could use JDBC. So I finally started to develop my web application. After some time, IBM released a trial license file for us to use, but the version did not match the software package on the website, so I spent some time to find the correct package. However, even if I solved the license problem, I still got permission problems when I connected to the DB2, and only after I contacted IBM for this did I make it work. So I finally could use the latest Django with Python. I think this might be the biggest challenge that I solved during this competition.

During the development of the application, I learned a lot about jQuery and Bootstrap. It had really been a long time since I was involved in front-end development in the past, and I had never had opportunity to learn these two libraries. I was really surprised by their capability to construct a beautiful interface in such a short time.

Since I only had 6~8 minutes for demonstration, I couldn’t demonstrate any advanced, complicated features even if I wanted to. So what kind of extra features should I make? I wanted to have a creative and easy-to-understand feature, so I finally decided to create a mobile app that could disable and enable a debit card in real-time. With this app, one could enable the card before an online purchase, and disable it immediately afterwards so nobody could make an illegal payment with her information.

Originally the instructions were that the final rounds were mainly about demonstration, and there was no need to do a presentation. But after a rehearsal, I realized that I was unable to state my ideas clearly during the demonstration. If I wanted to make a good impression, I must first do a presentation before the demonstration.

New York

After I finished my slides I soon started my journey to New York. I first arrived in Tokyo, Japan for a transfer, and finally got to New York in the afternoon. After I arrived in Waldorf Astoria, I only had some time to put my luggage. I then had dinner with other participants, and on the early morning next day, we must start our preliminary rounds.

I was a little excited and nervous before the presentation and kept checking my mobile phone and presenter. But after I got on stage, everything seemed to work smoothly and the time passed so fast. The judges seemed to be excited about the mobile app, and I got good feedback from them.

We then visited the zEnterprise plant, had dinner, and went to Times Square. I really felt that the amount of food provided by the restaurants there was so much that I often accidentally ordered too much.

The finalists were announced in the next day, and I was really happy to be selected.

Final Rounds

After some preparation and interviews, the final rounds finally began. I had to stay in one room, and 6 judges would come to different rooms one at a time, so I had to give 6 consecutive presentations. I was really tired after 6 rounds. Other students would go with the judges, so they would also be able to see the work of 6 finalists. The judging style of different judges were very different. Some judges were very strict, and some were very encouraging.

I still remember a judge asked an unexpected question: “How do you think programming can make the world a better place?"

I also gave an unexpected response: “Actually programming can solve many problems. For example, we can even make the government more efficient and more transparent. We can make every modification of the laws easily understandable (using something like a version control system), or visualize budgets of the government." (I don’t really remember exactly what I said, but right, I was paying a tribute to organizations such as Code for America, Code for Tomorrow, and g0v.)

Wining

Maybe it’s because of some news reports in Taiwan, I suddenly received a lot of congratulations on the Facebook. It really made me feel a little overloaded, and it took me several days to reply. The influence of the media could be really big, and I also felt very impressed after I read the reports. Haha, it actually seemed a bit unnatural. When I saw the word “genius", I suddenly recalled the conversation when I was being interviewed at IBM Taiwan before the competition:

An experienced member at IBM said that he felt that one must have the gift to be in the software industry. Not everyone would like to work so hard to study a problem. I said I didn’t really agree with this. I thought hard work and the time spent was more important. Considering the fact that I spent a lot of time on the computer since I was in the elementary school, it should not be surprising even if I did well.

Afterwards, someone said: “I think he didn’t mean you have to be gifted. What he meant was that personality was important." Maybe. But I couldn’t help but start to think that this kind of thinking implied that — “Personality itself is a natural talent. Or to be precise, the capability to work hard is innate." So it could also be interpreted negatively — If you didn’t have the talent to work hard, you couldn’t even try to work hard. To be honest, I didn’t really want to accept this kind of world.

It seemed to be again a deadlock between nature and nurture. Wasn’t there already a answer for this question? The two affected each other, and no single factor was unimportant. Every known and unknown factor worked hand in hand, it’s just that we humans tended to attribute to some simple reasons — just like what I am going to do next:

The Perfect Factors

When I was talking with students from other countries, I mentioned that I had been reading Thinking, Fast and Slow recently. I was unable to explain clearly what the book said, but I was surprised to meet someone who also had read this book. A passage in the book went like this:

A recurrent theme of this book is that luck plays a large role in every story of success; it is almost always easy to identify a small change in the story that would have turned a remarkable achievement into a mediocre outcome. Our story was no exception.

I felt, my story was also the same.

It took too many coincidences and factors to win this prize. Even if one factor had been missing, the result might not have been the same. I felt really lucky and thankful for this.

Everything started when I was a child. I was lucky enough to learn some web design. Because no one in my family was in the computer industry, I spent a lot of time learning by my own. Therefore, I acquired the ability to analyse a system by trial and error and became familiar with searching for solutions. That’s why I was able to solve the difficulties in the competition.

In the junior high school, I was bored by the English grammar courses, so I decided to find a new way to learn English and started to read a lot of books. English gradually became my interest. The long hard work enabled me to read technical documents efficiently and allowed me to write good reports. Moreover, the practical experience I got from Wenzao English Debate Workshops and National Taiwan University English Debate Society sharpened my communication skills. In the 2009 competition, I already felt that English was a great advantage to win. This time I felt this was even more true.

Even if my English was good, it’s still impossible for me to be better than native speakers. But there was another factor which might be even more decisive: the presentation skill itself. I got interested in presentation when I learned the Takahashi method in senior high school. Afterwards, I prepared every presentation thoroughly to sharpen my skills. In the last semester, I happened to take the course Speaking in the Disciplines, and learned some voice techniques. And I got a presenter as the prize of the final presentation on that course. This helped me a lot in the competition.

However, technical skills and presentation alone were far from enough. To write the analysis documents, I still needed background knowledge. I happened to take the course Introduction to Cloud Computing and Big Data last semester, and learned some ideas to help me write the reports.

Even the smart phone that played an important role in the competition was just bought for several days. I had been using my old traditional phone for more than 4 years, but it suddenly broke. That’s why I decided to buy a new one. Without the phone, even if I wanted to make a mobile app, I might not be able to borrow a phone to realize it.

And finally, about the idea to enable and disable the debit card in real-time. This idea actually originated from a feature of the Chunghwa Post debit card. It allowed us to use an integrated circuit card to sign in the webATM, and from the webATM, we could disable online transactions and foreign payments for the card. I really loved this feature, and I always disabled it until I really wanted to make a purchase.

In early January, I came across a post on the Bank_Service board on ptt.cc, and the author asked whether other banks had the same feature, but nobody seemed to know one. So I learned two things: (1) Other people also liked this feature. (2) Almost no banks had this feature.

But using webATM and an integrated circuit card was just too complicated. It didn’t make sense if we want to disable and enable the card frequently. Why not use a mobile app? So this became my final idea.

This feature could potentially save the bank a lot of money. Moreover, it could give a sense of security to people like us, and made us more willing to accept debit cards.

Just like this. Every factor worked together so perfectly. Even if just one had been different a little bit, the result might not have been the same. This itself was incredible.

廣告

2014 IBM 大型主機世界盃心得

ibm

參賽

「請問是 OOO 嗎?」

「今年,我們想辦一個大型主機的世界盃比賽…」

故事的開始彷彿夢般,就在我開始想執筆寫〈2009 IBM 大型主機校園競賽回憶〉的時候,接到了來自 IBM 的電話。詢問我參加第一次大型主機世界盃的意願。

「IBM Master the Mainframe World Championship 將會邀請曾參加過世界各處地區賽並得獎的選手一同參賽。競賽者需為學生身份,並願意在百忙之中先遠距接受挑戰,最後到紐約會師進行決賽。競賽者將可以和來自各國同樣鑽研技術的學生會面,且食宿全程免費。不知你是否有意願參加!」

「好喔。」

距離上次參賽已那麼多年,接到這樣的邀請其實也很意外。為什麼會想參加呢?雖然自己也不是很熱衷旅遊的人,不過總覺得能到美國看看總是件好事,能讓自己的膽量再提昇一些。而能有這樣的機會在大家面前展示自己,一定能成長許多吧。

比賽的內容共含三個關卡、三份文件撰寫和最後的成果展示。比賽從 3/10 正式開始,參賽者遠端按自己的步調慢慢過關,但文件撰寫則有限定的繳交期限。四星期後,4/6 在美國進行準決賽,選出 6 位決賽者,然後在 4/7 進行決賽。遠端競賽的所有文件都公開在網站上,也可參考「比賽內容」段落的簡單節錄。

過程

比賽剛開始其實是相當順利,前面的技術挑戰破的很快。只是有些題目有語意不清的敘述,總是追求精確的我和 IBM 經過許多的信件往來才慢慢解決一些問題。後來還發現了題目中程式碼的邏輯錯誤,IBM 知道以後就在題目中要求大家更正了。

在此同時,也受到台灣 IBM 的熱情支持,讓我可以用中文詢問問題而無語言之憂,其後也受到不少幫助,連沒有合適的筆電可以參賽也幫我處理。而比賽過程裡還有多場越洋的會議,可以提出各種技術問題尋求解答,也有資深的前輩幫我們惡補產業趨勢,好準備撰寫文件。

後來進入銀行程式的實做,聽到有人問說是否可以用 PHP 代替 Liberty 來開發網頁後端獲得了同意。由於我對 Java 配合 Liberty 的開發不太熟悉,我也決定採用 Django 來進行後端實做。只是原本的 DB2 連結元件只有提供 JDBC 而沒有 Django 的版本。於是我在網路上搜尋 Python 的 driver,但一直建置不成功,花了不少時間研究才發現需要授權檔。趕緊寄信通知 IBM,他們說會嘗試解決,但建議還是使用 Liberty。

但我怎麼會輕易放棄呢?後來經過一番搜尋,發現可以用 Jython 執行舊版的 Django,如此一來,就可以使用 JDBC,於是我就在這樣的情況下開始製作網站了。製作到了一半授權檔才終於釋出給大家,只是授權的版本跟網站上的最新版 driver 不合,又花了不少時間才找到正確版本檔案的下載點。好不容易通過授權,連上 DB2 還是出現權限問題,最後跟 IBM 聯絡後才終於解決。終於可以使用最新版的 Django 了。對我而言,這個相容性問題大概就是比賽中遇到的最大難題吧。

寫著寫著 App 覺得學到最多的其實是 jQuery 和 Bootstrap 的使用。太久沒有接觸網頁前端了,對這兩個曾有數面之緣的程式庫一直沒有機會深究。這次的開發也對他們能夠快速做好漂亮界面的能力感到十分驚訝。

只有短短的 6~8 分鐘,就算加上什麼複雜的額外功能也無法順利展示。究竟要加上什麼功能呢?我希望能找到一個容易理解又有創意的功能,最後決定用手機來實做 Visa 金融卡即時停用與啟用的功能。只要有了這個 App,就可以在網路刷卡前啟用卡片,刷卡後立即停用,即使別人擁有你的資料也很難盜刷了。

原本 IBM 的提示是最後的展示以 demo 為主,而沒有簡報的要求。然而實際預演過一次後我馬上發現 demo 時根本無法清楚表達自己的想法。如果要在短時間內達到好印象,一定得先簡報再 demo 才行。

紐約

很快的做好投影片,就啟程紐約了。先是經過日本東京轉機,到了紐約大約是下午。很快坐上接駁車,就到了 Waldorf Astoria 旅館。整理一下行囊並簽到後就和大家一起去聚餐,然後隔天一早馬上就是準決賽。

比賽前有點興奮也有點緊張,仔細檢查了簡報器和手機確定一切功能完好。上台的時候一切順利,感覺時間一下就過了。評審好像都覺得手機 App 的主意不錯,還有人覺得應該申請專利呢。

後來先去參觀工廠,再去聚餐和逛逛時報廣場。總覺得紐約的餐廳份量都好多,一不小心就會點到過量的食物呢。一直到了隔天才終於公佈進入決賽的選手,可以晉級真的很開心。

經過最後的準備和一些採訪,終於開始決賽了。決賽是自己待在一間房間,六位評審輪流到各房間評,所以要連續講六次啊,講到最後都有點累了。有的評審嚴格拷問,也有評審很親切的鼓勵我,感覺風格很不一樣。

還記得有個評審突然問了意料外的問題:「你覺得程式設計可以怎麼樣讓世界變得更好呢?」

我也給了自己都意外的回答:「其實程式設計可以解決很多問題,比如說甚至可以改進政府效能,或透過開放資訊的方式提昇公民參與。像是把所有修法紀錄用簡明的方式呈現,或是政府預算視覺化等等。」(其實我忘記確切的說詞了,不過沒錯,我其實是在向類似 Code for America, Code for Tomorrow, g0v 等組織致意。)

得獎

好像是因為有新聞的報導,臉書上突然多了很多道賀的訊息,讓我一時有資訊過載的焦慮。花了數天時間才一一回覆。想起來媒體的影響力真的很大。後來自己看了報導也覺得彷彿很厲害一般,哈哈,真有點不真實。看到「天才」這個詞,倒讓我想起當初比賽前在 IBM 接受採訪時的小對談:

記得 IBM 的前輩說,他覺得從事軟體業是需要天賦的,會願意這樣努力鑽研,不是每個人都辦得到。那時我說,我其實是反對這種看法的,我覺得努力和付出的心力比較重要,假設考慮到我從國小就花了無數時間研究,那麼現在看似表現不錯不也是很正常的嗎?

後來後來,有人說:「我想其實他的意思不是說天賦,而是說個性很重要吧?」嗯,或許是的。不過我總覺得這種說法背後隱藏著更大的假設。那就是,個性本身也是一種天賦。或者更進一步的說,努力也是一種天賦、一種天才。而這種說法似乎可以悲觀的解釋成,如果你沒有努力的天賦的話,那根本連努力都辦不到。老實說,我還沒有準備好接受這樣的世界。

這樣思考下去彷彿又會陷入先天後天的無限循環,這個問題不是本來就有答案了嗎?其實兩者是互相交互影響的。沒有一個要素不重要,所有已知或未知的條件環環相扣。只是人類有時總喜歡把事情歸因到些明顯的理由,就像我接下來要做的一樣:

對的要素

和其他國家同學聊天時提到,最近開始看《Thinking, Fast and Slow》這本書,雖然不太解釋得出裡頭在寫什麼,不過很巧的遇到也看過這本書的人。想到裡頭有句話是這樣的:

A recurrent theme of this book is that luck plays a large role in every story of success; it is almost always easy to identify a small change in the story that would have turned a remarkable achievement into a mediocre outcome. Our story was no exception.

我覺得,我的故事也一樣。

能夠得獎,實在是有太多的巧合與太多的要素匯集一地,如果少了任何一塊,就不會是這個結果了。對於此,我只感到十分幸運與感激。

一切都從小開始,幸運的接觸了網頁設計。由於家裡也沒有人從事相關行業,所以花了很多時間自己探索,也是這樣才養成了鑽研系統和搜尋解答的能力,所以才能順利解決比賽中的難關。

到了國中,為了克服枯燥的英文文法課,我另尋途徑,反而透過閱讀打開一片天。英文慢慢變成我的興趣,長年的累積讓我順利閱讀與撰寫文件。後來又經過文藻英語辯論工作坊和台大英辯社的洗禮,讓表達能力加強了不少。2009 年時就覺得英文和搜尋能力是贏得比賽的重要優勢,在這次國際性的世界盃更有同感。

但英文能力再怎麼好,也很難贏過母語的學生。所以,還有一個要素,就是簡報能力本身。感謝高中時接觸了「高橋流簡報法」,讓我嚐到甜頭。後來也因此用心鑽研,使得報告本身也變成了我的興趣。前學期還恰好上了「學術論文口頭報告」這堂課,學到許多口語技巧,剛好在比賽中派上用場。

但只有技術和簡報是遠遠不夠的。要能撰寫分析文件,還需要背景知識。恰好在前個學期上過「雲端運算概論」,學到不少產業趨勢和巨量資料的話題,讓我能源引許多知識在撰寫的文件當中。

而就連在比賽中扮演重要角色的智慧型手機其實也是在前不久買的。自己一直是用傳統的手機,但前陣子突然無法接聽電話了,這才下定決心買了智慧機。如果不是這樣,恐怕空有想法,也借不到手機實現吧。

最後最後,是即時啟用和停用 Visa 金融卡的點子,這點子的原型其實是來自郵局金融卡可以透過智慧卡進入網路 ATM,然後停用非過卡交易的功能。自己對這個功能情有獨鍾,平常總是將其停用,只有刷卡前才啟用。

在一月初,我在 ptt Bank_Service 版上看到有人詢問是否有其他家銀行有這個功能,結果似乎沒有找到。這讓我知道兩件事: (1) 有人跟我一樣對這個功能有需求 (2) 幾乎沒有銀行有這個功能。

只是用網路 ATM 實在太麻煩了。為什麼不用手機 app 隨時隨地停用啟用呢?這就是我最後完成的想法了。

這個功能除了可能有實質的安全保護外,或許更重要的是給像我們一樣的人有心理上的安全感,進而更容易接受 Visa 卡吧。

就這樣,每個要素完美的彼此扣合,匯聚於此。如果只是差了一點,也不會有此結果吧。

附錄:比賽內容

第一階段

由於這是個時程緊湊的比賽,只看前二階段的話,比起記憶中 2009 的大型主機競賽簡單許多。第一階段是大型主機的基本操作:包含 ISPF 界面、執行 JCL、編譯執行和修改 COBOL 程式、檢視系統 log、檢視 ZVM 系統資訊、用 SPUFI 以及 COBOL 程式存取 DB2 等等。

第二階段

第二階段先是執行並操作用 COBOL 寫成的簡單銀行程式,包含 ATM、後端界面等等。緊接著利用 z/OS Unix Services 來執行 Java 版的銀行程式,並進行操作。最後則是把這個銀行程式移植到 Linux on System z 上面。

第三階段

第三階段是要基於第二階段的文字版銀行程式,發展出網頁版的銀行程式。主要是利用 Eclipse 配合 Liberty,前端則用 jQuery 協助設計。在進到準決賽前僅根據螢幕截圖給分。

文件撰寫

首先分別以一頁為限制,撰寫兩份分析文件:(1) 什麼是 System of Record 和 System of Engagement (SOE)?而 SOE 的發展又會對 IBM Mainframe 造成什麼影響呢? (2) 當設計真正商業應用的銀行程式時,有哪些 middleware 需要被使用呢?

最後則是以「參加大型主機比賽,是否改變你對應用在大型企業的 IT 技術的看法?」為題,撰寫一頁的 Executive Summary。

成果展示

參賽者將會在評審面前進行約 10-12 分鐘的成果展示,其中包含 6-8 分鐘的銀行程式展示:

  • 餘額查詢
  • 存錢
  • 領錢
  • 交易紀錄
  • 停用帳號並觀察此時查詢餘額會發生什麼事
  • 其他額外功能

最後則是 2 分鐘的 IT 產業問題,及兩分鐘的 Executive Summary 及整體提問。

2009 IBM 大型主機校園競賽回憶

「你的筆電上怎麼有寫一些字啊?這是你自己用的嗎?」

「喔,不是啦,這是以前參加一個比賽的獎品,所以才有這些字。」

「是喔,是比什麼的呢?」

「這個嘛…」

時間過得真快,轉眼間這小筆電已陪了我四年。記得以前上課或到圖書館時偶爾會帶著它,返鄉時也是因為有他才能處理一些事情。如果少了它,好像很多事情都會不太一樣呢。

總是有人問起比賽的內容,但總是很難想起當初發生的許多事。回頭翻開網誌的草稿,發現其實裡頭躺了一篇寫到一半的心得文。除了心得,還寫了一些年少的煩惱與挫折。「所以這是當初沒有寫完的原因嗎?」我不禁莞爾。於是決定繼續把這篇心得完成,仔細回想這經歷的同時,彷彿也在回顧自己的成長與改變。

碰巧的是,就在我決定重新執筆的那幾天,我突然接到了一通電話。

「請問是 OOO 嗎?」

「對。」

「你好,我是 IBM 的 OOO,記得你曾參加 IBM 大型主機校園競賽…嗎?」

參賽

一切都得從大一開始說起,就是那時參加了「IBM 大型主機校園競賽」。這個經歷對我的未來造成了不少影響,當年不太成熟的我實在料想不到吧。記得最早,是在交大 BBS – bs2 上的 NCTU 看板發現了這個比賽的訊息,因為看到只要過了第二階段就能拿到一個隨身硬碟,想說或許有機會得獎,於是就參加了比賽。

記得那時的我剛上大學,還正在摸索如何分配突然多出的自主時間,使用了每週計畫表來規劃何時要做什麼事,並紀錄了實際完成的情況。由於大型主機比賽是透過線上闖關,所以我也把投入比賽的時間切成一小塊一小塊,散布在每週當中,成了我的例行事項。

比賽的內容共含三個關卡,每個階段的文件會公開放置在網站上。內容大略是:

第一階段

第一階段的目的是要熟悉大型主機的環境,文件上說只要一小時就能完成了。要透過文件的說明,利用 3270 模擬器連上遠端的 z/OS 主機然後建立一些資料,並執行程式。我們也拿到了一個填字遊戲,在三個階段分別會找到許多線索,就能慢慢將其填完。

第二階段

從第二階段開始,比賽的說明文件就不會記載達成任務的詳細步驟,只會有簡單的說明。挑戰者必須從許多參考用的電子書和資料庫中尋找教學,並仔細思考,才能完成任務。這階段的任務包含了利用 JCL 執行 REXX 程式、為 JCL 程式除錯、建立個人化的 ISPF 控制台設定、EBCDIC 編碼轉換、Unix 操作、撰寫數個 REXX 程式等等。

第三階段

第三階段有四個任務。首先是 DB2 的操作,要在 z/OS 環境中,透過 DB2 SPUFI 輸入 SQL 指令來建立指定的資料庫,或從資料庫中挖出指定的資料。還有透過 JCL 來執行較大量的 SQL 指令,將資料倒入資料庫等等。第二個任務,則是要利用 Interactive Problem Control System 來分析 IBM CICS Transaction Server Product 程式當掉之後的 dump 檔案,分析發生了什麼問題。第三個任務則是要操作 Websphere MQ 和 CICS,執行一些任務,並利用殘缺的程式碼完成一個伺服器端和一個客戶端的程式。第四個任務則是建立一個網站來呈現所有找到的填字遊戲線索。

得獎

老實說得了獎時還真覺得有點意外。一開始連大型主機是什麼都還不太明白,在過程中透過文件慢慢學習,竟也能一路過關斬將。能進入決賽是一開始萬萬想不到的。

仔細想想,因為大家對大型主機的了解並不深。所以獲勝的關鍵可能其實是:(1) 從一堆參考資料中找到有用資訊的搜尋能力 (2) 英文閱讀能力 (3) 一般性的資訊科技敏感度。這些能力以前為了學習 Linux 而在網路上大海撈針時真的有不少機會訓練。但除此之外,我恰好有學過一點點 SQL 可能也有不少幫助。

記得最後得建立一個網站來呈現填字遊戲,雖然文件上寫只要正確就好,美觀等等不影響評分。但我還是很堅持的做了點視覺設計,由於利用到當年還不被廣泛支援的 CSS 語法,所以還做了一些跨瀏覽器的調整呢。

撰寫此文時重新回去看文件,發現競賽規則上其實寫著「如果有多個人完成了填字遊戲,則呈現最好的網頁會得到額外的分數」,跟當時記得的美觀不影響評分似乎有所出入。由於中途確實曾修改過規則,不知是否就是那時新增的規定沒看到呢?或許,這變成了我最後領先的原因?

ibmmf2009當年的填字遊戲網頁

迷惘

或許真的太年輕,對很多事情的態度都太不成熟。

到了頒獎典禮只見大家盛裝打扮而感到有些格格不入、雖然有和大家聚餐的社交機會但總覺難以把握機會、和訪問者對談時實在也不知如何對應——當時還因為這些瑣事而有些迷惘。仔細想想那還真的是那時候的我很顯著的特徵之一:太在乎他人的想法。事隔多年,很多事情對現在的我來說好像也沒有那麼重要了。

那時害羞的我真的很低調。幾乎只跟一些親近的人提到了得獎的訊息,然後悄悄北上前往頒獎典禮,回來以後迅速的將獎品藏起,然後過著相同的生活。但後來接受了學校的採訪,照片放上了交大首頁,一切的故事也變得紙包不住火(?)。最多的反應倒不是從系上而來,而是在社團裡。彷彿一下子變成名人似的。非常認真的覺得一切有點不真實。

但到了下學期後,很快進入大學時代變化最大的時期。這些想法慢慢也被拋到腦後了。

影響

參加這個比賽,最直接的影響應該是找到了實作的樂趣。猶記得放假後在寢室認真寫程式的畫面,當時的室友似乎不太能理解呢。也是這樣的熱情,讓「自由行列」終於被實作了出來(見:〈從我的故事開始說起,自由行列實驗品: ibus-faft〉)。至今仍是我開發的比較完整的開放原始碼作品。

另一個特別的影響應該是被網羅到 117 實驗室幫忙開發手機專案,初次接觸了研究生世界,還認識了當時非常出名的學姐。後來我也繼續待在這裡進行專題的研究,一直到大四還常跟學長姊 meeting 呢。

因為待在實驗室開發手機軟體所以有機會把玩智慧型手機,這對我而言還算新鮮的經驗。若非如此恐怕我會對此浪潮一無所知。雖然離開實驗室後就沒有繼續接觸,不過等之後採購智慧型手機後應該還是會研究手機程式開發吧。

想起來實驗室的生活圈記憶還真算是佔了大學生活的一個重要部份,在這裡遇見了對程式有熱情又優秀的學生們。如果不是因為她們的背影,我對交大生活的想法一定會有很大不同。

從過去到未來

翻找了當時的往來信件,好多不復記憶的事真令人莞爾。就在這時候,原本以為會成為過往回憶的絲絲線線突然又開始交會。

「請問是 OOO 嗎?」

「今年,我們想辦一個大型主機的世界盃比賽…」

於是,接下來就是〈IBM 大型主機世界盃〉的故事了。

2013 在台北,IBM 軟體工程實習生紀錄

work-731198_640

初心者

那恰好是我心態有大幅轉變的時刻,想更珍惜所有,也想更堅定向前。在我掙扎前進的時候,剛好看到 IBM 的實習機會,覺得是個能夠打破舊模式,邁向新生活的絕佳機會,於是就努力寫了履歷投出。說起來好像每次申請實習都是一時之間的決定,人生的際遇實在是難以預測。面試其實比較像聊天,並不會太困難。但因為沒有符合某些預期,所以其實沒想到會錄取。最後發現還是有機會來到 IBM 時,真的覺得很幸運。

第二次實習的感受很不一樣,但真正的重點倒不是環境的差別,而是我自己,我已經不一樣了。回想起來,這些年我真的成長了好多,當年的迷惘,在這個暑假終於釐清了。接下來,真的得全力邁進了呢。

IBM

IBM 感覺是很嚴肅的公司,常常會看到許多穿著正裝的人,但工程師的標準不太一樣,除了一些正式場合外,平常還是不會太嚴肅。很開心能有彈性協調工作時間的機會,早起的我開始過著每天早上 8 點上班,下午 5 點下班的生活。

工程師的生活還是那麼熟悉,熟悉的寫程式,熟悉的解問題。雖然盯著螢幕還是很累,但好像慢慢找到平衡的方法。解決每個問題時總有小小的成就感,深思優美的答案時總是讓人愉快。覺得可以這樣工作,應該算是幸運的吧。

或許因為坐在開放的空間,所以比較有機會和其他的員工聊聊,甚至還曾一起去參加 Taipei.py 呢。而這兩個月真的也受到好多人的照顧。還記得 meeting 後的聊天,總能敞開心胸的談、記得去問 Bruce 問題時常聞到的咖啡香、還有偶爾遇見的 Jenny 學姐、每次經過櫃台時的招呼與閒聊。

謝謝你們,這段時間真的很愉快。

Blue Gene

IBM 的實習有個特別的地方,就是有很多專為實習生設計的活動與作業,所以有很多機會和其他實習生互動,真的常會和其他實習生一起吃飯聊天,同部門的更會互相詢問與解決工作上的難題呢。

在最後的最後,我們一起拍了期末影片。總覺得每組的創意都好精彩,後製更是十分專業。從影片中也可以看出某些部門真的很累,相較起來,我覺得我的工作量恰到好處,算是很幸運吧。

於是我們向前

好像真的和南港很有緣,又一次重回此地。而來到熟悉的店,老闆娘竟然還認的出我來。然後又增加了數個認得出我的店家(哈哈)。兩個月結束,我又離開。好多的人,將來是否會再見面呢。

剛結束實習,又要開始迎接好多新的挑戰。漸漸有新的計畫在心中暗暗形成,很興奮,我真的更堅定與更積極的向前邁進了。而那,又是另一個故事了。