大學畢業後,成為前端工程師的兩週年回顧(ft. Tiktok前端工程師)

布魯斯前端
21 min readMar 14, 2021

--

我好喜歡大海

前言

這標題大家或許會很熟悉,這陣子很愛讀這篇Huli大大寫的成為前端工程師的四週年回顧文章,加上兩年的時間過得很快也接近畢業季,趁現在還有大學時期的記憶,想要來紀錄一下自己大學畢業前跟畢業後工作上的經驗與心路歷程,寫這篇文章致敬一下。

從大學畢業到現在,也當了大概兩年多的前端工程師,回頭看看那時大二剛接觸程式的自己,也想不到會經歷這麼多事情。

這篇文章真的很長很長,大家有空有閒,當個故事看看就好。

開始前,快來加入布魯斯前端LINE群!

開始正文前,想先分享一下我的LINE問答群!

職涯初期,如果有個管道可以隨心所欲地發問,甚至認識引路人,肯定可以少走很多彎路。

所以我創了個LINE的交流群,除了技術討論,也想讓剛入行前端的新手有管道可以免費詢問問題,如果我有看見我都會盡力回答的!

另外有老手想加入也歡迎一起進來討論交流技術

目前有700多人,快點我加入吧!:https://reurl.cc/V3WjGZ

讓我們開始吧!

來點雞湯

開始說故事前,分享個我覺得影響自己很深遠的一段話。

You can’t connect the dots looking forward; you can only connect them looking backwards.
So you have to trust that the dots will somehow connect in your future.
You have to trust in something, your gut, destiny, life, karma, whatever.
Because believing that the dots will connect down the road will give you the confidence to follow your heart.
Even when it leads you off the well worn path, and that will make all the difference.

對於未來,你不可能未卜先知,
你只有在回顧時才會明白這一切是如何串起來的。
所以你必須相信你現在所體會的在將來多少會聯繫在一塊。
你必須相信某些東西,你的直覺也好,命運也好,隨便都可以。
相信這些點會連在一起,給你信心並追逐你的心。
即使他引導到疲憊的道路,他也會讓事情有所不同。

這段話是來自於”Stay Hungry. Stay Foolish.” 賈伯斯在史丹佛大學的著名演講的小片段。

大二的時候,無意間在電腦教室看到這影片,不知道為何對這段話特別有感觸,就這樣一直記在腦海裡。

那時候對自己想做什麼事情完全不清楚,更別提走上前端這條路了。

每個人都無法預見自己的未來,對未來感到迷惘的時候,最好的辦法就是跟隨自己的直覺,在每個當下選擇看起來正確的「每一步」,之後在未來的某個時刻,回頭看看這一切,才能明白自己完成了些什麼事情。

陷入迷惘 大一大二翹課王

升大學前,至少還有考試這個目標讓自己往前走,但升大學後,沒有了升學考,我跟大多數人一樣,開始迷茫了。

這時候的一切突然都變很自由。

自由讓我們可以隨便嘗試自己想做的事情,但一定要學會克服惰性。

從小到大我們的教育只灌輸給我們「專心於考試就好、學業第一」的概念。

到了大學之後,失去了「升學考」的這個目標,因為沒有升學壓力,感覺去上所有的課都好像都沒有意義,所以我開始瘋狂翹課,就連當時跟現在自己職業相關的JAVA、C#等課程也不例外。

自由了,但頓時間也不知道自己該做些什麼才好。

每天的生活就是睡過頭翹課、打遊戲、睡過頭翹課…無限輪迴,這種情況誇張到什麼程度呢?大概就是「期中考期末考也能睡過頭」的概念吧。

就這樣,我被當掉了不少課,甚至連出席率都快達到被二一的水平,那時被叫到班導室聊天根本是家常便飯的事情。

我總覺得自己好像該做些什麼,但我實在不知道自己想做什麼。

直到我遇到了接下來的這件事情,讓我好好重新認識自己,才漸漸的明白自己想要的到底是什麼。

年輕只有一次

翹課翹成這樣,被通知家長也是理所當然事情。

