Back to Notes

Intern@Microsoft-微軟實習

#intern

實在是拖了非常久才又會來完成這篇類似日記的心得文(記錄文),希望有人可以因為這篇文章而有所啟發,如果沒有就當作自己個一個生活紀錄。

經過上次 Onsite 面試後又一次回到這偌大的園區,這次是帶著滿懷期待的心前來。在 NEO(New Employee Orientation)上,認識了一些人,然而在未來卻沒在連絡了。為了希望能趕緊跟上軌道,我並沒有花時間去參加國際生的新生訓練,因為我前一天已經詢問過大概的內容並對其很有把握,而是直接前往了我的工作大樓。

我的辦公室位在 sudio X ,特別的點是通常微軟的建築名稱都適用數字代替的,就我所知大概有 150 棟建築物都是微軟員工的辦公地方,而以 sudio 開頭的確只有少少幾個。第一眼看到我的 Manager 就覺得他相當的親切,他也看似已經知道我的到來,一副準備充分的感覺。他叫 Shawn,在微軟已經工作了 18 年,賓州人,這個就是我當時對他知道的全部了。

或許附上一張地圖,讓閱讀的你更能體會我再說些什麼。這是微軟總部的主要所在地,圖上 90%都是微軟的園區;最東西南北的建築我都用綠色小旗子當作標制,整個微軟園區算是你把四個小綠點當作各邊的中點來看的一個類長方形的土地。

大概跟我介紹完組上在做什麼事情之後便帶我到了我的辦公室,不大的空間有兩張辦公桌,另一個是來自印度的女生 Wjdan,這已經是他第三次在微軟實習了。我看著我的桌子上疊滿了還未開箱的電腦、螢幕與一些辦公用具,奇中最為吸引人的是一頂我們 Team 的帽子還有我的白板上面大大的寫著 Chun-lun, Lin Welcome ! 便開始了我的開箱之旅。

微軟總部地圖

微軟 Redmond 總部地圖

或許附上一張地圖,讓閱讀的你更能體會我再說些什麼。這是微軟總部的主要所在地,圖上 90%都是微軟的園區;最東西南北的建築我都用綠色小旗子當作標制,整個微軟園區算是你把四個小綠點當作各邊的中點來看的一個類長方形的土地。

大概跟我介紹完組上在做什麼事情之後便帶我到了我的辦公室,不大的空間有兩張辦公桌,另一個是來自印度的女生 Wjdan,這已經是他第三次在微軟實習了。我看著我的桌子上疊滿了還未開箱的電腦、螢幕與一些辦公用具,奇中最為吸引人的是一頂我們 Team 的帽子還有我的白板上面大大的寫著 Chun-lun, Lin Welcome ! 便開始了我的開箱之旅。

微軟總部地圖

為了讓我能好好工作的新配備

微軟總部地圖

組裝起來的模樣 ft.送的耳機&借我的surface pro

一下子我們來到實習第三週

第三週算是我學到蠻多事情的一週,由於一開始 default 要用 A 軟件作為我的 project 的 solution,經過三天的設計後卻在第四天發現 A 由於一些隱私相關法定不能被使用,於是我趕緊開始著手研究 B 來作為我的 solution,也浪費了前幾天的時光,但也讓我理解到很多有關隱私權與產品的硬性規定,這點時間的浪費還算是值得。

這讓我也學會很多事情其實沒有所謂的 default 設定 不要預設太多,也不要一股腦的相信所有比你資深的人的話。

每個週五,我都會跟 Shawn(我的 manager) 1-to-1 算是一個跟 manager 保持緊密的管道,我也會順便跟他分享我的觀點,我的所學。

1-to-1 就是一個約莫 30 分鐘與上級主管溝通的時間,談論的範圍很廣,可以從興趣到職涯規劃或是基本的目前就業感受,主管會聆聽並給出意見,這也是一個她們能讓是員工的好方法,不僅僅是上對下的關系,更體現一種"朋友"的感覺。

