微軟工作這二年

周見智發表於2017-12-25

16年元旦頂著大風來北京面試,一天6輪,在回去的高鐵上感覺面試可能掛了,一個禮拜後收到了Offer。由於自身各方面的原因,18年元旦,選擇離開微軟。It is hard to say LEAVE, 這裡整理了一下我在微軟的兩年經歷,算是我這兩年的總結。

 

我眼中的工作環境

我沒在其他一線網際網路公司呆過,我個人覺得微軟(北京)的工作環境是相當不錯的。公司大樓靠近北四環,丹稜街5號,周邊街道基本不怎麼堵車,地鐵有四號線和十號線,開車的話直接走四環,到亞洲最大的居民區天通苑大約也就40來分鐘。

上下班比較自由,公司沒有這方面的考核制度。我一般早上11點到公司,晚上8點離開公司,如果有事就會更晚一點。有的同事下午需要早走,所以上午來得比較早,但是工作時間這些都沒有明文規定,各人視情況而定。

平時如果有什麼事情需要請假也比較簡單,一般跟leader說一聲就行,回頭在系統裡面補一下即可。每人每年有15天帶薪年假,我覺得一般人基本用不完。如果半天的話,大部分都不需要在系統裡申請,直接說一下即可。微軟關於假期這方面的福利還是比較好的,每人還有3天志願者假,15天病假,女同事120天產假,男同事有6周的陪產假,沒錯是陪產假,我前段時間剛修完42天的陪產假。

公司內部環境不錯,比較空曠,各種小的focus room,meeting room,一週七天隨時都有保潔在上班,至於免費的水果、飲料這些當然是必備的了,相信一般好點的公司都有這個福利。

 

我做過的專案

在微軟呆兩年,做過的東西不算少。如果讓我給我做過的專案評一個分,10分制的話,大概在6分左右。我覺得我比較客觀,不存在我在這裡呆過所以吹噓,也不存在我即將要離開了所以去故意抹黑。

剛進來的時候做過一段時間的UWP,具體是什麼我就不說了。整個team都比較賣力,可能微軟上層領導早已看透了一切,早已知道Windows 10 Mobile命數已盡,所以高層老大基本不重視這塊的工作。要知道那還是16年初,微軟還並沒有官方宣佈放棄Windows 10 Mobile。當時只有我們Manager支援以及他手下一幫子兄弟在埋頭苦幹,最終的結果大家都知道了,微軟宣佈停止更新Windows 10 Mobile。我不知道沒有移動端這塊,UWP存在還有什麼價值,體驗不如傳統win32,又不能跨平臺到Android和iOS。HoloLens、Hub和Xbox?這個使用者能有多少?個人以為UWP的初衷是相當好的,只可惜微軟並沒有翻盤。

做了差不多四五個月的UWP,16年下半年開始接觸Cortana的開發工作。Cortana是Windows 10預設自帶的一款智慧助手,不知道有多少人用過這個智慧助手,認為她到底智不智慧。Team大約花了4個月做了一個Vision的feature,大概就是讓Cortana不僅能夠說、聽,還能夠看,能夠識別圖片中的文字資訊,自動為你設定提醒,為你安排會議,個人覺得這個feature還是非常實用的。可能你就要問了,這個東西看似很簡單,為什麼要花這麼長時間,因為整個Cortana的程式碼結構超級複雜,前端涉及到Windows 10作業系統的Code,後臺涉及到Bing的Code,你不花個把月根本不清楚你應該動哪塊的東西。再加上Cortana整個專案的Owner在美國,你往裡面check in一行Code,都得需要別人Review,跨國的開發工作效率尤其低下,這個後面我會說到。由於各種原因,最終這個feature並沒有在RS3中對外開放。聽說RS4會上?後來我轉到其他專案中,所以也就沒有再關注這個事情。說到程式碼結構複雜,不得不說很多開發的思想還停留在十幾年前,像Cortana、Edge這種App都是跟隨系統繫結的,半年一升級。類似這種App就應該釋出到Windows Store上,更新方便,完全符合移動網際網路開發程式。關於為何Edge不能發到Store中而必須繫結到系統上,知乎上有相關的回答,真相讓人哭笑不得。

