我在微軟學到的幾個小技能
2005 年 7 月 11 日,我從學校畢業加入微軟工程院,在 Exchange Server 團隊做開發,當時的老闆就是現在小米合夥人 KK Wong 和林斌。2010 年 4 月份我離開微軟加入小米的創始團隊,雖然當時差三個月到才五年,還是拿到了五年的紀念,一個玻璃磚,不小心摔碎了一角,我至今還保留著。
最近五年,除了有時候去找老同事聊聊天順便挖幾個人,偶爾要個 Windows 的註冊碼之外,和微軟沒有任何業務往來。直到春節的時候 Windows 團隊和小米接觸打算移植米 4 上的 Windows,我才又大規模接觸微軟的團隊。回首過去,有幾個在微軟學到的小技能,讓我和我的團隊受益很大,寫出來分享給大家。
Code Review (程式碼審查)
加入微軟之前,我在學校寫了無數程式碼,和其他自學成才的程式設計師一樣,大家都是各做各的,很少和其他人交流,大多數時間是在網上找資料,再自己琢磨。到了微軟之後,我加入的團隊是和美國總部的工程師一起工作,分配了一個資深的工程師來給我做 Code Review,我還記得他的名字叫 Branden,其實年齡比我還小一歲,不過我研究生畢業參加工作的時候,他已經工作五年了,囧 rz。
在微軟的工作流程裡面,Code Review 是非常重要的一步,翻譯成中文是“程式碼審查”,我不喜歡這個翻譯,因為其實並沒有上下級審批的意思。在工作中不一定是有經驗老手的給新手做 Code Review,新手也可以給有經驗的做 Review,只要看不懂的地方就可以提出來,看不懂說明對方寫的程式碼不容易維護,將來寫的人走了換了個人負責就會有問題。而且這來來回回的流程也是互相學習的過程,你會發現原來這個地方還可以這麼寫,既然要互相學習,那做 Code Review 的人也要像寫程式碼的人一樣認真思考,假裝如果是我寫的話會怎麼辦。
我剛入職的時候印象最深的是美國同事的耐心,我寫的程式碼他非常仔細的看,提了非常多的意見,我按照他的意見改一遍,再提交給他,他再提意見,我再改,最多的時候有十幾個來回的,有時候我都覺著煩了,但還是忍住了,確實對方提的意見都是對的。幾年後我到了一個團隊,我是裡面最資深的員工,有一次在 Code Review 的時候給新入職的同事提了很多意見,還幫他做了測試,給出了我的解決方案,可能讓他覺著很沒有面子,他對我表達了非常不滿的情緒,我非常淡然,並感受到了一種輪迴的感覺,因為 Code Review 就是這樣的。
加入小米之後,才發現中國大多數公司是沒有 Code Review 機制的,這讓我非常懷疑他們的程式碼質量。還好 MIUI 團隊最早的工程師都是從微軟過來的,儘管我們拋棄了所有可能降低效率的流程,比如再也不寫 Design Spec,減少無關的測試等,但是始終堅持做 Code Review,並且和在微軟的重視程度一樣多。當時有從別的公司過來的同事拒絕接受別人給他提的意見,頑固堅持自己的風格,我們就讓他去別的團隊做新功能去了。因為只有這樣,才能保證在團隊快速擴張的情況下,保證工程質量和同樣的程式碼風格。這裡還要感謝 Google 做的程式碼管理工具 Gerrit,讓我們做 Code Review 比在微軟的時候都要方便。
Email and Rules (郵件與規則)
工作中難免會收到很多郵件,但是我國人民好像不喜歡用郵件來交流工作,每次我看到同事的郵箱有幾千封未讀郵件的時候,就感覺到了一種無奈。遇到孺子可教的新同事,我會告訴他,每天把郵件處理掉,保證沒有未讀郵件是一種美德,不信你看我郵箱,一封未讀郵件都沒有。其實這裡面並不需要勤奮,祕訣就是把不該看的郵件都直接刪掉。
一般來說,正常的郵件原則是,如果發件人需要你來相應,會把你放到 To 裡面,如果只是需要你知情,那會把你放到 Cc 裡面,如果以後不希望你再介入,會把你放入 Bcc 裡面。所以要把出現在 To 裡面的郵件單獨列出來,優先處理。然後再把出現在 Cc 裡面的列出來,看看就行。其他的如果是發給你在的小團隊的,和 Cc 其實差不多的,看看就行。其他的,刪掉就行,不看沒啥損失,如果有問題,也是發件人的問題,誰讓他不按牌理出牌呢。比如不把收件人放在 To 或者 Cc 裡面,但是正文裡來個@,以為這是微博呢,親?當然公司的行政發的通知除外,所以要把重要人物(CEO,部門老大,行政主管等)發的郵件單獨列出來。
怎麼把不同優先順序的郵件分出來?郵件規則就是幹這個的。為什麼我知道這麼多?因為我在微軟的時候就是做這個的。如何設定郵件規則?Outlook 裡面有很多介紹,我就不多說了。當然有從 Google 來的同事說只要把所有的郵件匯入到 Gmail,然後 Gmail 會自動幫你搞定,我表示還沒有得到。
Calendar/Freebusy (日曆)
這個是高階技能了,因為大多數人用不到,我也是最近才需要的。公司大了最大的表現就是會多,找人開會難,因為經常對方有別的會,時間對不上,有時候想想也挺可笑的。這種情況,經常要打很多電話,或者在微信/米聊裡面溝通才能搞定,還有臨時變卦的。
其實微軟提供了一個很好的工具,那就是日曆。首先,把自己的安排都記在日曆裡面;然後,開放許可權讓同事看到你的日程,可以只看到時間段。這樣,如果大家都這麼做,那召集大家開會的同事就可以在日曆裡面把大家都加進來,找一個大家都有空的時間段。這個技能只適用於伺服器是 Exchange Server 的郵件系統。
我現在所有的安排都放在日曆裡面,不論工作有關還是無關的,連理髮和踢球什麼的都有,還養成了一個習慣,只要不在日曆裡面的都會自動忘掉,所以一件事沒有放在日曆裡面的時候就很焦慮,還要手機就在旁邊,加起來很方便。公司外面的人要和我約一個會,打電話的比較多,但我都會提醒對方通過郵件發一個 Meeting Request 過來,這樣方便大家都記住時間,大多數時候從語氣來看我謹慎懷疑對方並不用日曆。
以前 MIUI 並沒有好好做日曆,原因是統計表明我國人民根本不用日曆,使用率非常低。現在好像開始發力了,估計是因為我廠員工自己有需求了,做好了可以提高工作效率。
相關文章
- 在微軟學到的幾個小技能微軟
- 我在微軟8個月所學到的微軟
- 關於我學習成績的幾個小故事
- 我在Facebook學到的10個經驗
- 分享我的幾個學習故事
- Redis學習的幾個小問題Redis
- 這些年我開源的幾個小專案
- 【學習】分享幾個學習中的小問題
- 開發了幾個小程式後,說說我對小程式的看法
- 我們能從庫克身上學到的幾條領導理念
- 「讀懂原始碼系列2」我從 lodash 原始碼中學到的幾個知識點原始碼
- 在ThoughtWorks工作這幾年我學到了什麼?
- 微軟小冰:那個胖胖的羅叔叔 別欺負我跟姐姐微軟
- 我在蘋果公司學到的程式設計技巧蘋果程式設計
- 倫敦大學學院:睡眠會在最初的幾個小時內重置大腦連線
- 在實戰中學習 JavaScript 的幾個工具JavaScript
- 幾個小 trick
- 我做自由開發者學到的 4 個教訓
- 伺服器資料修復的幾個技能伺服器
- Java程式設計師在2021年必須學習的幾項技能。Java程式設計師
- 我初學,請教幾個驅動的問題。(轉)
- 在AIX系統中安裝Oracle的幾個小問題AIOracle
- 微軟C# 8.0中的幾個特性微軟C#
- 我在開發第一個Swift App過程中學到的四件事SwiftAPP
- 幾個 Haskell 小程式Haskell
- 在我眼裡的幾種語言
- 區塊鏈的幾個小故事.小白學區塊鏈01區塊鏈
- 我就想知道到底有幾個程式在執行
- Swift開發的幾個小技巧Swift
- 幾個專案管理的小故事專案管理
- 幾個常用的Ajax庫小節
- (轉)我在北京工作這幾年 – 一個軟體工程師的反省軟體工程工程師
- Shell 小技能
- 微信小程式學習:audio元件發現的幾個問題微信小程式元件
- 我在程式設計20年中學到的5件事 - DaedTech程式設計
- Ruby在微軟的兩個亮點微軟
- 兩個寶藏|關於我在github上衝浪時的一個小技巧。Github
- 深入 TypeScript – 2( 幾個常用的小技巧)TypeScript