剛來到公司,不懂這邊的規矩,很多時候不太敢去 ping 別人尋求問題,會覺得自己應該先花時間解決,或是不太敢去跟 senior 工程師或是 title 有 principal 的高階主管詢問意見或是討論,但這週由於一些緣故必須這樣做的時候,慢慢的體會到,其實微軟真的是很開放,沒有什麼階級制度,任何人都可以 reach out to 任何人,不用擔心是浪費他的時間或是什麼的,他能幫他就會幫他不能他就會 redirect 去可以幫助你的人或是 team。開始慢慢覺得這的確是一間不錯的公司。

實習的大重點 — 我的 project!

再說我的 project 是什麼之前,可能要先讓你們知道我在什麼組上跟這個 project 生成的目的;我在 AMC(account.microsoft.com)這個組上,主要的工作是維護一個網站,一個管理你所有有關微軟商品的網站(ie. 你買的 surface, office, xbox, 或是你買給你小孩的微軟商品,遊戲等等)

對,沒錯。 竟然是個前端居重的組(後來才知道其實前後端都注重,只是我的 project focus 在前端),明明我的履歷都是後端相關的事蹟(汗) ,這點也是我收穫的一大重點,畢竟我從來沒有碰過前端。

當時這個網站只有使用者"主動"給的回饋系統,也就是說有寫一個讓使用者自行給意見的區域讓微軟可以收集使用者的回饋,但顯然的這是不夠的,很多時候使用者不一定會自己給意見,或是更明確的說,使用者通常很懶也很不會去注意單純右下角寫著 feedback 的小框框。而我要做的就是一個這個網站"主動的"回饋系統,讓使用者在完成什麼任務或是我們自訂的 triger 被觸發時,一個小小的問卷視窗能顯示出來。

"一個小小的問卷視窗能顯示出來",呵呵,那個是已經開發到最後的模樣,當初我拿到的 project explain 大概長這樣:

P0 : Design and implement 1st and party user feedback technologies within AMC (account.micrososft.com).

P0 : tilize flighting technology to evaluate the implementation with focus on QoS and other health metrics. Evaluation of solution will be documented and presented for feedback. Limitations of 1st party solution will be documented with PM and presented to partner team for future consideration.

P1 : Automated ingestion of feedback and interpretation completed on a daily basis with alerting triggering on anomaly detection.

我轉述了一些內容,並不是全部,但大概的意思就是請我去設計並實踐一個使用者回饋系統,然後蒐集使用者的回饋並轉譯其意思成工程師能了解的語言。我當時看完這個目標根本一臉矇,除了不理解一堆用語外(ie. P0, P1 QoS 等等) 對於我的 project 我感到這並不是一個簡單的 project。我花了整整一天去讀主管對我 project 的要求跟期待,並去弄懂每個縮寫或是特殊用詞的意思,一場大冒險正在展開。

My typical day — 我的一天是如何展開的

07:30 起床搭公車去公司 08:00 到公司馬上泡一杯道地的西雅圖咖啡,並開始流覽 email,回復一些我 需要回復的且看一下昨天的 pull request 有沒有新的 comment 09:00 開始修改那些 comment 亦或是重新設計架構 10:00 參加組上的 stand up meeting 仔細聆聽整個會議,並紀錄下一些有用資訊,整個議不會超過 30 分鐘,回到位子上繼續 coding 12:00 跟組上同事吃飯 13:00 回來繼續工作直到下班 16:00 下班

Stand up meeting 是一個幾乎每天都有的行程,大概都控制在 30 分鐘,組員可以跟大家說明一下自己在做什麼、自己準備要做什麼或是自己遇到了什麼困難,什麼問題等等,是一個讓大家熟悉比此工作內容跟進度的時刻,遇到的問題根困難也可以用這個時刻來與大家快速的討論。我們組會用一個記事板記錄下來當天個人的工作內容跟代辦事項。

前幾週下班時間不是長這樣的,通常都 5.6 點才下班(加班到 8 點多幾次),是為了能快速進入公司狀況所做的一點犧牲。

如何快入進入狀況