今年5月開始,進了新的專案,也就是我目前正在做的,Edge for Android。當然Edge for iOS也是我們team另外一部分人在做。說它是Edge,其實跟Windows 10上的Edge沒有任何關係,Android上是基於Chromium開發的,iOS是基於Control弄的。Android這邊的dev最開始大約有16個人,dev全在中國,design在美國,從專案開始到最終Publish一共花了將近6個月的時間。Android版目前可以在Google Play上下載,國內Android市場也有同步過來的,感興趣的可以下來用用,自認為跟國內幾個主流瀏覽器還是有一定差距。相比前兩個專案,可以看到這個專案很受公司重視,所以相對來講還是比較有前途的。Satya也在用我們dogfood內測版本,上次還反饋了一個bug。當然還是有幾個地方需要吐槽的,公司內部已經吐槽過,所以我把它寫在這裡:

1) 公司組織結構太大,一個芝麻小的改動可能涉及到的人全世界都有。溝通全靠郵件,今天發的郵件可能明天后天才能回。因此溝通不暢是經常的事,design改一遍又改一遍很常見;

2) 由於微軟公司的Policy,出於各種Security的考慮,Chromium版本需要不斷地升級,從一開始53,5個月的時間連續升級4次一直到63。可以想象,每次merge需要消耗的人力,由此產生的bug又是多少;

3) 不得不說,微軟對App的design真不如國內大廠,UX不夠好,不多說了。

 

我對專案的反思

拿著SDE2的錢,操著CVP的心。我這種級別也只夠在底層寫Code。事實上,大部分都是我這樣的人。還是那句話,公司組織結構大,做一件事情牽扯到的人太多。而且不在一個地方,溝通起來相當困難。想象一下,小團隊作戰,出現一個問題,馬上就能面對面開會,可能當天就能高效解決。雖然微軟在中國的的研發人數全球第二,但我所在的部門而言,很多東西都沒有拿到話語權,國內的團隊沒有得到美國那邊足夠的信任。我很肯定的說,我身邊的同事都是比較優秀的,Coding Skill、思維以及溝通表達都是超出平均值的。但是就是這麼一群人,做出來的東西很多都沒能取得成功,作為一個搞技術的,可以想象,做出來的東西沒有被認可是一種怎麼樣的體驗。另外,有人的地方就是江湖,哈哈。

 

我眼中的微軟面試

來微軟面試的SDE(據我所知包括SDE1、SDE2以及Senior SDE),面試官基本都只會問你資料結構演算法相關的問題,其他的東西幾乎不問或者不是Hire你的標準。雖然我理解這其中的原因,一般這種面試如果能過,基本說明這人靠譜。但是,從我微軟兩年的實際經驗來看,招一些熟悉具體技術、業務的人進來或許更適合。我也參加過公司的一些面試,面試官的Feedback中只有以下幾項:

1) Coding Skill. 大概就是讓你在紙上寫code,比如寫一個連結串列反轉,看看怎麼樣。至於拿什麼語言寫隨意;

2) Data Structure & Algorithm. 問一些演算法資料結構的題目,看你的答案;

3) OOP & Design Pattern. 問一些常見的OO和設計模式之類的問題;

4) Hire or No Hire. 要不要你?

可以看到,面試官的問題跟你申請的職位一點關係都沒有,至少從面試官來看是這樣的。之前有個Google拒絕Homebrew的作者的新聞,詳細可以看這裡作者本人的回答。 可以看到,演算法、軟體工程以及產品之間的不同。

 

關於離職

選擇一個公司,我覺得應該全方位去考慮,不僅僅是能做的專案,其他比如待遇、文化、發展、福利以及自身條件限制等等。綜合來看,我呆過的部門還是不錯的,我之所以選擇離開,完全出於自身原因。在北京的同學,如果有希望加入微軟的,還是不錯的選擇。也非常感謝我來微軟的第一任Manager,是他招我進來,在我離開的時候,又非常熱心地託人給我在武漢介紹新的工作,哈哈。感謝微軟,加入微軟也是我學生時代的夢想。希望以上這些對想加入微軟的同學有幫助。

 

[以上只代表我個人觀點,且僅限我所在的部門在這短時間內所接觸的東西,其他部門機構不清楚,特此宣告,防止給大家造成誤解]

 

相關文章