在微軟開發軟體的幾個重要專業

2021-04-15 20:21:14 字數 2866 閱讀 2927

過去幾個月,我先後在中國數家知名大學舉行了講座,並會見了多位致力於資料平台研究的學術領頭人和學生。我還在一些業界會議上發言,與使用者、合作夥伴、分析師和其他同行會面。這些會議涉及了多個議題,例如,日新月異的科技發展趨勢,異地分布式軟體開發,以及亞洲的蓬勃發展。但有乙個議題似乎得到了最大的關注——微軟是如何組織和進行產品開發的?我想這很自然,微軟是全球最成功的軟體公司之一,而亞洲軟體行業正經歷其自身的飛速發展,因此業內人士迫切地希望了解我們過去20多年的經驗也就在情理之中了。

「微軟是如何組織和進行產品開發」其實是乙個很大的題目。在微軟內部我們有乙個卓越軟體工程團隊,主要為員工提供為期數日的課程,內容涉及微軟軟體開發方法概述、工程系統、組織架構、最佳實施辦法,以及用以保證產品質量、可靠性及安全性的內部工具和技術等等。這並不意味著我們的體系已經十全十美,但我們的確積累了很多知識和經驗可以與大家分享。實際上,我們也在以適當的方式與全球(包括亞洲)同行分享這些成功。

因為這是乙個大題目,我想在這篇文章裡著重介紹我們工程系統中的乙個方面,即我們研發團隊的核心專業和每個專業在產品開發中所扮演的角色。因為我相信微軟在這一方面的做法不同於我們的同行(即使在美國也是如此),尤其在中國,目前業界還沒有充分理解這些核心專業及其所扮演的角色。

微軟的工程體系一直由三個核心專業組成:開發(development)、測試(test)和專案管理(program management),英文簡稱分別為dev、test和pm。在此,我將以另乙個順序作簡單介紹:

pm

提及軟體專業時,大多數人都馬上想到dev。但是對我來說,一切則從專案管理開始。在微軟,pm意味著很多事情,對我而言,這個角色主要意味兩件事:

了解使用者的需求,並將其轉換為用於開發的功能說明(functional specification)。這是一切的開始,如果我們無法理解使用者,我們就不能開發出合適的產品。

協調dev和test,將最初的功能說明轉變成真正的產品。

我發現很多人,特別是在中國,一聽到pm就認為這是project management。事實上,這僅是pm工作的一部分(上述第2點)。pm真正的技能在於傾聽使用者並從他們的角度理解問題,然後設計出解決問題的方案。這並不意味著簡單地為使用者提供他們所需要的,而是在真正理解需求後設計最好的解決方案,即使這是連使用者自己都從未想到的解決方案。常言道,如果我們一味地遵循使用者的要求而只是去找尋一匹更快的馬匹,那麼汽車永遠也不會誕生。

dev

三個專業中,dev可能總是人們知道得最多的。他們負責實際設計和開發軟體產品。dev 的主要工作是實現pm制定的功能說明。在系統級的、關鍵任務級的軟體世界裡,這個實現應該極為可靠、安全、 便於管理、 可以擴充套件和高效能。dev的設計和功能實現應經得起時間的考驗,並在未來版本中得到重用。

test

外界對微軟測試工程師存在許多誤解,內部有時也存在這個問題。多年前我剛進入微軟時,我(愉快而)驚奇地發現在微軟tester的人數幾乎和developer同樣多。在我之前服務的公司,測試人員要少很多(當然產品的質量會相對薄弱),因此在微軟工作了一段時間後,我才真正了解測試專業的本質。在微軟,我們何時可以發布產品並不取決於我們何時完成產品的設計和實現,而是取決於我們何時能完成產品測試。因為我們所發布的每個產品,尤其是系統型別的軟體,必須通過乙個極高的質量標準。測試專業的確是乙個非常複雜的領域,乙個test必須花好幾年時間才能掌握悟我們所應用的測試種類——單元測試、功能測試、整合測試、壓力和遠距測試、效能測試、安全性測試,以及本地化測試等。我們在測試中運且用的一整套工具和技術的複雜性令人印象深刻——自動測試套件,自動測試生成工具,自動檢測故障分析工具,自動安全模糊測試和基於狀態機的測試。 

