1. 程式人生 > >在微軟的八個月裡,我學到了這些

在微軟的八個月裡,我學到了這些

---注:轉這篇文章不是心裡上找平衡(不過確實也平衡了一些,人性啊尷尬),更重要的是基本上寫出了我在公司的感受,但是我卻沒有總結出來。驚醒,更多的是激勵,改變不了別人,自己可以改變。轉此篇,時刻提醒自己。

原文如下:

兩年前的今天,剛從大學畢業的我在Microsoft Windows Azure部門開始了我的實習生工作,在那個團隊裡度過了八個月。

我決定把在這八個月的工作當中所學到的東西做一個總結。這可能聽起來像是很糟糕的工作,事實上不是那樣的。我學到了在某種程度上,一個人看待問題要站在公司的角度,大部分的問題根本不是公司的問題。每個公司都有自己的問題,我並不是在這裡怨天尤人,這些純粹是我在大學裡沒有意識到的重要課程(期望和現實的反差)。

下面請閱讀:

期望企業裡沒有檔案。我在公司看到的大部分知識傳送是通過交談和實踐會議,知識庫某些部位的產生只是通過電子郵件,而且不會被永久儲存,這就能夠避免資訊流進入數字世界裡。一旦離職沒有人可以繼續他的工作,但是這在微軟竟然是可以被接受的。(並不是沒關係)如果這是我自己的公司,我肯定會讓他在開發的過程中寫一堆wiki來保證有備案。

你做什麼事並不重要,重要的是你在推銷什麼。你可以花數日來製作更好的程式碼庫,寫更多的健康程式碼,修補其他的錯誤。但只要沒有大的業務影響你就沒辦法出售它,這就意味著它一文不值。沒人會因為你在他們的核心裡有固定軟體開發模式或在架構上有研究而欣賞你,事實上他們對你根本不服氣。當我還是學生的時候我並沒有意識到這些。

並不是每個人都對工程學有熱情。你不要一直和別人一起滿腔熱忱的製造美妙的軟體,想寫出更好的程式碼也不是當務之急。通常人們還有很多其他事要做(比如家庭和孩子)。總之我已經知道了,別期望著每個人都是熱情洋溢的。

一天花2-3小時程式設計就很不錯了。在接手這項工作之前,我每天能花8-10小時來為我的個人專案編碼,但是在微軟這種工作環境裡,幾乎抽不出2小時來編碼。我花了大部分時間試著想出其他人是怎樣完成非註釋/非檔案的程式碼工作,怎樣調節除工作以外的事情,並出席每天的會議。很顯然,不僅僅是我有這樣的困惑,一個團隊很可能幾天都沒有人向原始碼控制提交訊號任務。

不回饋技術社群是很正常的。我在我的組織裡幾乎沒看到任何一個部落格或開源開發者願意奉獻他們的時間來回饋組織,每個人都熱愛在搜尋結果裡找到Stack Overflow答案,但沒人願意貢獻出那些答案,我現在能理解了。

這裡對外界的瞭解知之甚少。我敢打賭,你每天看的那些最新的技術和工具書本都是在部落格,Reddit或者Hacker News上。這種情況在這裡卻不那麼普遍,令我驚奇的是,我在Windows Azure團隊裡遇到的人當中沒一個聽過他們的直接競爭對手Heroku和Rackspace。這也能理解,並不是每個人都要知道這些。

在公司裡完成任務是最重要的。如果你的經理需要一個正在做的按鈕,沒人關心你弄得亂七八糟,只要功能齊全就行了。在學校裡我以為程式碼質量和結果是一樣重要的,結果證明我錯了。

複製黏貼程式碼也行得通。如果有人看到你在公司外面複製黏貼程式碼,那麼你肯定免不了吃拳頭。我見過原始檔複製黏貼貫穿整個專案,只要它最後能完成任務就行了(就像上面提到的),沒人關心你是否創造了一個不可維護的程式碼。

程式碼審查可以被跳過。為了敏捷性,程式碼審查可以被跳過。這也是我的團隊文化的一部分,如果你把別人的程式碼搞得一團糟,那麼程式碼審查就會被髮送出去。通常情況下它是不會停下來的,你可以等一段時間直到它的爆鳴聲引起別人的注意,可能會有人回覆。

最新軟體。並不是這裡的每個人都喜歡最新版本的軟體。差不多90%的同事使用 Office、Windows、Visual Studio 和.NET Framework的老版本。一個普遍觀點就是最新版本會打破現存的工作流程。這可能是同樣的原因為什麼一些企業任然在Java 1.3-1.5上執行軟體。所以我明白了在這樣的工作環境裡不要指望最新軟體了。

你的專長通常情況下無用武之地。每年有上千名大學畢業生被企業錄用,並常常被隨機分配到一個團隊(1.5年內不能改變)。不管你是否已經掌握了MongoDB,創造了iOS 開發,還是Apache committer,亦或製作了屬於你自己的Web庫,設計了使用者介面等等。你被僱傭就是去做那些需要被做的事,我不希望那樣,因為在企業很難找到和你的愛好相匹配的工作。

最後,在大學的時候我沒意識到這個事實:你為你的老闆做事的同時也是為了錢而工作。