本文粗略记述了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提到主线产品的优先级进行测试,感谢产品经理的多方沟通和配合。

感谢新浪微博商务和微软商务促成本次合作。当前的版本还有很多不足,我们会持续发布更新版本,尽快提升产品的用户体验。

从“差不多了”到 正式发布 -- 新浪微博WinPhone UWP版诞生记的更多相关文章

  1. 新浪微博UWP版-实现‘分享功能’的艰难路

    索引 介绍 遇到的问题 寻求帮助 最终的解决方案 最终效果 介绍 在整个Team的共同努力下,在众多WPer的期待下,Weibo UWP版终于正式发布了.有关Weibo UWP版更多的信息请大家参考这 ...

  2. 剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记

    前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是 ...

  3. 【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。

    目录 说明 功能 截图+视频 关于源码和声明 说明 陆陆续续大概花了一个月的时间,APP算是基本完成了.12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我 ...

  4. 【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析

    目录 说明 使用Fiddler分析android版API 部分效果图 关于源码 说明 在做博客园UWP版的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下An ...

  5. 必应词典UWP版-开发小结

    摘要 必应词典UWP版已经上线2周了!相信有不少用户都已经体验过了吧!得益于Win10全新.强大的API,新版词典在性能上.UI体验上都有了大幅的提升,今天,小编就为大家讲讲必应词典UWP开发的故事. ...

  6. Win10通用程序 UWP版HtmlAgilityPack UWP应用使用示例

    Win10 UWP版HtmlAgilityPack,UWP应用使用示例下载. Win10 发布了一个多星期,sdk是随着一起发布的,我安装好vs2015和sdk 开发UWP 通用程序. 在做网络解析的 ...

  7. 由 UWP 版网易云音乐闪退引发的博文

    今天,不知怎么的.网易云音乐出现了一打开就闪退的情况.百度了好些时候未果,就直接 Windows + i 打开 Windows 设置 > 应用 在应用和功能列表中找到网易云音乐,在展开的 高级选 ...

  8. 聊聊大麦网UWP版的首页顶部图片联动效果的实现方法

    随着Windows10的发布,国内已经有越来越多的厂商上架了自家的通用应用程序客户端,比如QQ.微博.大麦等.所实话,他们设计的确实很好,很符合Windows10 的设计风格和产品理念,而对于开发者而 ...

  9. 《芒果TV》UWP版利用Windows10通用平台特性,率先支持Xbox One平台

    在Windows开发者中心开放提交Xbox平台应用之后,<芒果TV>UWP版迅速更新v3.1.2版,通过升级兼容目标,利用Windows10通用平台特性,率先覆盖Xbox平台用户. 芒果T ...

随机推荐

  1. 电脑运行msi安装包提示the error code is 2503/2502如何解决

    当在电脑中运行msi安装包时,出现the error code is 2503或者2502错误提示,其实是由于没有运行的权限导致的,但是又不能右击以管理员身份运行,那么应该如何操作呢?对于这样的问题, ...

  2. 【转载】VS2012的打包方法

    上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...

  3. 一个简单的消息提示jquery插件

    最近在工作中写了一个jquery插件,效果如下: 就是一个简单的提示消息的一个东西,支持最大化.最小化.关闭.自定义速度.自定义点击事件,数据有ajax请求和本地数据两种形式.还有不完善的地方,只做了 ...

  4. Maven 命令

    win7环境下,Maven跳过测试编译项目的命令: 首先,在cmd环境下执行cd命令移动到需要编译的项目的home目录,然后执行命令:mvn    install -Dmaven.test.skip= ...

  5. 华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

    本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12(联通版)救砖包[适用于无限重启]说明: 1.本工具包用于华为荣耀6 H60-L02(联通版): ...

  6. DFS序+线段树 hihoCoder 1381 Little Y's Tree(树的连通块的直径和)

    题目链接 #1381 : Little Y's Tree 时间限制:24000ms 单点时限:4000ms 内存限制:512MB 描述 小Y有一棵n个节点的树,每条边都有正的边权. 小J有q个询问,每 ...

  7. 【翻译svg教程 】svg 的坐标系统

    http://tutorials.jenkov.com/svg/svg-coordinate-system.html svg的坐标系统(和大多数计算机绘图的坐标系统)和数学中绘图系统有点不一样 数学/ ...

  8. [BZOJ4200][Noi2015]小园丁与老司机

    4200: [Noi2015]小园丁与老司机 Time Limit: 20 Sec  Memory Limit: 512 MBSec  Special JudgeSubmit: 106  Solved ...

  9. db2循环

    db2普通循环结构 while循环 while 条件 do 循环体 end while; LOOP循环 SET V_INDEX = 0; AUTHLOOP: LOOP V_INDEXV_INDEX = ...

  10. WPF-开机自启

    #region 开机自启 /// <summary> /// 开机自启创建 /// </summary> /// <param name="exeName&qu ...