以上三個核心工程專業就像一張3條腿的凳子——乙個也不能少,並且需要乙個合適的工程組織保持其平衡。沒有一方可以凌駕於其他任何一方,否則這個組織就無法與客戶需求保持一致,或者無法在產品質量上下足功夫。這 3個專業類似**部門間的制衡機制,這套機制確保了我們能理解客戶需要,設計高品質產品,同時每個發布的產品都在各方面滿足顧客的期望。 

這裡需要強調的是,我們一直在招募這三個領域最優秀的人才,他們的招聘條件同樣嚴格,只是每個領域的技能和關注方面有所差異。pm通常熱衷與客戶一起構思應該設計什麼樣的產品,然後與dev和test同事協作完成所需要的產品。dev對設計高品質軟體更富有激情——產品應是革新的、簡單的、可靠的、安全的、可擴充套件的、高效能的並能經受起時間考驗。test則愛好,在我們向客戶發布產品前,竭盡所能找尋出軟體中所存在的所有問題和漏洞。

我們的面試官有一項非常重要任務,就是找出應聘人員的才能和激情所在,然後引導他們向那個方向發展。當然,在個人職業生涯中激情和才華可能發生改變,員工個人也可能因為從事的工作領域不同而有所改變——我本人就曾是從dev轉為pm。這是很自然的,我們實際上也鼓勵這種做法以構建更好的隊伍。

其他領域

除了以上三個歷來被視為微軟「核心」的專業,另外幾個專業也變得日益重要。例如,使產品使用更自然、直觀的使用者體驗專家(user experience,簡稱ux)。良好的使用者使用體驗能讓人愛上一件產品,反之則甚至可以讓使用者不願去觸碰它。使用者體驗無疑對為終端使用者設計的產品至關重要,同時對我們的開發人員、 i t專業人士以及資訊工作者而言也是如此。

當我們進入「軟體+服務」的時代,各種與構架、開發和執行極大型基礎設施的領域變得越來越重要。需要重申的是,這些曾經只存在msn和live 等網路產品開發過程的專業,現在對所有產品組都變得日益關鍵,因為他們正逐步將產品融入這個「軟體+服務」的新模式。

很多應聘人員問我在微軟什麼樣的角色更適合他們,以及如何發展他們的職業。我能想到的最好建議是在他們真正熱衷的乙個技術或角色上下功夫。正如我剛才說過,我們對所有專業同等對待,乙個均衡的組織需要在各個領域上都有突出人才。儘管不同專業需要不同專業技能和愛好的人才,但所有專業都存在創新和有所作為的機會。所有領域都提供了技術晉公升和管理晉公升的階梯。事實上,如果你留意微軟高層管理人員會發現他們中有從各種領域脫穎而出的 —— 他們的共同點是熱愛他們所從事的工作。 

初次開發軟體的心得

寒假走的比較晚,留在實驗室裡把北京文化系統專家資源系統軟體的 2.0版本做完了。體會很多,最重要的是明白了書本上的學習和實際應用的差距是如此之大,儘管已經有了一些心理準備,但還是覺得自己以前所學仍是皮毛。先說下實際專案和平時書本上東西的區別 1.篇幅 老師布置的 c語言作業題難一點的也不過四五十行 ...

ubuntu開發軟體的安裝

今天下午發現ubuntu12.04壞了,無奈只能重新安裝,建議讀者配置自己的ubuntu後備份乙個,免得壞了重新安裝,花了兩個小時才把ubuntu的交叉環境弄好,其中搭建了tptp通訊協議,還有arm linux gcc的安裝,現在筆者主要是把arm linux gcc這個編譯工具的安裝流程講解一遍...

Facebook是如何開發軟體的

facebook的工作方式讓我著迷。那是乙個非常獨特的工作氛圍,無法複製 也並不適用於其它公司 下面的是我從很多在facebook工作的朋友那裡蒐集到的關於這個公司如何開發和發布軟體的只言片語。看起來對facebook感興趣的大有人在。這個公司以程式設計師為主導的企業文化受到人們的極大關注,很多公司...