【實習經驗】玉山證券資訊處實習生

短短一個月的時間學習到爆炸多的知識和技能。

林聖硯 Sheng-yen Lin
Martin’s Blog
7 min readSep 7, 2020

--

前言

在之前「金融科技-機器學習與文字探勘」的課程評價中,有提到每一組都會與某一間金融機構進行金融科技的專案,而其實每件專案表現優異的組別都會得到該金融機構提供的獎品,如現金、實習機會等。最後,我們那組獲得了老師評選佳作,也因為這樣我才有機會到玉山證券的資訊處來實習。
(被同組成員carry還可以拿到一份實習,真的有點太過份。)

總之,七月底結束在某間會計師事務所審計部的實習後。下個禮拜二,我便馬上開始了在玉山證券資訊處的實習,而實習內容便是將專案結果優化並打包成產品讓業務端使用

這段時間我在幹嘛?

先來談談我們的環境(物理)和設備。
因為資訊處的辦公室在整修,我們實習的地點在玉山登峰大樓的五樓會議室內。大家可以直接面對面討論沒有什麼隔閡是我覺得還不錯的一個地方,而且還有白板和大螢幕可以讓我們用來討論。
公司也提供了兩台mac mini讓我們使用,一瞬間晉升為用mac coding的管院潮潮水水感覺真不錯(雖然我們最後都變成用自己的電腦在coding,因為兩台電腦都有一些問題沒辦法好好建置環境和安裝package)。

實習環境

我們目標是要建立一個自動化新聞評分模型,這個模型輸入一則新聞後會輸出這則新聞對股價的影響(強度)。很顯然地,這是一個自然語言處理(NLP)的問題,而在台大與組員進行這個專案時也接觸過很多相關的知識了;但我在這邊學到的絕對不只這些,以下我歸結幾點實習帶給我的收穫。

1. Python上的進步

我們實作了很多NLP的東西,如斷詞、Embedding、Work2Vec、LSTM、BERT等等,也學習了如何調整各種參數。最後還用flask和mentor一起協作了一個展示模型功能的網站,由他負責前端的html和CSS,我們負責後端的資料傳遞。而在最後打包大家function的過程中,我也了解到自己寫的code有多麼笨重。每次看到其他人的寫法都覺得到底是怎麼想到的,怎麼那麼聰明,也覺得自己有很多不足的地方要學習。

但除此之外,其實我想進步最多的部分絕對是「如何讓別人看懂你的code」。在學校和組員共事時,我從來沒想過要訂定coding style或去特別設計function和Class的名稱;但在大公司內這些卻是絕不可漏缺的一環,甚至有特別的系統能檢查push上去的code有沒有符合你們規定的coding style。

2. 專案管理經驗

我們的mentor是資訊處的技術副理,之前在玉山銀行做倉儲管理、資料分析,很熟悉DevOps、系統開發的經驗也很豐富。他常跟我們聊到很多專案開發的經驗和心得,比如敏捷開發等;在他的帶領下我們使用了Microsoft Azure DevOps的專案管理系統進行開發。這同時也是他們內部在執行各個專案時常用的專案管理系統。

Azure DevOps的介面

這是我第一次使用這麼專業的專案管理系統(之前有使用過Trello,但成效不彰),也同時被他強大的功能所驚艷,比如工作流程看板(Board)、迷你github(Repos)等。mentor甚至還手把手地帶我們走過每一個功能,讓我們瞭解每一個功能究竟如何使用或用在何種情境下較為適當;也同時透過上面的Repos的功能瞭解了github的版控機制。

3. 媒合業務單位的需求

另外有一件感觸特別深的事情是在學校開發專案和在公司開發專案給我的感覺完全不同。在學校開發時,我們比較在意我們現在有什麼東西能夠擺到網站上,而較少考慮使用者的想法;但在這一個月的經驗中,我們必須常想說「放在demo網頁上的功能有沒有辦法在任何的商業場景下應用」,如果沒有的話那擺放出來完全沒有任何意義,甚至可能是多餘的。能夠了解業務單位實際的需求並開發對應的工具也是我在這個專案中體會很深刻的事情。

塞翁失馬,焉知非福

五月剛得知被台積電reject的我當時非常很難過,而也因為疫情的關係我去巴黎交換的計畫也被迫取消(原本八月中要飛),我的心情雪上加霜。但值此同時,其實金融科技專案的mentor(也就是帶我們實習的mentor)告知我在八月有一個短期實習的機會;當時我也沒想太多,只覺得大三升大四的暑假非常珍貴,不能白白浪費掉,而會計師事務所的實習(七月)也正好不與這個實習的時段衝突,我便和mentor表達想要實習的意願。

後來想想,如果我真的去了台積電,可能要幫忙處理很多普會的工作,並不一定完全都在做機器學習。但在這裡我幾乎沒有睡覺的時間都在coding或作各種資料分析,說不定在一個月讓我的程式技能提升的幅度比在台積電的兩個月還要多。

心得

一個月的時光飛快,原本以為我們能做出比課程更好的結果,但一轉眼實習就結束了。因為一開始以為已經有做好一些東西了,而在這些基礎上我能夠多設計一些讓人眼花撩亂的酷炫功能,結果根本不是我想的那樣。除了時間因素以外,我們和NLP其實也沒有到很熟,有很多內容都是當下才學習和深入研究,又加上我們想出來的功能也不一定是實務上需要的。在這樣一來一回之間很容易進度原地踏步,而時間其實就耗費掉了。總覺得很多地方都可以再做的更好,如果能夠再延長幾個禮拜,我想一定能學到更多。

另一個我認為可以把時間節省起來的地方就是「一開始就把code想好再開始動手寫」。這是什麼意思呢?並不是說我們一開始沒討論好,而是不夠仔細和全面。其實最後一個禮拜的時間大家都在改各自的code,要把各個東西串起來包成function、Class、再把這些散落的東西結合一個大的py檔;而這件事其實是一件非常浩大的工程,如果之前有更多共同開發的經驗,我想就不會耗費這麼多時間在這上頭,也能開發更多東西。

最後,真的要再次感謝我們的mentor。除了要做完自己份內的工作,還要帶領我們這些經驗不足(幾乎可以說是貧乏)的小毛頭實習生。甚至最後兩個禮拜每天幫我們刻網站的html和CSS到凌晨一點(因為我們對於某些UI/UX不是很滿意,一直改來改去),還要review我們push上去的code,真的很辛苦。也很謝謝副總常常中午請我們吃飯,和我們聊一些職涯規劃和過來人的心路歷程。更要感謝是每天接觸的實習夥伴們,不僅討論和分工都很有效率,而且禮拜六還自(ㄑ一ㄤˊ)願(ㄆㄛˋ)被我拉來一起開會討論(咦)。

與mentor、資訊處副總和實習夥伴們
偷渡一張請假跑來彩排但穿著公司制服的照片(實習的時候我有兩天下午不在,一天跑去考高業,一天跑去校友團的演出前彩排,謝謝我的夥伴們這麼包容我QQ)

--

--