我老爸知道這事情後,跟我預想中的不太一樣,他沒有那麼氣憤,反而語重心長的跟我說了一些話,但那些話我基本已忘光XD。

不過!我對一句話真的特別印象深刻:

「年輕只有一次」

不知道這句話哪裡來的魔力,深深烙印在我腦海裡,也是因為這句話讓我稍微有點振作了起來。

把班導搞瘋的我壞壞

在那之後,我真正的開始思考自己想做的事情到底是什麼,又或者該嘗試些什麼?

想來想去,既然我這麼喜歡跟電腦相處,不如我來嘗試看看學習大一大二被我翹掉的程式課?

沒想到那次的嘗試,讓自己走了這麼遠。

開始了Android開發之旅

那時我覺得我惰性蠻嚴重的,所以我用了最直接的方法,找個補習班讓老師盯我,開始惡補在學校錯過的時光。

因為我覺得開發APP很潮,所以一開始我學的是JAVA,後面順便學了Android開發,最後發現自己其實蠻喜歡寫程式做出東西的成就感。

所以我決定好好繼續下去,看看自己到底能走得多遠。

對初學者來說,該如何選擇一個語言下手?我想最簡單的方式,就是問問自己「想做出什麼東西?」,我當下選擇了Android App,所以我學了JAVA。

雖然我最後踏上了前端這條路,但因為已經學會了JAVA,我也能用最少的時間去適應JS這門語言。

所以對於初學,一開始選什麼語言真的不是那麼重要,這是我後來的體悟。

話說這時候Android 5才剛出的樣子?

那時候也剛好要升大三,我們系在大三時分了兩種學程,一種是程式類別,一種是管理類別。

這次我好像找到了去學校上課的「意義」,收起了翹課的習慣,把有興趣的程式類別的課全部選好選滿,開始好好的去學校上課。

嘗試,就是付出行動後,才會知道自己適不適合

這時我也才明白,我好像已經開始在遵循自己的想法,嘗試自己想做的事情。

實習人生,與前端的初次見面,Arkkers

大三的那年暑假前,我找了一間高雄軟體園區那邊的公司Arkkers實習,打算上職場挑戰跟學習更多關於開發Android的東西。

只是沒想到進去公司後主要是負責前端的開發,就這樣誤打誤撞的踏入前端的領域。

人生就是這麼的奇妙,計劃趕不上變化。

那時我對Web的概念還很模糊,前後端分不清楚、JS不太熟、style都直接寫在HTML上完全沒有分成CSS檔的概念等等。

因為這間公司那時主要是靠接案賺錢,當時公司的人手不足,副總因為相信我所以讓我參與並協助當時負責的工程師一個用Angular2開發的專案,雖然在學校有個很潮的老師教過Angular2,但接到這個任務時我還是很慌。

每天下班回家就是硬著頭皮熬夜盡量搞懂自己不懂的地方,也還好當時負責的工程師很有耐心,願意手把手的指導我。

就這樣,因為這個專案我進步了很多很多,不管是對JS這門語言,CSS的處理,Webpack的處理,API本身的串接等,都有了初步認識,漸漸上手了前端開發,最後順利的結案。

這時候暑假結束了,原本實習本該就在這結束。

但我開始對前端產生興趣了,所以還想繼續待在公司,所以我提出了我想續留的想法。

後來公司也願意讓我一個禮拜兩三天沒課的時間回去高雄上班,剩下時間有空就遠端工作。

很亂很亂的桌子…

過了一段時間後,公司請來了一個很厲害的主管,當時用的技術棧是PHP,所以順勢學了一點關於後端知識,不管是CRUD還是畫面的切版都進步了很多。

這時公司也慢慢步上軌道,想開發屬於自己的產品。因為當時公司只有我跟主管兩個工程師,主管需要負責自家產品,所以後來接的案子大多都是分配到我這開發。

這些案子幾乎都是幫忙客戶用Vue.js+PHP+MYSQL開發官方網站然後配上個後台管理系統,或者用IONIC寫寫Hybrid App,滿足客戶的IOS + Android App的需求。

