11/29 微軟總部測試部門總經理 Shanku Niyogi 實務分享 - Microsoft DevDiv’s journey shipping software in the modern world
各位朋友,
上星期 (11/29) 我們舉辦了 ALM Club (ALM 尊榮俱樂部),這次邀請了一位特別來賓,來自微軟總部測試部門總經理 (Director of Test) - Shanku Niyogi 進行演講 (最下方有 Mr. Niyogi 的簡歷),並與現場技術及研發主管、IT經理進行 Q&A,雖然這個演講題目很大,叫 「Microsoft DevDiv’s journey shipping software in the modern world」,內容就是將微軟 Developer Division (DevDiv) 的 Lession & Learn 做一個分享,包括微軟自身導入敏捷開發的經驗、大型團隊的管理、QA的實務等。朋友們可能不曉得,Developer Division 就是負責微軟開發工具、開發技術及平台的研發團隊,產品包括 - Visual Studio, TFS, .NET Framework, 相關的 SDK 等,將當天活動及演講內容整理如下:
當天活動線上影片 -
1 . 微軟開發工具暨平台部門如何在快速變化的世界持續發佈軟體 (微軟 DevDiv 測試部門總經理, Director of Test - Shanku Niyogi )
2. 微軟開發工具及ALM藍圖及未來 (台灣微軟開發工具及 ALM 技術經理 - Franma Hsu)
ALM Club 活動開始 - (本活動約每季舉行一次,11/29 活動包括了跨國軟體開發主管、台灣企業 IT 主管、系統及裝置研發主管參加)
Shanku 開場 -
說明如何更快、更即時的知道 user 的 feedback (這是 Agile 的精神,Demo - Application Insight,即時的上線應用程式使用狀況)
有趣的話 (這些像繞口令的話各位聽得懂嗎?)
1. "We developed Visual Studio by Visual Studio"
2. "We used TFS to build TFS"
3. "QA team writed a testing tool to test Visual Studio, then putted it into Visual Studio"
Q&A - 現場來賓與 Shanku 的對談節錄
Q. Developer & Tester 是否會交換 Role?
A. Yes, Tester 也大都是 developer background,也會撰寫 test script 或是 unit test。並且將 Developer & Tester 安排在同一個 Team 讓他們合作更密切。(Shanku 目前為測試部門總經理,但先前也帶領過 Dev Team,可參考最下方 Bio)
Q. Technical Debt (技術債) 通常都怎麼處理,何時解決?
A. 提到 Visual Studio 2008 到 2010 版本,Technical debt 減少了 15倍,當時作法試著在每個 sprint (大部份 DevDiv 的 scrum team 為 3 週一個 sprint) 中保留一週,讓成員專心解決 debt 的問題,例如做重構或重新設計較好的架構,才不會讓 debt 愈拖愈久,就愈難解決了 (或解決的成本更高)
Q. 如何讓跨國、跨團隊進行敏捷開發?
A:
- 有些功能團隊 (feature team) 例如 C++ complier 因功能需求較固定,因此不一定是以敏捷的方式進行研發,重點是讓大家在同一個目標下前進,講一致的語言,例如提到某到新功能時,會說:「在 sprint 48 中我們所遇到的問題」,就能回顧到第48個sprint 團隊所做的事情。
- 所有 work item (user story, task, test case, bug ...) 都上 TFS,讓團隊成員的 visibility 提高 (知道大家在哪裏)
- 開發主管會看 TFS 上的 reporting,例如 bug trend 了解問題解決的狀況。
- 有些團隊 daily stand-up 使用支援 touch 的大螢幕,有些同時遠端加入 conf- call (使用 lync),方便立即更新工作事項。
Q. Release cycle 愈來愈快,如何維持一定的品質
A. Milestone of Quality - 制定重要 release 要達到的 quality 門檻 (Quality Gates),哪些門檻沒達到,是無法發佈的。
Q. 敏捷強調 get feedbacks, release often, fail eariler,若發現某個功能需求不是使用者想要的,或是有更多的改進空間,MS 是如何做的?
A. 舉一個例子 - Visual Studio 2010 開始有一功能叫 Load Test 負載壓力測試,若要產生大量的 concurrent user,需要準備多台的機器當成是 test agent,而且設定上較麻煩,我們在線上 blog 及 forum (如 User Voice網站) 收到許多使用者的 feedbacks,因此在 2013的版本,可以使用雲服務來產生大量的 concurrent user,就無需準備機器及環境。Cloud Load Testing 可參考這篇文章。
A. 另外像 User Voice 網站,會了解使用者最想要的功能,以及 Visual Studio 2013 開始,有線上 feedback的機制,在使用 IDE 的過程中有遇到問題,或是建議,可即時回報給建議。這些都是取得 users' feedback 的重要機制。
Q. DevDiv 如何進行 dogfood? (狗食,意思為自己開發的產品,自己要先試用)
A. 開發工具團隊比較特別,因為我們自己是用 Visual Studio 來開發 Visual Studio (現場笑聲),自己就是使用者,因此會選擇一部份的 RD 同仁當 pilot team,每當有新 build 要做dogfood,就需安裝它並且在日常開發工作中使用它,發現問題還要到 TFS 上提報 bug。(編註 - 這真的是自己造狗食,還得自己吃,吃完了不好吃還得繼續吃)
Q. Dev & Ops 如何合作? (這是大哉問)
A. 因現在許多產品都線上營運,以往 releae 是發佈一個可安裝的軟體,現在是發佈一個 Cloud-based 且正在營運中的系統,因此 Operation 的角色漸形重要,例如 Azure, Visual Studio Team Services (原名 Visual Studio Online),讓 Ops team 也是 Product Team 的一員,除了負責系統維運,也會參與產品研發、測試過程,早點讓營運階段可能的問題盡早呈現 (編註 - 你們團隊有 Operation backlog 嗎? 維運團隊一樣也是產品研發的一環,一樣需要不斷的改進讓 Operation 更順暢)
Q. DevDiv 中 User Story 需求如何拆解? (這是個大哉問,3句話應該無法回答,因此我試著找一些補充資料如下)
Scenario -> Value Proposition -> Experience -> Feature,如下。建議讀者可看這篇,用開發 Office Ribbon 的範例說明,如何拆解使用者需求對應到功能 (feature)。
Q. MS 內部使用 TFS 的狀況?
A. 以下為每個 Team 的 Unique Users,以及 Work Item 數量,至 2013/6月止,原始數據可參考這裏
(DevDiv 的Work Item 數量最多,自己的產品,當然要用得更多)
想了解更多 Microsoft DevDiv 的實務及心得嗎? 可以參考這本書 (第1, 2, 9章)
也可以參考我同事 - Franma 於今年敏捷開發研討會分享的內容
日期、地點 | 研討會主題 | 節次 | 講師 | 下載項目 |
2013/06/20台北集思台大國際中心 | 第一屆台灣敏捷國際研討會 | 微軟如何進行敏捷開發實務案例 及 Team Foundation Server 應用 | 台灣微軟 / 徐鈞安 |
Bio - Shanku Niyogi, Director of Test - Microsoft DevDiv
leads the team responsible for testing the next generation of Microsoft’s developer tools, including the Visual Studio product line and the .NET Framework.
Most recently, as Director of Program Management, Shanku led the design team for Visual Studio Pro and Express, developer tools for platforms such as Windows, Office, and Azure, and managed and JavaScript programming languages.
Shanku joined the Visual Studio leadership team as GM in 2008, and delivered the first set of Visual Studio tools for Azure, and the Chakra Javascript runtime in Internet Explorer. Previously, Shanku had been a part of the .NET Developer Platform organization for nearly seven years, where he helped ship several version of ASP.NET, and helped incubate technologies such as ASP.NET AJAX, ASP.NET MVC, WCF RIA Services for Silverlight, and ASP.NET Mobile Controls. Shanku has been with Microsoft since 2008. Shanku holds a Bachelor of Mathematics degree in Computer Science from the University of Waterloo.