新米工程師進修中(一): 旅日軟體工程師在 Mujin 的職場初體驗
- 2023-02-15
- Liu, An-Chi 劉安齊
¶ 前言
畢業之前我記下求學的心路歷程,畢業之後我將開這個新的系列文章「新米工程師進修中」,新米在日文中就是菜鳥的意思,我將記錄從 New Grad 菜鳥工程師,慢慢累積經驗直到跳出 Junior 這個層級的心路歷程。雖然故事主角是軟體工程師,但我認為工程師本質都是一樣的,除了單純的技能樹之外,我想任何工程師的發展面臨到的挑戰都是類似的,像是人際互動、環境適應、學習方法等等。
關於軟體工程師的職涯發展,入職前我就反覆著墨 Vgod 寫的「軟體工程師的修煉與成長」,不過裡面大部分的內容離我還很遙遠,主要是給入職幾年的工程師參考。Vgod 對菜鳥階段的描述我覺得過於輕描淡寫,畢竟他是事後回首,當初碰到的挫折可能都已經覺得沒什麼了(重點是人家可是 MIT 博士畢業!)。而我想分享的是每個當下我最真實的心境,記下每次的挫折和成長,我相信這個系列可以幫到別人,尤其我覺得很少人去分享從菜鳥到資深的細節,但每個小細節都是成長蛻變的關鍵因素。
本系列(持續更新中):
(與同事一起去滑雪)
¶ 初入職場
日本 Mujin 是我畢業後的第一份正職工作(前情提要:2022 海外新卒找日本東京軟體工程師工作經驗分享)。轉眼間來日本工作已經快半年,轉眼就進入 2023。自從加入 Mujin 也發生了大大小小的事情,對於一個菜鳥工程師來說,全部都是震撼教育。
簡單照著時間軸敘述,加入公司從第二天開始工作,第一個禮拜修了一個簡單的 Bug,第二個禮拜到第四個禮拜完成了一個新的小功能,感覺有慢慢上軌道,得到了一些自信。第二個月初期寫了一些小功能,功能雖然全部都能動,但後來主管 Code Review 之後幾乎都把我的 Code 全翻新,自信有點受到打擊。第二個月中期到第五個月,剛好碰到公司在做大專案,全部工程師幾乎是把整間公司的核心程式碼都翻新過,算是不錯的機會,可以參與到大計劃,接觸的範圍也比較大,也第一次體會到一件事情可以做這麼久。剛開始做的時候大概撞牆一個多月,後來慢慢開始有點開竅,比較有真的有在做事的感覺,但隨著任務範圍變大,依舊覺得自己離真正能做出大貢獻還有好一段距離。
¶ 公司生活
我一直好奇加入一間公司第一天會幹麼,我們公司有特別寫了一篇部落文介紹第一天在幹麼,所以細節我就不介紹了:Let’s find out how is your first day at Mujin。簡單來說整天都是 HR 在做介紹,一天的最後回到自己的組,開始由同事協助了解開發環境和開始解第一個問題。
我不知道是不是所有公司找外國人都是這樣,但 Mujin 從招聘到上工前都打理的妥妥貼貼的,我甚是滿意。短居用的房子在出發前就幫你找好,進日本之後會帶你去區役所辦各種行政手續,也會帶你去銀行開戶(雖然我嫌跟 HR 約時間麻煩,直接找女友陪我去區役所。另外其實在日本,外國人不靠公司關係開戶的話,自己應該開不了,幾乎都要待滿半年才有機會)。我感覺沒遇到什麼大問題,就算我沒有日本女友應該也不會有大礙,但是有些事情還是得靠女友,不少時候讓女友翻譯日文比較容易,公司 HR 也不是所有時候都靠譜,有時候會跟我亂講,我常常讓女友幫我 Double Check。
雖然 Mujin 應該算是日美混血(老闆是日本人和美國人),整間公司氛圍比較偏向外商,不過很多小地方又很日本,但至少不會像傳統日商那樣。工程師幾乎都是外國人,其他部門日本人會比較多,但基本上在公司都是講英文。令人驚訝的是,這邊很多外國人基本上也有 N2、N3 的程度,另外中國人也不少,有時候吃飯聊天索性就說中文比較輕鬆。
公司有提供免費午餐,很像高級版的營養午餐,有提供午餐挺好的,不過吃久就膩了。有免費午餐主要是因為公司靠海,這邊一片荒蕪,附近完全沒有餐廳。通常出去吃一餐也要一千多日幣,所以一個月下來可以省下兩萬午餐費。這邊也有免費咖啡飲料零食,我大概是吃的最兇的那個,好像變胖了不少。每天中午我都會去打桌球,通常大概玩個半小時到一小時,真的很爽,感覺一天的運動量都達標了,運動過後回去工作也神清氣爽。工作中想休息我就會去耍廢,有時候也會去健身房動一下,或是下班再找人去打個桌球,偶爾會在下班後跟同事一起玩個桌遊,或是一起吃個飯。看起來很愜意吧?但其實這間公司不少人都在加班,大概日本人就比較拼命的感覺,只是我喜歡過舒服的步調,大多數時候我都會準時下班。
¶ 技術能力
在準備面試的時候就一直有種自己什麼都不會的感覺,進入公司之後確實能夠感覺自己啥都不會。你說至少自己還知道怎麼用 Git、GDB、Cmake?抱歉,這跟身為軟體工程師要知道怎樣敲鍵盤一樣理所當然。很久以前我寫過「資工系所學生的基本素養」,掌握資工基本素養只是進入好公司的門票,進去之後才是學習的開始。
我沒自信進的了 Google、Apple 之類的頂級公司,目前離我太遠,而 Mujin 水平大概就稍微比我的能力再高一些些,讓我感到壓力成長的同時又不至於被壓垮。我可以感受到我的老闆和同事都很聰明,我很享受跟一群有能力的人共事,但同時缺乏經驗讓我自卑和挫折。我覺得很幸運的一點是,我主管算是有耐心教人,從他身上我感覺學到了很多,從待人處事到技術都是,我印象最深刻的是看他 Code Review 當場改我的程式,只花一點點時間馬上明白我在幹嗎,然後用非常快的速度反覆在不同檔案之間切換,甚至沒什麼思考就知道要怎麼把每個部分串接在一起,那時候我才真正體會到我距離資深有多麼遙遠。
進入公司頭一個月解了兩個問題,我花了很多時間研究公司的程式碼,好不容易才完成任務,覺得自己挺厲害的,但後來跟主管個別對談聊到,他說前兩個問題都只是很簡單的題目而已,一個是解一個已知的 Bug,另一個是在現有框架下寫一支 API,都不是真正有挑戰的問題,那時候我只覺得有點慚愧,我竟然因為完成「簡單」的任務而高興不已,殊不知我以為有挑戰的任務只是人家眼中簡單的任務,不過仔細想想,我也才剛來公司不久而已,總是該從簡單的開始。後來就剛好趕上公司的大專案,花了一個月每天反覆看程式碼,卻一直沒實質進展,那時我感到挺挫折的,就這樣每天盯著程式碼發呆,又過了一個多月,忽然就好像開竅了,開始能理解公司的程式之間是怎樣互相作用,也開始慢慢有產出。我可以理解為什麼一間公司得待個兩三年,光是開始覺得有點掌握公司程式就花了三四個月,真正掌握能有效率產出大概要過半年到一年。前期主要都是撞牆期,了解公司內部開發流程,內部開發工具,學習怎樣和同事合作等等。
很多人都跟我說過不要急,確實是如此,進步無法一蹴可及,技術力也是慢慢累積,進來公司半年後,確實有越來越了解公司的大架構,知道組織內部怎樣運作,如果今天主管指派一個任務給我,我有自信更快掌握狀況和用更快的速度完成,同時我也感覺到自己慢慢有影響力,隨著寫的程式碼越來越多,會有越來越多的人過來找我討論和請教我負責的功能或專案。
在學校透過寫作業和上課來進步,在公司則是透過做越來越多的任務來成長。越快完成主管交代的任務,越能接觸越多的工作,也就越能快速的進步。剛開始的任務一定都是最簡單甚至打雜的任務,隨著時間增長,碰觸到越多程式,就會慢慢接觸一些比較難的任務。大量閱讀很重要,一個有規模的公司程式碼都是十萬百萬行,不要怕一直去鑽程式碼,鑽的越多越深,越能了解不同模組之間的關連性,也不要只是看過,要盡量把細節搞清楚,同時記住每個功能在那個專案的具體位置,在之後有需要改相關程式碼會很有幫助。我覺得保持好奇心也滿重要的,看不懂或不了解的程式我都會盡量去問,通常要不就是真的太高深需要解釋,就是原本設計就是有問題需要改善,不管是哪種情況問了都是比較有利的。
以一個新人來說,我感覺三個月可以大致知道公司狀況,六個月可以掌握公司大架構,再之後可以開始有一些比較有價值的貢獻。我一開始也是很急,想要馬上可以有貢獻,後來我開始接受我就是什麼都還不會的新人,唯一能做的貢獻就是趕快學習,狀況比較好的公司應該都有時間讓新人花個半年去上軌道。但依舊讓我挫折的是,即使工作半年,我主管說他認為我還不具備獨當一面的能力,依舊不敢把太重要的任務交給我,我想就持續進步吧。
題外話,不管是公司主管或是資深前輩都跟我說過更快的進步方法是工作之餘的開發與學習,找個自己有興趣的 Side Project 做或開源專案參加,可以補足在公司沒機會接觸的技術,擴大自己的學習範圍,我自己沒有很認真在業餘學習上,大多數時候比較想耍廢,但還是多多少少有花時間去看技術書或是寫一下開源專案。
¶ 語言能力
原本在歐洲待一年覺得英文沒什麼,能溝通就好,但我發現自己的英文程度還有待加強很多。Mujin 的官方語言是英文,公司裡又很多都是美國人,或是英文程度本來就好,常常他們講話我就會跟不上,偶爾聽不懂就算了,常常聽度懂就會造成溝通沒效率,總不能老是要人家重講。有時候在想一些比較複雜的邏輯,用中文表達都會卡卡的,用英文去講就真的是災難。這還不是最糟的,最糟的是對英文母語者講出有點冒犯的表達語句,這是非常語感的問題,英文程度不夠的時候會因為自己用詞不精確或是用詞錯誤,直接讓人物會或甚至冒犯對方。跟朋友聊天時英文隨便講不會怎樣,但在職場上英文就必須講得很謹慎和正確。比較幸運的是,相處久了之後,同事比較知道我英文程度不夠,不會因為我的一些語言錯誤而對我不滿,我也誠懇的表示,希望他們覺得我講錯或不禮貌的時候直接糾正我。
同時,畢竟在日本工作,生活上還是常常得講日文,現在都靠女友翻譯,老實說覺得很困擾也很不方便。日本人基本上不會說英文,不能像在歐洲一樣直接開口說英文也基本上沒問題,所以只能去乖乖把人家的語言學會,只是工作一段時間之後日文就沒什麼認真學,因為工作上都講英文,平常生活也不太需要日文,或是最基本的日文而已,像是怎樣付款、要不要袋子、要不要加熱。只是一直不會講日文的話,要辦事的時候就一定要女友陪著,遲早還是得學會才行。同時不會說人家的語言就會一直有次等公民的感覺,那種感覺很不舒服,例如看個醫生很難溝通,被警察攔下來支支吾吾。
我覺得最重要的一點是,語言能力不夠會嚴重影響自己的自信心,我因為英文說不好變得不喜歡跟同事說話,每次要跟同事用英文說話都覺得壓力很大,確實我能跟別人溝通,但我無法做到像講中文一樣輕鬆自在。身在日本卻不會說日文,讓我行動變得畏畏縮縮,外出只想跟女友或朋友讓別人幫我說日文,自己出門時只想找不需要開口的地方。英文說不好日文也不會說,讓我一直覺得很自卑,如果說一個理由要我離開日本絕對是日文能力。不過心裡明知道要去改善,但下班之後依舊是耍廢度過,回家我只想休息。
¶ 人際相處
人以和為貴。怎麼跟人相處也是一個很難的議題,在學校碰到相處不來的同學頂多選擇不相往來,但在公司遇到個性不合的同事你則是要想辦法跟人家相處,畢竟沒必要跟自己的薪水過不去。人際相處一部分跟語言滿有關係的,不是每個人都有耐性慢慢解釋或重複,英文如果跟不上或是講的不清不楚,遇到急性子的人就會容易不耐煩,另外如果用詞不精確甚至冒犯到對方,就容易與別人吵架起衝突。剛進來的時候,我有和同事爭執過幾次,但幸運的是沒人希望工作氣氛不好,起衝突過後都有馬上和解和溝通,後來時間久了摸清楚對方的性格,也大概知道怎樣與對方相處了,甚至當初吵架的同事是我現在訴苦的對象。
¶ 準時下班
可不可以準時下班主要還是看整體職場環境,如果公司氛圍就是必須加班,那你也只能照做?不然不是被趕走就是你自己走人?
我剛進 Mujin 的時候,我發現我同事每個都很晚走,心裡想完蛋,但我主管跟我說他沒有要留人,大家留下來都是因為覺得有趣或是覺得有使命感才留下。我原本半信半疑,但現在幾個月過去,我真的相信了,我幾個同事對於工作或技術的熱忱超過我想像,每天都待很晚,甚至還有半夜或假日工作的,我只能說我由衷佩服。公司也沒給加班費,我自己更想把時間留給自己用。
我得到的建議是剛進一家公司不熟悉的時候可以多待一下,畢竟什麼都不會,多學一點是好事,也不用怕是不是之後就會變成都必須待久一點,如果一間公司不會強迫你加班,那你熟悉業務之後,自然可以恢復準時走,反之如果公司就是常態性加班,那你也逃不掉,所以結論是擔心也沒用,跟進去就自發性多待一下讓自己快速進入狀況。現在看來確實如此,剛開始我因為常常卡 Bug 或是對系統不了解,覺得進度不夠快,自發性的多留下來多研究,但後來慢慢上軌道之後,我覺得我工作時間內的產出已經達標,我就覺得準時走沒什麼問題。
¶ 一對一要談什麼
Vgod 在他的系列文中也有提一對一要聊啥,但一樣那都是比較有經驗之後的事情了——身為一個剛進公司的菜鳥,不會去跟主管說你想要得到主持一個專案的機會,或是想要主管幫忙協調跟其他組合作的事項。那麼一個菜鳥可以談什麼?這邊以我自己的作法舉例,先聲明我也不確定是否是最好的,但至少目前談了四次我覺得都挺滿意的。
在前幾次的對談中,我問了主管對我的期待是什麼,三個月內可以做到什麼,六個月可以做到什麼。問了一下我同事過去的學習路線是怎樣,我可以怎樣參考。在工作一陣子之後問了對我目前的工作效率有什麼建議,有看到什麼明顯的缺點。我也問了怎樣可以更快的熟悉公司業務,問了主管過去是怎樣成長進步。有時會聊一下當時開發上遇到的瓶頸或困難,與其他人共事發生了什麼事情。有時候也會單純聊一下技術上的知識,或是趁機問比較廣泛的公司運作發展的問題。
我自己的作法是,有關於工作上的進度、困難、技術細節,都是馬上找主管討論,但是跟工作產出直接有關以外的事情就留著等一對一再聊,比方說有一次覺得團隊在溝通上有問題,造成大家認知不一樣,跟主管討論要怎樣避免,或是跟主管分享自己心情,聊一聊覺得能力不足或是哪裡覺得挫折。一對一對我來說就是一個比較正式的聊天,可以聊一聊吃飯聊天不太好意思開口的話題,想要得到一個比較完整詳細答案的問題也比較適合這時候問。
不過我們公司好像沒有固定一對一的文化,通常都必須是員工自己跟主管提出才會進行一對一,最近我主管比較忙也跳過了一次一對一,我覺得比較可惜。比較幸運的是,亦師亦友的 陳永昱(交大數值軟體開發老師、Synopsys 資深工程師)常常回答我各種工作上的疑難雜症,像是工作上的心態、做事方法、學習方面的問題,這些也就不用在公司一對一中再請教一次。
¶ 職場生存法則
職場生存法則我覺得是僅次於技術能力最重要的項目了,這中包含了解公司內部文化、政治派系、了解老闆和老闆的老闆、如何跟老板匯報、如何幫老闆擋槍等等等。這方面我還很菜,還在學習中,但我可以感受到不敢快學好的話,哪天公司裁員我會第一個被趕走。
滿推薦閱讀這篇「4 年 AWS 工作总结:从 college hire 到 senior 的一点感悟」,裡面講的都是職場的遊戲規則,我覺得很多我沒有做得很好,像是不要給老闆添麻煩之類的。另外經過一番洗禮後,感悟明哲保身不要讓自己淌渾水的道理,還有知道什麼事情該做以及不該做。進入社會,不再有學生這張免死金牌了,我在如何做人這方面資質愚頓,希望可以學得快點。
¶ 社交
除了工作以外,Mujin 的社交活動還是挺不錯的吧,每個月會有免費的 Team Dinner,同個 Team 一起吃個晚餐每個人有四千的預算,每個月也有足球之夜,大家一起踢足球也挺好玩的,另外冬天大家還會一起約去滑雪,中午不少同事會一起打桌球,有時大家還會約一起玩桌遊。
(與朋友一起去爬山)
(與同事一起吃晚餐)
(公司每月舉辦的室內足球之夜)
¶ 結論
這半年老實說我覺得沒有過的很順,如本文提到的各個面向,大多數都是挫折和焦慮的體驗,例如剛開始跟同事吵架、程式一直寫不出來、寫的程式一直被要求重改,然後我在日本還沒拿到永住,而 Mujin 對新人一開始都是簽一年約,時時刻刻無不擔心自己表現夠不夠好,此外當初為了追愛到日本之後,跟女友已經進入磨合期,三不五時就會吵架,種種因素讓我覺得起步的半年並不是那麼美好,希望下個半年能做的更好。