因為這些機會,日常開發技術的學習、跟設計師交流、跟PM討論,都讓我培養了獨立開發的能力,也累積了不少「自己開發」的作品,整體來說是個很棒的經驗。

就這樣到了升上了大四,這時候我學會了「做出東西」,但好像還是少了點什麼,總覺得在這裡的成長好像停滯了,思考了一段時間後決定畢業後挑戰看看大公司,想讓自己站在巨人的肩膀上學習更多的東西。

畢業前夕,挑戰大魔王,Google

大四的時候,除了工作本身,大一大二的補修債也還的差不多了,上的課越來越少,時間也越來越多,我開始思考起了自己畢業後該怎麼辦。

那時候對我來說有兩條路:

第一條就是什麼都不做,畢業後繼續在原公司轉正,這樣可以輕鬆一點。

第二條路就是在畢業前挑戰自己想試試看的大公司。

而我最後選擇了後者。

我的想法就是那種很典型的不知天高地厚,既然要挑戰,那我就要挑戰最厲害的那種公司。

所以我把目光放向了Google

我的同學老師當時知道我的目標是想挑戰Google,雖然有人支持我,但更多的都是抱著懷疑的態度,甚至還有人勸我不要浪費時間。

我覺得我沒有比別人差,何必還沒開始做就先否定了自己呢?反正不投白不投,沒投才是什麼機會都沒有。

別去在意別人的想法,因為只有你自己知道自己在幹嘛

最後,我得到了面試的邀約。

收到信的當下真的很激動!

現在回頭看看那自己的條件,私立大學的學歷、大學整體不怎麼樣的成績,能得到Google的面試邀約,我想除了有點運氣成份在,應該也是因為我有實習經驗+作品,選修程式課的成績也不差,然後大三大四時也積極參加了校內的創業競賽跟高雄科大舉辦的黑客松都有得獎等等。

但我認為最重要的是「我願意給自己機會,相信我自己」。

所以我也算是用了自身去證明,就算沒有好的學歷,一樣也能得到像Google這種巨頭的面試機會!

但後來我面試失敗了。

雖然當時我有「做出東西」的能力,但我卻忽略了一件很重要的事情:

沒有扎實的「基礎能力」是沒辦法解決問題的。

那時我資料結構的基礎完全沒有到達Google要求的水平,到現在都還是有點小後悔。

如果在大三的時候,有個人能點醒我,告訴我該好好學習資料結構跟刷刷Leetcode,或許我會有更多的時間去彌補這些不足,讓自己沒有遺憾,結局也會有所不同吧?

跌倒了,再站起來就好

挑戰失敗後,我開始不斷的自我懷疑「這兩年在學校跟實習學的東西是不是都白費了」、「我是不是其實沒有自己想像中的那麼厲害」,各種質疑自己的心聲不斷的湧現出來,花了一段時間才好好調適自己。

如果我放棄,那我不就是活成了那些看不好我的人認為的「失敗」的樣子嗎?

雖然自己資料結構等基礎概念沒有達到Google要求的水平,但我對自己當時前端開發的基礎還算是有信心。

收拾好心情後,陸續再投了很多我想去的公司,像是蝦皮、KKBOX、Garena、Dcard、Pinkoi、Cobinhood、Appier等等,其中像Garena有收到面試邀請,但第一輪結束後就被拒了。

雖然各種現實的結果都在表明,自己「想去大公司」的想法已經漸漸往失敗的方向收場,但我還是相信:

只要把目標想遠一點,朝那個方向努力,最後就算失敗了,自己也會站在一個不一樣的高度。

投爆的冰山一小角1,現在才發現原來我也有投過後端..
投爆的冰山一小角2

就在真的投公司投到不知道要投哪家的時候,有一次在家裡吃晚餐,無意間看見Verizon收購Yahoo成立的Oath,要在台灣投資徵才的新聞。

這時候恍然大悟,我怎麼都沒想到雅虎?如果能進去小時候大家都在用的Yahoo即時通的公司,那肯定是一件很酷的事情!

