2020 台灣 Software Engineer Intern

2020 台灣 Software Engineer Intern

Tags
Career
Engineering
Intern
Created
Dec 22, 2021 06:15 AM
Edited
Jan 2, 2022
Description
1st time Software Engineer Intern at a Taiwan Startup

前言

Covid-19的關係,再加上原本給offer的公司不能remote,所以回台灣另外找工作。我算是運氣很好,在兩個禮拜內,走完全部面試拿到offer。
這間公司是一家做IoT的軟體公司,我面的職位是Big Data System Engineer Intern。公司目前處於熬過新創前幾年的辛苦歲月,正在擴張。
這篇是我用來記錄每週實習發生的事和學到的心態,會以非常不負責任的方式但卻最真實的方式來記錄著。整篇會非常的沒有組織,只以週為單位,非常隨性。

第一週(6/1–6/5)

招我的senior帶我,主要給我分配工作,還有另一位做了半年的實習生教了我很多東西。第一個禮拜大部分的時間都在了解公司業務和適應工作,當然也有寫一點code,但更重要的是,把我培訓成一位與公司朝著同一個方向前進的員工。同時,我也看到公司裡許多前輩還保有往前衝的熱情,不單單把侷限在自己的工作內容,或者可以說,沒有硬性的工作內容,就是做任何能讓公司成長的事。這種文化我覺得非常重要,比起「員工」,更像是能為公司著想的夥伴。

第二週(6/8–6/12)

第二週開始碰資料庫的東西,mysql和Elasticsearch。我的工作內容大多為data parsing和data cleaning,除此之外就是輔助其他人,看有沒有需要幫忙的。我的主管提醒了我短期實習應該著重在學習soft skill,畢竟待的時間不長,很難練出什麼絕世武功,所以我會偷偷觀察成員講話方式和每個人在團隊中扮演的角色。

第三週-第五週(6/15–7/3)

原本計劃每一個禮拜記錄那個禮拜的心得,但中間有點太忙了,連假日都抽不出時間。
在和朋友聊天的過程中,發現了目前被分到一些task有點偏向site reliability engineering。我的工作內容,偏向修復和維運系統。一開始剛進公司,工作內容比較像是早就決定好的,大家發現了問題,並決定解決問題的方式,最後交由我來實作。到後來,我慢慢地被訓練,並加入發現問題後如何解決問題的討論。甚至在寫test的過程中,發現以前公司沒有做好的地方,能夠找出問題並提出解決的方法,雖然我的方法後來沒有成功,但這仍然是非常激勵人心的,因為比起只是執行被決定好的事情,我已經開始可以貢獻更多想法在我發現的問題上了。
老實說,第一個月壓力蠻大的,因為剛進公司時,會害怕自己做錯事,使得步步為營,綁手綁腳的。甚至會懷疑自己是否符合公司對我的期望,如果沒有符合期望,那我是不是當初不該被選中。不過過完第一個月後,一方面比較清楚公司的商業模式,一方面也重新認識到了自己對公司的價值,也就是說,我做的事是有意義的,再加上,同事們人都超好的,都很容忍我。所以過完第一個月後,我跟同事互動也變得比較好,更敢問問題,也比較清楚自己能貢獻什麼東西。如果能清楚知道自己現在的狀態,不僅可以讓我比較破釜沈舟,做事果決,還能開始想未來的路該怎麼走。
離這個實習只剩一個月左右,我也在最近向我的mentor提出下學期繼續實習,一路實習到寒假結束。畢竟最近美國的疫情越來越嚴重了,單日確診案例甚至突破五萬人,所以我決定還是暫時留在台灣。

第六週(7/6–7/10)

這一週我開始思考我在公司的價值和效率。這週公司的RD都非常的忙,比較少時間可以應付我,但是我最近做的工作必須有比較多的討論,因為我工作內容需要方向決策以及改動過去的code,於是我發現我雖然開始有勇氣跟大家討論,不過我跟大家討論的模式相當沒有效率,最後討論常常變成沒有個結論。跟我的mentor討教過後,發現每次討論要有結論最好的方法就是自己先有結論( 不要浪費別人時間)。比起想出很多解法給大家選擇,不如想一個方法,想完善一點,在私底下先得到部分人的支持,等到開會的時候再提出來。因為有些人不是第一次聽到,所以當有人有問題或意見的時候,很有可能在之前私底下的討論都已經兵棋推演過了,如此可以讓自己的計劃得以推動,還能讓效率變得更好。
另外最近的工作內容,有點類似SRE做的事,看似做雜事,但是用一些自動化與監測的方式來找出系統漏洞,所以這過程中會需要自定義一些threshhold,這個部分有點像SLOs。後來仔細想想,自己確實也對這方面有些興趣,可能會在未來多涉獵相關知識。