當我回頭看了整個三個月實習,很多事情可以做得更好,但我想分享一些當時我覺得自己有做到並且幫助我快速進入狀況跟上組上進度的方法。

  1. 每天早到公司 我初期每天早到公司,並不是單單為了要能做更多事情,而是因為在 10 點的時候有個 daily stand up meeting,快速的讀完所有 email 並回覆加上一個小時的工作,有利於我在 meeting 上發表一下今天該做的事情跟目前所遇到的狀況,很多時候我因為有前兩個小時的準備讓我更能提出問題根尋求幫助。
  2. 遇到問題不要獨自思考太久 先聲明這個建議是剛入職的時候可以多多利用的,剛入職時都會遇到各種大大小小的問題;比方說取得權限,這種問題你只能感快尋求同事協助,自己一個人根本無法解決。又比方說我,第一次接觸前端的東西,很多東西根本不熟;也沒有碰過,我當時第一選擇並不是馬上尋求幫助而是自己埋頭搜尋答案,但我的建議是,可以直接找 mentor 或是同事進行解答,比自己讀字搜尋快的多多了。當時我幾乎每天早上都會去跟我的 mentor 進行大概 30 分鐘的談話,他會給我一些建議並解答我的一些問題,這一點讓我快速成長,我也時不時的跑去詢問同事問題,除了能增進我們之間的感情也是能快速進步的一大方法。

實習第六週

實習剛好過了一半,來記錄一下這六週特別是五六週的心得吧。第五週結束的時候我幾乎把 project 的雛形全部做出來了,也印證了我的 mentor 說過的: 當你完成設計的時候你已經完成了一半,剩下的那一半(coding 的部分)也就會很快了。我們組任何人在實際去 implement 之前都會需要經過 design doc review 的 meeting 跟大家報告自己設計架構,此時也是就得到大家回饋的好時候,甚至可能可以看到當初沒看到的盲點。我清楚的記得我的第一次報告實在是非常悽慘,口語不清,doc 寫的非常凌亂沒有邏輯,報告完自己覺得一陣尷尬。

雖然第五週就已經完成了我的 project 的所有 code 且提交了出去,卻花了第六週一整週來改我的 code,改成更為簡潔,更好維護的形式,說每行 code 都是經心體會過的一點都不為過,還好我其實這方面的訓練算是扎實,花點時間還是能產出漂亮的程式碼。也透過這次的修改 code,對我們組內部的系統又更了解了一點。

第六週也完成了兩個 project 報告,一個是給 PM 跟 mentor,一個是報給我們組上聽。結果來說我算是非常滿意,即便報告還是有蠻多地方可以加強的,我也從 PM 跟 Mentor 的回饋中感受到無比的開心,一方面是因為他們很喜歡這個 project,更重要的是他們覺得我們進度他們覺得算是頗快,如果沒有他們的回饋,其實自己還是有點擔心自己的進度的。

第六週也完成了第一次 connect,一個微軟特殊的與 manager 建立良好溝通的渠道,讓 manager 更了解你,但我已經有每個禮拜與 manager 1-to-1 的 meeting,這次 connect 比較像是我前半實習的大回顧,比如我在哪個地方做出貢獻,怎麼做能精進等等,系統會先需要我填入我自己的看法,manager 在填入他的,最後一次面對面回顧。我從他的話語裡面感覺的出來,他相當滿意我的進度,我的態度以及我內省的能力。也是這次的 connect,讓我更有自信去完成後半段的任務。

實習最後三週

倒數第三週的時候,我需要為我的項目在 demo day 上有個好的演繹。demo day 是我們大組(我在一個小組但 demo day 時會有四個小組所組成的大組進行討論)所辦理的一個活動,大概是每個月都會辦一次,記得我第一次參加時是個剛入職一週的小菜鳥,當時的會議廳後面竟然還有個身穿西裝的酒保!讓我印象特別深刻。這個活動主要是讓組員分享、發表自己的作品,可以小到一個表單的完成,亦或是一整個架構的設計,但共同的點都是必須已經在 production 裡面,也就意味著你所發表的東西需要是已經在運作的產品!

也就是這個共同點讓我做出了一個大膽的決定 ─ 主動要求額外&別組的工作!

Detail of my project 雖然我是在一個小組裡面,但我的 project 的 scope 是幾乎整個 AMC 的範圍,每個組別都可以用我所完成的自動使用者回饋系統,我所做的就是提供一個簡單、快速、好嵌入於任何程式碼的回饋(feedback)系統,這個也是當初設計跟主管預期的目標。我最後完成時建立一個 survey 只需要一個工程師大概半天的時間,他就能在他的網頁上設置一個當使用者完成某項事件(ie. 點擊某個視窗後,訪問超過 100 次後,購買一個產品後 等等)時,小小的 feedback 視窗將會升起的結果。