後來我收到了面試邀請,更重要更重要的是:

我拿到Offer了!!

雖然當時只是個約娉的職位,但能過去雅虎上班,真的實現了我當初「想去大公司」上班的理想,這也確確實實的改變了我的人生。

要去雅虎上班啦!!

初入職場,嗨!Yahoo!

收到面試邀請時,我還是有點懷疑自己,不知道自己能不能做到,各種不安充滿在心中。

Phone interview當天,2018/08/16 10:00am,手機響了

我抱著忐忑不安的心情接起了電話,還好面試過程比我想像中的順利,原本45分鐘的面試,卻跟面試官聊了快一個小時多,這時我心中的大石頭才放下來,「原來其實我也不差」。

Onsite當天,因為我提早10分鐘到的關係,進到會議室後,有一批人不知道這裡是要面試想進來想開會,跟他們小聊了一下後有個員工跟我說「很期待我來這裡上班」,那時我心裡真的很希望這句話能順利成真。

那是我人生第一次的白板題面試,四個工程師坐在我對面,一整個下午的時間,我把白板寫的好滿好滿。

結束前面試官們出去會議室外討論,那時候我自己一個人筋疲力盡的呆坐在白板面前想著:

這些就是我大學這幾年來的成果,不管結果怎麼樣,我想我都沒有遺憾了。

就在面試結束前,面試官進來跟我說,除了正職,也有約娉的位置能夠考慮,而我表示不管是什麼職位我都能接受。

如果那時我拒絕約娉的位置,是不是我就能獲得正職的機會?Who Know?對我來說,不管是正職還是約娉,能進去那種環境學習才是我的首要目標。

過了週末,我收到了這封郵件,那時是在上班日的中午,我抱著期待的心情出去辦公室外通了電話。

通完電話後,我真的很興奮很激動,因為我知道,我成功了!

要去雅虎大學啦啦啦啦

在Yahoo做的事情主要是負責EC電商的開發,支援Yahoo購物中心的需求,例如購中的電商小遊戲,Yahoo刷報等等。

也就是在這時我學會了Node.js、React.js等技術棧,也理解到前端不只是把畫面刻出來就好,像是也需要寫點Server端來支援SSR等等。

工作上也偶爾需要跟外國人溝通,比如想問個源碼的問題,而那個作者是內部的美國人,就需要用點英文,這讓我感受到了自己是在一間跨國公司上班,是個很酷的感覺。

在這邊也有很多很酷的活動,例如夏天的時候會辦一場Summer party,邀請大家一起去海灘聽演唱會喝酒玩耍。

在這邊可以感受到很歡樂工作的氛圍,我很慶幸我的第一份工作是來到Yahoo。

在Yahoo上線的第一個作品!
Yahoo Summer Party 很熱的一天

環境的學習加成效果

來到Yahoo後,我明白了一個道理,環境真的會使人的學習的「更有效率」。

我接觸到了好多好多可能是我自己花兩年三年還不一定能夠學得會的事情,比如像是在其他小公司可能沒辦法學到很完整的CI/CD流程,來到了這裡,讓我的技術,不管是深度還是廣度都有著飛越性的提升。

我也遇到了很多對我真的很好的mentor們,讓我在學習的路上可以少踩很多很多坑。(如果你們現在有在看這篇文章,真的很感謝很感謝XD)

比起之前學習的「做出東西」的能力,來這邊更多的是學會去思考「為什麼要這樣做」。

這也確確實實對我的未來有著很大的幫助,想知道這些細節的讀者可以去看看我寫的另一篇2020 前端工程師面試 準備與心得(LINE Taiwan、17Live、Binance、Tiktok/ByteDance)的文章。

想轉正職,失敗

去了Yahoo半年後,我很喜歡那裡的各種人事物,也剛好公司有開正職缺,所以想挑戰看看轉正,可惜最後我失敗了。

對一個已經在公司上班的約娉來說,可能比較大的優勢就是得到面試機會的機率大了點,但實際上還是要完整跑過整個面試的流程,跟從外部面試的過程基本上都是一樣的。

