当前位置: 首页 > 科技观察

以互联网思维做好客户端软件

时间:2023-03-17 15:02:24 科技观察

加入爱奇艺虽然时间不长,但我感受到的震撼不小。在外企打拼了十几年,今年终于有机会加入国内一家知名的互联网公司,真是不一样的体验。不过,今天我不想谈在外企工作和在国内公司工作的区别。目前负责《爱奇艺PPS视讯》PC端软件的研发工作。可能有人会有疑问:为什么你还在做PC软件?大家不是一窝蜂的转向了移动开发吗?不过,大家需要明白的是,虽然PC行业不再繁荣,但PC的体量依然巨大,PC有其不可替代的价值;PC软件还会继续发展,今天我想说的是如何用互联网思维把客户端软件做好。说起互联网,大家自然会想到网站。(顺带一提,爱奇艺是从网站起家的,现在爱奇艺的服务已经覆盖PC、MAC、手机、平板、电视、机顶盒等各种终端)想必大家都知道,网站和客户端各个软件都有它的优点和缺点。例如网站可以运行在任何设备的浏览器上,不需要用户安装,不麻烦用户升级,可以在各个终端上保持统一的用户体验;相比之下,原生客户端客户端软件运行速度更快,可以充分利用本地资源,为用户带来更强大、更炫的功能。(推荐阅读JeffAtwood的一篇博文:App会取代网站吗?)我们的客户端软件是用C++编写的,性能自然不用多说。而我们公司的互联网基因也促使我们将网站的诸多优势融入到客户端软件中。先说一下开发过程吧。互联网行业最大的特点就是变化快。我们追求创新,要快速迭代,快速尝试,快速犯错。网站采用这种开发方式,我们的客户端软件开发也是可以的。我们采用了Scrum敏捷开发流程——每两周迭代一次,每两周发布一次。我们称之为“小步快跑”——把大功能分解成小功能,分阶段实施,追求微创新。对比传统的软件开发模式:先制定详细而冗长的PRD,然后是1到3个月(甚至半年)的开发周期,再加上更长的稳定期来修复足够多的bug,等到产品发布时,市场环境早就不一样了……互联网环境不能容忍这么慢的节奏!上面提到的快速试验和错误。那么,如何尝试呢?我们怎么知道我们是对还是错?这要看数据!网站有它先天的优势,可以很容易的收集到这些数据:用户在网站上停留了多长时间,点击了什么网页,点击了网页上的什么按钮,用户使用的是什么浏览器,有多少人在线同时,访问高峰出现在什么时间段,等等。我们还在客户端中添加了类似的交付代码。我们还有强大的数据统计和分析团队支持,让我们对客户端软件的性能和用户行为了如指掌。我们可以很容易地知道客户端软件的启动时间,崩溃率,用户在我们的客户端观看了哪些视频,播放是否有延迟等信息。当我们尝试做一个新功能但不确定用户是否会喜欢时,我们也可以通过一个小渠道发布这个版本,然后在后台观察各种统计数据来帮助我们决定是否继续开发这个功能,或者在后续的迭代中需要改进哪些方面。我们每两周发布一个版本。我们也知道,发出来的版本就像倒水一样,也是我们以后必须背负的包袱。随着时间的推移,客户端版本变得碎片化,数以千万计的用户有几十个版本。当然,我们可以通过软件自带的升级机制,将最新版本的客户端发送给用户,但由于种种原因,新版本能达到90%以上的覆盖率已经不错了,这个数字绝对小于100%。但是,网站可以。为网站添加新功能后,一旦部署,全球所有用户都可以瞬间使用。问题是,我们如何在客户端中获得与Web相同的灵活性?我们的做法是用HTML/JavaScript实现对性能要求不高,可能经常调整的部分,在客户端使用嵌入式浏览器打开这些网页;对于性能要求高的部分,我们坚定地使用我们强大的C++皮肤库来本地化网页。一个很好的例子是爱奇艺影视大全(http://v.iqiyi.com)。在与网站保持协调的基础上,让它在客户端展现出更优异的性能。在功能实现上,我们始终保持一个意识:尽量不要在客户端硬编码业务逻辑。否则,一旦业务逻辑发生变化,我们就不得不修改客户端的代码,进而升级整个网络。一是周期比较长,二是新版本不能做到100%覆盖,结果比较被动。举一个与VIP会员相关的例子。在客户端,我们有需要根据当前登录用户的类型推广不同的会员套餐。具体业务逻辑为:若当前会员为普通会员,则跳转到银包购买页面(url1);如果当前会员是银卡会员,则跳转到金卡套餐页面(url2);如果您目前是黄金会员,请跳转到白金套餐页面(url3)。一些没有经验的开发者会直接在客户端软件中实现上述逻辑,如下图左侧所示。可惜一旦VIP会员套餐的推广逻辑发生变化,比如改成面向所有用户推广白金套餐,那就惨了!更灵活的实现方式应该是像下图右边的那样。客户端只是调用一个相对固定的url(带有必要的参数),在服务端实现具体的业务逻辑。当然,以上只是一个小例子。为了在客户端获得足够的灵活性(在不发布新版本的情况下满足业务需求),我们还为许多功能添加了云配置。只要我们发现某些功能的用户体验不理想,我们可以随时调整控制参数,甚至完全关闭。我们始终牢记,我们所做的不是简单的、孤立的客户端软件——我们提供的是互联网服务。正因为如此,我们的客户端软件还支持编辑操作(及时发布时事或专题、热门推荐、快速在线或离线节目等),以及灵活的广告策略控制。PC软件真的死了吗?其实并不是!也许我们只需要赶上潮流并改变我们的思维方式。我们相信,只要有用户,每个端点都很重要。所以,即使没有聚光灯,没有鲜花,没有掌声,我们依然在不懈努力,做好产品,全心全意为用户服务!