我上述說的這些都只是為了直接導入我的重點 — 那一個重大的決定,我自認為我的 project 不會完成如果沒有任何工程師或事 PM 真正的使用它,所以在我還沒有完成我的 project 時,我就已經開始物色可能的公司內使用者,看看誰會需要我的這項 project。我跟我的 PM 開始寄信給組上的 PM 們,詢問他們有誰對這個項目有興趣想嘗試看看使用它,最令人開心的是,Family 組有個 PM 願意也剛好需要這個項目,Family 組剛好推出了一個新的 feature,他們想知道使用者的想法於是跟我們進行了接洽。

我們討論了幾次,我跟她說明這個項目所有可以支持的點跟其限制,她非常滿意這個 flexible 的項目也願意嘗試看看,她說會在我完成時將嵌入到她們組上的程式碼的工作交由另一名資深工程師來完成。

但我實習只有僅僅三個月,當我完成這個項目時,她們組上那個負責嵌入她們組程式碼的工程師剛好處於休假狀態,這令我相當頭痛,一方面是我想在我的最終 demo 前能給出一個正在運行的狀態,另一方面是 Family 組已經沒有額外人手可以挪出來幫忙我的這項嵌入工作,於是我做了一個重大的決定 — 我主動要求讓我自行幫忙嵌入!

在做這一個的決定前,我詢問了我的 mentor 他的建議,他認為我的 project 已經完成,若我做出這個選擇是能讓其他人知道這個 project 已經完成,對於整個項目會有很大的 impact;相對的我可能需要額外的多做一些工作讓它來完成,這會是個挑戰。最大的挑戰莫過於我需要花相當的時間去熟習它的程式碼庫,要先能理階它們組的程式庫我才能自行嵌入。

我花了相當的時間去理解它們的程式庫,並用上了我的大絕招 — 不斷的詢問,我遇到問題時,會馬上跑去詢問 Family 組的工程師以利我自己閱讀的時間,要知道那可是好幾 G 的程式碼(哈),它們也是相當和善,更印證了我前面說的,整個微軟文化是互相幫助的氣氛。它們的組員更是驚訝我竟然願意做這個額外的工作!

收割成果

最後兩週算是成果收割的時候了,我在 demo day 上自認為表現非常良好,不僅能讓本土美國人、印度人因為我準備的好笑橋段都笑出來,demo 結束收到了一些同事們的私訊讚美。更重要的是,我的付出有讓其他組受益(收到相當多來自全世界使用者的回饋),這點相當的重要;不僅體現出我的 project 的可行性與影響力,更替未來需要為自己網頁或 feature 建立 survey 的人樹立了一個標準使用手則,他們只要跟著這樣走就能完成,不用擔心這個由一個實習生做的產品適用不適用的問題(哈!)。

我從來沒有想過自己能夠做到這樣,沒想過我會是我的 mentor 領導過的 6 個實習生中唯一一個能將實習 project shift 到 production 上的人,這個對我來說是極高的肯定,我也很開心得到這些。

實習的最後一週,我還是繼續為我的 project 多做些什麼,我開始以開發者的身分向其他組的 PM 介紹這個新項目,希望能藉此推廣開來,三場跟其他 PM 們介紹的 meeting 都非常成功,至少他們都能了解我的 project 在做什麼、能帶來的利益跟影響;給個 PM 都流露出躍躍欲試的表情,而那些表情成了我成就感的一部分。

後記

三個月的實習真的讓我學到很多,突然能理解為什麼美國特別重視實習的經驗,因為這將會是正式踏如職場前的暖身。對我來說來有一點是我特別的收穫,我喜歡上實做真正的產品,喜歡前端即便這是我第一次接觸;經過這次實習,自己會更知道自己喜歡什麼,不足什麼,回到學校時需要自己加強什麼,待下次進入職場你能如魚得水。

我與總部Logo合影

我與總部Logo合影