或許是自己那時候對於思考「為什麼要這樣做」的能力還沒有很到位,各種基礎知識也還沒有很扎實,面試的過程簡直一塌糊塗,完全不知道自己在幹嘛。

這一次的失敗當下看真的很痛很痛,但現在看來,沒有這次失敗就沒有現在的我。也是因為這次的失敗,讓我真正的明白了這個道理:

不只是把東西做出來就好,更應該明白自己為什麼這樣做。

舉個例子來說,我今天在Stack overflow上看到一個解決問題的方法,不該只是複製貼上而已,更應該做的是花時間理解自己到底複製了什麼,往往這種心態,在學習上帶給你的成果都是非常豐碩的。

轉正失敗後,只要有空檔的時間,我就會多多思考當下的需求或專案,看看有什麼可以改進的地方,比如像是效能優化、重構代碼等等。

東西做出來之後,讓自己多想一步,想想如何還能做得更好。

我想這應該是我在Yahoo最精華的一段時間,我真的學習到了很多很多。

Yahoo

覺得自己準備好了,但又失敗,LINE

後來就這樣持續到了2019年底,很可惜那時候我的約娉快到期了,公司也沒有開新的正職缺,所以開始把目光轉向其他公司。

那時我聽說在LINE Taiwan有很多前雅虎的同事,所以對那裡的想像特別美好,LINE也就變成了我那時的目標。

開始面試前,我其實對自己還是有很大的信心,因為我覺得自己半年前的轉正失敗讓我學習到了很多很多事情。

「也許那一次的失敗就是為了讓我在現在過去LINE上班吧?」,我那時心裡是這樣想的。

一開始面試的很順利很順利,投遞一個禮拜後收到了Phone interview的邀請 ,然後前半部分的onsite也順利通過了。

GOGO Line! 最後一關了

到了最後一關onsite,表現真的不是很好,雖然題目都有解出來,但我想面試的過程很不完美。

最後就是等待結果,等了很長一段時間,雖然對面試的表現自認很糟,但心中都還是保有那一點期待,可惜最後的結果就是沒有被錄取。

後來得到反饋,因為他們當時專案很緊張,需要找有即戰力的工程師加入,所以我被考慮到最後就差那麼一點,但還是沒有被選上。

也許是因為之前經歷過了不少次失敗,我也明白自己其實是有能力的,雖然很難過,但這次的失敗並沒有讓我太灰心喪志。

後來收拾好心情,也找了一些自己想去的公司面試,最後很幸運的去了17Live!

終於成功,17Live

LINE面試失敗後,我繼續找了一些想去的公司,其中就包含17,那時面試下來的感覺其實也跟LINE差不多,很幸運的收到自己理想的Offer,就去了這裡工作。

在17主要是做內部用的活動系統,簡單說一下是什麼系統:

因為17做直播的活動真的很多,但每次的頁面其實都大同小異,所以需要一個能夠支持這個活動量的內部系統,讓企劃不需要經過工程師就可以快速的產出應付直播活動的頁面。

我來之前這個系統就已經開發的差不多了,在維護的過程中除了更加深對React Hook的理解,我也摸了點後端的東西,例如寫了JS的script放在Node.js的server上自動計算分數然後丟進MongoDB等等。

雖然是在前端的位子,但也可以摸到後端的東西,這種感覺我很喜歡。

不過半年後我還是離開了17,主要有兩個原因:

第一個是:Binance的HR主動找我,而我在2019年有接觸過比特幣的投資,對他們的產品蠻有興趣。(題外話:那時候一顆好像也才3000美….後悔沒買啊啊啊啊)

第二個是:他開出了讓我難以拒絕的薪資,所以我還是決定加入Binance。

在17的工作整體感覺是很讚的,學到了很多東西,午餐時間也偶而會看見直播主(算是額外福利?),很感謝這個願意接納我的公司。

17Live

全遠端的工作體驗 ,Binance

來到Binance後,工作內容就是開發Binance的產品的前端,薪水這時也正式突破百萬,原來年薪百萬就是這樣的感覺。

