2022/07/20

轉職工程師 :: 撞牆撞得亂七八糟,從睡廁所到睡公司的軟體工程師之路 (1)

達成在主管辦公室玻璃上畫畫的成就


大學 & 研究所 & 交換學生 - 所有階段都不務正業


大學的時候念工業工程,但非常的不務正業,
除了大一必修計算機概論寫 C++。

大二必修網路資訊應用 ASP.NET C# 架網站和資料庫管理系統
選修系統分析與設計學畫 UML 和資訊安全與規範密碼學。

大三選修3D 互動內容製作用 unity 寫 JavaScript。

大四畢業專題大家都在寫生產管理、供應鏈等,我跑去寫 AR;
那時候展出時外來的評審委員看了後大為驚艷,還遞名片給我說希望我過去他們那邊就讀,其實是挺開心的,但還沒有真的想到要往資訊這方面發展,所以就沒有考慮。

再來就是以前想念的科系想做的事情都被家裡限制,想念醫學想念美術想念哲學想念建築,
所以大學快畢業時期時還是不知道自己想做什麼或是我能做什麼,本來還考慮考高普考,後來卻誤打誤撞申請了研究所。


--
碩一時進了 AR/VR | AutoCAD 實驗室,
選修 3D 視覺模擬和虛擬實境,用 unity、cinema 4D 結合 kinect 做手機遊戲寫 JavaScript。

接國科會計劃時和機械、化學系合作,用 dreamweaver 架宣傳網站,
那是第一次一個人架網站而且不是只是作業,是要公開出去的,
那時候還被 TPCA 台灣電路板協會把網站連結放在首頁,又覺得更有成就感;
後來化學系會長也想委託我幫忙架站,只是那時候沒有接受。

論文時則是用 C++ 寫 PSO 演算法解問題。


--
那時候念碩士時到處聽校內的演講,意外知道有交換學生這件事,
那時候我直接鎖定要去德國,直接不填備取選項,如果沒上我就不去交換了
除了德國我都不要! 就是對於德國有種莫名憧憬。

而德國又是全校最熱門的交換學校,所以一定要面試,
那因為我是系上頭一個申請交換學生的人,準備和查詢起資料特別辛苦。

於是碩班時白天寫論文、和教授 meeting、當兩門課助教批改考卷上課、當實驗室管理員、辦理實驗室聚餐、接國科會計劃、和機械化材系開會等;
晚上則是準備第一階段校內初審 : 純粹是交換申請、校內成績等基本資料;
還有第二階段校內面試 : 準備 PPT 上台報告包括自我介紹、申請動機、學習計劃等。

那時候收到面試通知的時候,是在我論文提案的前兩天,提案前就已經熬夜熬得天翻地覆不知白天黑夜了,提案完才休息一晚上馬上就開始準備面試資料。再來因為我想出國交換前把論文寫好,所以非常拚,那時候一到日都是早上起來忙到半夜。

面試通過後要再提供相關資料給德國校方審查 : 自傳、動機信、推薦信、校內成績、英文檢定、學習計劃、選修課程學分及採計表、其他有利審查等,

審查過了再能再去德國在台協會辦簽證、後續訂機票等。

而準備資料相關,認識的管院同學蓋章都是秘書蓋一蓋就好很快,
但我就必須要自己跑,找系主任與工學院院長簽名時之類,
因為是系上第一個,每次找對方簽名都會有個小面試吧,
系主任與院長都會問問相關的事情,所以會花點時間。

後來在德國選經濟系,因為覺得大學研究所都是工科,想修點經濟財金相關的課程,但我跑去選修了資訊相關課程寫 SAP,
那時候開始真的覺得我真的對寫程式有興趣,想要做相關工作,
然後那時候看到 ROR 很熱門薪水很高,就開始學 Ruby


2022/07/12

System Design Interview 不是比誰口才比較好


之前在台灣面試時都沒遇過 system design 面試,好像也較少聽聞有 system design 的關卡;
在英國時也不是所有面試時都會考 system design,通常是用來判斷該工程師是不是 senior 時會才比較會遇到。身為一個 senior engineer 除了被要求技術能力外,對於系統的架構設計和溝通能力也都會被期望達到一定的程度,同時也會預期多少具有領導能力。

而面試範圍可以小到設計一個 rate limiter,也可以大到設計一個 Netflix,其中要考慮的深度和廣度也就跟著不同,而且也有可能因為公司需求、軟硬體限制等而有所改變,沒有所謂最佳的解答。

在網路上看文章、影片 mock system design interview 時發現大家面試時,同樣一個問題,面試官的著眼點、流程的進行架構都不太一樣,那究竟什麼樣的內容是 system design inteview 時必須要談到的呢?

這裡用 designing a URL shortener 當範例,盡可能將流程結構化,並列出在設計時會考量的點,希望在面試時自己心中能有個大綱,好跑過一輪必考量的點;不過 system design 可以包含的範圍實在太廣了,可能會有些疏漏,還請見諒。