第七週(7/13–7/17)

這個禮拜我也變得超級忙了,事情上手以後被分到的tasks也越來越多。雖然這代表自己變得有用一點了,但我發現做事情的效率可能有待加強。或許很多實習生或剛出社會的新人會很怕自己犯錯或問白癡問題,但在這週,我學到了”Ask for help”。在一個團隊中不去請求他人幫助是一件非常自私的行為,因為團隊本來就是互相幫助,而最終目的都是讓事情做完,團隊才可以繼續前進。若因為自己的自私,而導致進度拖延,那很有可能會影響到團隊中的其他人,最後整個公司都有可能無法前進。
越熟悉公司事務與個人角色分工後,我比較能提出更創新和完整的構想了,這蠻像自己在做project的感覺。因為我最近一個task讓我需要自己先構思一個版本的解決方案,在和自己的supervisor討論,到後來甚至需要和PM跟Sales討論客戶需求或公司內部需求。
綜合一下這週和上一週,我的supervisor要我每次在實作一個task前,都先想好一個自己版本的解決方案,再去跟別人討論。之前我對於一個開發流程的改動提出三個方案,但事實上我的supervisor也只問我傾向哪一個,畢竟即便提出一百個解法,最後也只要實作一個,所以直接綜合所有可行方案,濃縮成一個最好的,才能使工作更有效率。

第八週(7/20–7/24)

這週我手上的task數量越來越接近其他工程師了,代表著我的能力越來越好,也越來越值得被信賴了。甚至我開始能夠”負責”一些獨立的task,另與其他人合作。例如:上禮拜我的一個很大的PR終於被merge了,而其中加了一些測試。這個禮拜有另一位工程師遇到一個special case沒辦法被我的測試通過,於是我就協助他看是要改測試還是改他的code來讓最後的東西過CI/CD的pipeline。比起直接被吩咐要做什麼,我是參與了更多討論和決定。資深的工程師也很放心讓我們去決定和實作。另外,由於我現在的主要project是在監測我們的機器,所以我開始摸更多Elasticsearch和grafana,學習新東西是一件非常令人興奮的事。這週也和mentor討論了這個project未來更多的細節,之後應該會需要改動或增加別的架構,期待八月份。

第九週-第十一週(7/27–8/14)

中間跑去各種conference,所以沒有時間寫,只能在最後一週結束summer的時候寫。老實說,最後三週,我才感覺我真正onboard了,不論是跟其他同事相處的情況,或者是執行工作的狀況。跟同事相處像朋友一樣,私底下可以更暢所欲言,談公事時,也能夠嚴正以待。工作的情況則是,做過且擅長的東西越做越順手,沒做過或不擅長的東西,也能很快的找到資源解決問題。能做到這樣,我個人認為主要原因是,經過兩個多月,自己的性格和做事方式終於比較跟公司align了。沒錯,花了兩個多月,才真正成為公司的一份子。

結語

我以前一直以為實習是可以達到很多事,可以完成很多目標,但實際上,暑期實習應該是一種成本極高,對企業得不償失的投資了,除非實習生有很大的機率會升成正職,因為10到12個禮拜能做的事實在太少了。比起在實習的期間完成什麼,更多的還是開眼界,去了解職場和學校有什麼差異。例如:工作的流程和與同事間的互動,這些沒有親身或親眼去嘗試過是永遠不會知道的。以軟體業而言,我以前不會知道一個proposal要如此多時間去構思和討論,甚至需要依照客戶需求且戰且走。實作可以很快就完成,但要不要做這件事和要怎麼做是最麻煩的事。而我在這個實習印象學到最多的是,資方和勞方思考的方式完全不同。勞方給我一種很忙碌的感覺,想要把事情做好做完美,解決客戶需求,對的是產品面。資方反而多在跟人協調,和決定方向最大的方向及市場。資方或者老闆的人脈和機緣如果好的話,可以讓公司如魚得水。畢竟好的人才和技術到處都是,而進入市場的時機卻很難拿捏。
接下來,我還會紀錄從一個禮拜工作五天全職的實習,轉變成一個禮拜工作三天半工半讀的實習經歷。或許,還是會以這種週記的方式紀錄,或以更簡潔的形式紀錄。不知道,隨便。