因為這邊工作是全遠端的關係,跟以前去辦公室的感覺比起來,我覺得少了點溫度,同事之間的相處也變得比較像網友。

但優點就是自由度很高,時間完全都交給自己安排,只要能順利完成需求,偶而需要出門或辦事情等等,跟主管說一聲就可以。

這時候因為疫情的關係,在家辦公也是一種好事吧。

在這也遇到了許多有趣的小事情,像是同事來了一個越南小哥,工作上需要用英文進行溝通,讓自己的英文口語有那麼進步了一小點。

但我待在Binance的時間也沒有太久,因為在年底的時候,我收到了新加玻Tiktok的HR面試邀請。

遠端辦公訊息就是跳不停哈

新的冒險!前進新加坡,Tiktok

不管是新加玻的薪資水準,還是要加入的公司,是一間擁有世界上最火的APP的獨角獸,我想這都是非常吸引人去嘗試看看的。

我會想去海外工作嗎?答案是想,但我也不清楚自己有沒有準備好。

除了自身的懷疑,對我來說更大的挑戰是要離開從小長大的家鄉,離開台灣對我來說真的有點難。

另一個遲疑是疫情,但我認為新加坡的疫情沒有到那麼嚴峻,所以這就還好。

現在出國真的是好的嗎?去了結果又會如何?但如果我不去嘗試的話,我永遠不知道這個問題的答案。

任何人都沒有準備好的一天

我問了自己,如果我現在選擇不去,過了兩年三年後,我會不會後悔?

答案是會。

所以我接受了Tiktok的面試邀請,最後也很順利的拿到offer!

Day 1 in Tiktok !

最後,跟隨自己的直覺,相信自己的選擇

到了這邊,呼應一下文章開頭的雞湯:

對於未來,你不可能未卜先知,
你只有在回顧時才會明白這一切是如何串起來的。

為什麼會這樣說呢?當時Tiktok面試幾乎都是考Leetcode,現在看起來,我大學畢業前挑戰的Google雖然失敗了,但要不是當年有那個機會,我也不會時常警惕自己要多多學習Leetcode的題目跟資料結構的概念。

那在Yahoo時期經歷的失敗呢?要不是有那些失敗,我更不可能明白「不只是把東西做出來就好,更應該明白自己為什麼這樣做。」的這個道理

後面不管是17LIVE、Binance、Tiktok的面試,

只要沒有前面經歷過的這些,我想我都不會順利的拿到offer。

現在我來到新加坡也將近快一個月的時間了,雖然離開台灣這個家真的很難很難,但我想趁年輕的時候,好好的冒險一下。

接下來的未來會怎麼樣我也不知道。

每個人都無法預見自己的未來,對未來感到迷惘的時候,最好的辦法就是跟隨自己的直覺,在每個當下選擇看起來正確的「每一步」,之後在未來的某個時刻,回頭看看這一切,才能明白自己完成了些什麼事情。

You can’t connect the dots looking forward; you can only connect them looking backwards.
So you have to trust that the dots will somehow connect in your future.
You have to trust in something, your gut, destiny, life, karma, whatever.
Because believing that the dots will connect down the road will give you the confidence to follow your heart.
Even when it leads you off the well worn path, and that will make all the difference.

對於未來,你不可能未卜先知,
你只有在回顧時才會明白這一切是如何串起來的。
所以你必須相信你現在所體會的在將來多少會聯繫在一塊。
你必須相信某些東西,你的直覺也好,命運也好,隨便都可以。
相信這些點會連在一起,給你信心並追逐你的心。
即使他引導到疲憊的道路,他也會讓事情有所不同。

謝謝大家

想持續關注我的話Medium追蹤給他按下去
也可以幫我的Facebook粉專按按讚~
另外這是我的Youtube頻道,目前每週三都直播聊聊大家想問的問題,歡迎訂閱~

謝謝看到這裡的大家

也希望大家能加入我創的Line社群,群組目前有700多人,可以一起進來交流分享經驗跟技術。

點我加入:https://reurl.cc/V3WjGZ

或者掃QR Code入群

--

--