本文粗略記述了UWP團隊從接手新浪微博項目到發布第一版的過程。本文不是技術貼,而是回顧“軟件工程周期失控是一種怎樣的體驗”。
接手新項目:撿了個大便宜
2016年1月份,UWP team開始接手新浪微博項目。前一個研發團隊的最后一名員工計划於1月底離開項目組,我們需要在此之前完成技術交接工作。經過幾輪討論,項目狀態很快搞清楚了:東西已經做“差不多了”,把幾個基本問題改掉就可以發布了。我們立馬有一種撿了大便宜的感覺:別人辛辛苦苦做得產品,居然留給我來發布!
懷着撿了便宜的激動心情,我們很快進入狀態。按照老板的要求:1個研發人員1個月內提交第一版。我們1月19號創建了新的代碼分支,之后熟悉代碼、編譯過程、安裝調試環境,按照前同事的建議改進、完善,然后回家過春節。。。
在這期間主要對軟件啟動做了一下性能優化,我們特意找了一個配置很差的手機(工程機)來測試Debug版本的啟動時間,經過一系列優化之后,啟動時間從1月25日的14.64秒縮減到了2月19日的7.97秒。(4月25日發布版本在950XL上的啟動時間是2.35秒)
附:1月25日debug版本的啟動時間(工程機)
附:2月19日debug版本的啟動時間(工程機)
第一次提測:丟人丟到家
春節回來就是2月中旬了,我們把之前團隊建議的幾個“未完成項”都完善了之后,2月23日打包提交測試,提測日期比老板的要求晚了幾天。在等測試結果期間,我們還在不斷地熟悉代碼和整個產品。測試組3月2日提交了部分測試報告,說產品不滿足發布狀態。經過一番折騰,測試組3月4日提供了完整的測試報告:測試中發現了44個bug,其中A、B、C類(必須修復)bug共19個。
這樣的結果印證了老板春節前留下的那句明智的話(老板說完就去美國了):不要高興得太早,如果真是“差不多了”的話,為什么前一個團隊不多干幾天把版本發出去再閃呢。Weibo UWP 從來沒有在手機端全面測試過, 這里面的問題一定非常多。
教訓1:研發說“到目前為止沒有發現問題”不等於真的沒有問題,可能只是因為沒有跑過Full test而已。
看到測試報告的那一刻,當初撿便宜的心情瞬間就消失的無影無蹤了,取而代之的是慚愧。作為微軟的軟件工程師,把帶有這么多bug(事后證明遠不止這么多)的半成品提交給測試組,真的是一件很丟臉的事。更丟臉的是,其中三分之一的bug我們都不知道在說什么,因為接手項目時間太短,之前把大部分時間都花在了已知的需要改進的幾個問題,還沒有來得及熟悉整個產品,以至於一些bug中提到的功能頁面都找不到。
教訓2:對於新接手的項目,在完全熟悉產品和代碼之前不要自以為是地敲定發布計划,否則請准備好被打臉。
附:第一次提測的bug list
打回重做:知恥而后勇
慚愧歸慚愧,事情還是要繼續做的。因為之前用新浪微博只是看一下首頁和消息頁面,很少切換到其他頁,更不用提二級、三級頁面了。現在既然小修小補不能解決問題,大改之前要先了解整個客戶端產品:
- 首先趕快申請加兩個Full time的研發進來,並且申請項目延期;
- 大家分工詳細了解每一個頁面,和頁面對應的邏輯;
- 對於找不到的頁面,探索怎么把它們弄出來;
- 深入了解每一個功能模塊,並且熟悉每一個操作細節。
經過一番探索之后才發現,微博客戶端的內容還是蠻多的,而且其中有相當一部分都沒有開發完。得出這個結論后,我們只好放棄了“盡快發布一版給WinPhone10用戶”的想法,把新浪微博作為一個長期項目來做。之前計划在“差不多了”的基礎上,1個人1個月就把第一個版本發出去;調整計划了之后,3個人再延期兩個月才把第一版發出去了。
教訓3: 功能“差不多了”不等於產品“差不多了”。你花了4個月時間做了80%的功能,並不意味着1個月后就可以發布了。剩下20%的開發和產品完善的工作可能又要4個月。
在之后不斷熟悉新浪微博客戶端的過程中,除了解決測試報告里的44個bug之外,我們自己還發現了大量隱藏的bug,其中有記錄的有50個左右,沒有記錄的小問題就更多了。前前后后加起來,總共解決了100多個bug之后才達到了我們自己認為比較滿意的狀態。
附:研發組自測的部分bug list
第二次提測:一波三折
在解決了100多個bug和兩輪自測之后,我們在3月29日第二次提交了發布包給測試組。4月15日,測試組完成測試並提交了測試報告,其中沒有A、B類bug,C類bug7個。到這時候我們心里有底了:這次才是真的“差不多了”。
教訓4:如果研發說“差不多了”,你就當他什么都沒說。測試報告說“差不多了”才是真的差不多了。
研發組迅速解決了所有C類bug,並在下一個工作日(4月18日 星期一)提交了新的安裝包。在新一輪測試中,我們發現了一些以前從沒遇到過的、很詭異的問題。其中情況最復雜的是私信頁面的一個bug:
1) 在項目交接之前,私信頁面上拉加載更多時,部分私信會重復出現;
2) 2月19日,研發組解決了1)中提到的問題,之后很長時間沒有發現私信重復的問題;
3) 3月4日,測試組提交的測試報告中所附的44個bug里面,沒有提到“私信列表重復”的問題;
4) 4月15日,測試組的第二輪測試報告提交7個C級bug中提到私信重復的問題
5) 4月15日,研發組調試時發現私信頁面上拉時,前20條私信無限循環加載;
6) 4月15日晚,研發組解決了5)中提到的私信無限循環加載的問題;
7) 4月17日,私信循環加載的問題再次出現,重新安裝新版本后消失,未來得及確認私信重復的規律,也無法確認復現問題的版本是fix之前還是fix之后的版本;
8) 4月18日,反復測試新版本私信列表未發現異常,研發組再次發包提測;
9) 4月19日,接到測試組的測試反饋提到“私信列表仍然重復”;
10) 4月19日19:30左右,研發組在自測中發現新的私信重復模式:前20條私信重復加載兩遍,其他部分正常;
11) 4月19日20:00左右,研發人員回公司啟動調試環境后發現9)中提到的問題自行消失,反復嘗試仍然無法重現,也無法調試。
相信所有研發對很難重現的問題都會頭疼。根據之前的經驗,我們懷疑這個bug是和服務端相關的(大部分時間工作正常。一旦出問題時,所有手機的客戶端都會發現同樣的問題)。最后我們決定:在開發環境里面反復測試每一個詭異的bug,一旦發現問題立即跟蹤調試並解決問題;如果連續測試12小時仍然無法重現的話,我們認為該問題對實際用戶影響很小,不影響發布版本。
在反復測試的過程中,有一些bug在開發環境中被重現並解決了。其他問題經反復試驗無法重現,降低優先級后留到以后解決。
正式發布:鮮花和雞蛋
4月25日,新浪微博WinPhone UWP客戶端終於提交到了應用商店。收到了很多正反饋,當然也有一堆罵的,在這里就不貼圖了。
下一個版本
在接手這個項目的時候,我們接到的指示是“不添加新功能,盡快把已有功能完善后發布出去”。但在實際開發的過程中,我們發現現有的版本還缺失很多重要的功能:比如搜索功能、視頻的橫屏模式、夜間模式等。這些都已經被列入了下一個版本的開發計划中,請各位耐心等待下一版本的發布(會很快)。
另外,各位有什么功能需求可以直接在評論區留言,我們會定期查看並篩選一些需求添加到下一版的開發計划中。
致謝
感謝新浪微博相關部門/個人的協作並最終促成了產品的發布。尤其感謝研發組的技術支持,感謝測試組把UWP提到主線產品的優先級進行測試,感謝產品經理的多方溝通和配合。
感謝新浪微博商務和微軟商務促成本次合作。當前的版本還有很多不足,我們會持續發布更新版本,盡快提升產品的用戶體驗。