加入爱奇艺的时间不长,但我感受到的震撼却不小。在外企打拼了十几个春秋,今年终于有机会进入一家国内顶尖的互联网企业,真真切切地有一番不太一样的体验。

不过,我今天并不想说在外企工作与国内企业的差别。目前,我负责“爱奇艺PPS影音”PC客户端软件的研发。也许有人会有疑问:怎么还在做PC软件?大家不都一窝蜂似的转去做移动开发了吗?然而,大家要明白的是,虽然PC行业已经风光不再,但PC饱有的体量仍然是巨大的,并且PC自有其不可替代的价值;PC软件还要继续做,今天我想说一说的是,怎样以互联网思维来做好客户端软件。

说起互联网,大家自然便会想起网站。(顺便提一下,爱奇艺就是以网站起家的;现如今,爱奇艺的服务已经覆盖包括PC、MAC、手机、平板、电视、机顶盒等各种终端。)想必大家也知道网站与客户端软件各有优劣吧,比如:网站可以运行在任何设备的浏览器上,不需要用户安装,也不麻烦用户升级,能在各个终端保持统一的用户体验;而相比之下,原生的客户端软件运行得更快,并且能够充分利用本地资源为用户带来更加强劲、炫目的功能。(推荐阅读Jeff Atwood的一篇博文:App会取代网站吗?)我们的客户端软件是用C++写的,性能自然不必多说。而我们公司的互联网基因,也促使我们把网站的众多优点融合进了客户端软件。

先说说研发流程吧。互联网行业最大的特点就是变化快。我们求新,必须快速迭代,快速试错。网站采用的是这种开发模式,我们的客户端软件开发也可以。我们采用了Scrum敏捷开发流程——两周一次迭代,每两周发布一个版本。我们称之为“小步快跑”——把大功能拆小,分阶段实现,追求微创新。比较一下传统的软件开发模式:先制定一份详尽冗长的PRD,然后是动辄1~3个月(甚至半年)的开发周期,再加上一个较长的稳定期来修复足够多的bug,等到发布产品的时候,市场环境早就不一样了……互联网环境容不得如此慢的节奏!

上面说到了快速试错。那么,怎么试呢?又怎么知道我们是对还是错呢?这就要依赖数据啦!网站有它的先天优势,可以很方便地收集到这些数据:用户在网站上停留了多久,点了什么网页,在网页上点了什么按钮,用户使用的是什么浏览器,同时有多少人在线,访问的峰值出现在什么时间段,等等。我们在客户端里也加入了类似的投递代码。我们还有强大的数据统计和分析团队的支持,让我们对客户端软件性能以及用户行为了如指掌。我们很容易就能知道客户端软件的启动耗时、崩溃率、用户在我们客户端里看了哪些视频、播放是不是有卡顿等信息。在我们尝试做了一个新功能、但又不确定用户是否会喜欢的时候,我们也可以通过一个小渠道发布这个版本,然后在后台观察各种统计数据,以此来帮助我们决定是否应该继续开发这个功能,或者在后续迭代里需要在哪些方面做改进。

我们每两周对外发布一个版本。我们也深知,发出去的版本就像泼出去的水,也是我们未来必须背负的包袱。时间一长,客户端版本碎片化,几千万用户手上的版本多达几十种。我们固然可以通过软件自带的升级机制把最新版本的客户端送到用户手上,但出于种种原因,新版本能够做到高于90%的覆盖已经不错了,而这个数字绝对达不到100%。然而,网站却能做到。网站添加了新功能之后,一旦部署,顷刻之间就能被全世界的所有用户使用上。问题是,我们怎么在客户端里获得像网页那样的灵活性呢?我们的做法是,对于性能要求不高并且可能会频繁调整的部分,用HTML/JavaScript来实现,并在客户端里用内嵌浏览器打开这些网页;而对于性能要求高的部分,坚决采用我们强大的C++皮肤库来把网页本地化。一个很好的例子就是爱奇艺影视大全(http://v.iqiyi.com),在与网站保持协同的基础上,我们让它在客户端里表现出了更为卓越的性能。

在功能实现方面,我们时刻保持着一种意识:尽量不把业务逻辑在客户端里写死。否则的话,一旦业务逻辑有变,我们必须修改客户端的代码,然后再做全网升级,一来周期比较长,二来新版本也做不到100%的覆盖,结果就比较被动了。举一个VIP会员相关的例子吧。在客户端,我们有针对当前登录用户的类型来做不同会员套餐促销的需求,具体的业务逻辑是:如果当前是普通会员,则跳到白银套餐的购买页面(url1);如果当前是白银会员,则跳黄金套餐页面(url2);如果当前是黄金会员,则跳铂金套餐页面(url3)。一些经验欠缺的开发人员会把上述逻辑直接实现在客户端软件里,就像下图中左边所示的那样。遗憾的是,一旦VIP会员套餐的促销逻辑有变,比如,要改成对所有用户都推销铂金套餐,那就惨了!更灵活的实现方式应该像下图中右边那样,客户端只是调用一个相对固定的url(并带上必要的参数),而把具体的业务逻辑实现在服务器端。

当然,上面只是一个很小的例子。为了在客户端里获得足够的灵活性(不通过发布新版本就能满足业务需求),我们还给很多功能加上了云端配置。只要我们发现某些功能的用户体验不理想,随时都可以调整控制参数,甚至将其彻底关闭。我们始终牢记,我们在做的不是一个单纯、孤立的客户端软件——我们提供的是一种互联网服务。也因为如此,我们的客户端软件同时很好地支持了编辑运营(及时发布时事或专题、热门推荐、快速上线或下线节目等),以及灵活的广告策略控制。

PC软件真的没落了吗?其实不然!也许我们只是需要顺应潮流,改变一下自己的思维方式。我们相信,只要有用户存在,每个终端都是重要的。因此,即使没有聚光灯、鲜花或掌声,我们仍然在坚持不懈地努力做好产品,全心全意为我们的用户服务!

以互联网思维做好客户端软件相关推荐

  1. 产品经理常用工具 互联网产品经理常用软件及工作平台

    互联网产品经理必备的工具 http://www.yixieshi.com/it/11509.html 产品经理工具列表 http://www.masterchat.cn/topic/pm-tools/ ...

  2. 互联网产品经理常用软件及工作平台

    http://uedc.163.com/2657.html 上期书友会分享了工具,大家发信给我说希望能够写篇博文来分享,PPT还不够他们使.好吧,我再啰嗦一次.我不想和大家具体去讨论一个工具如何如何 ...

  3. 推荐一个在线创作流程图、思维导图软件—ProcessOn

    转载自 推荐一个在线创作流程图.思维导图软件-ProcessOn 最近要画流程图,破解了半天Visio2016没搞定,2016的估计都被封了,Visio收费又过贵,又不想折腾低版本的破解,所以找了个在 ...

  4. 《塑造互联网思维的企业》一一第4章 全球商务向社会化媒体的转变

    第4章 全球商务向社会化媒体的转变 塑造互联网思维的企业 社会化媒体在发达国家的广泛采用已是我们所熟知的,它在社会和全球文化产生的大范围变革中至关重要.为了完全了解其中的原因,有必要探究一下那些推动社 ...

  5. 如何用互联网思维搞定零售业

    转载自:http://www.itongji.cn/article/092335J2014.html 其实这个时代已经很难用一个词来定义了.比如大数据时代.云计算时代.社交网络时代等等.但是有一点是可 ...

  6. 互联网思维(三)——产业思维

    回溯目前的IT界的产品,按用户需求进行分类可分为: 通信类:电子邮件.微信.钉钉等 多媒体类:门户网站.抖音.网易云音乐等 游戏类:王者荣耀等 交易类产品:淘宝.京东.美团等 工具类产品:Xmind. ...

  7. 为什么用互联网思维,却做不好硬件

    作者:邹大湿 全文共 7024 字 7 图,阅读需要 15 分钟 ---- / BEGIN / ---- 提及互联网思维,大家头脑中可能会闪现很多词汇:参与感.流量.免费.爆品.迭代等等.这些年,这些 ...

  8. 铁道部官网如何体现了互联网思维?

    年关将近,12306果断成为被上与被骂的最多网站.可是你们知道12306有多努力吗? 攥着在网吧刷了三小时才抢到的无座票,你终于可以登上回家的火车了.被挤悬空的你也许没空思考,这张小小的票根上凝聚了多 ...

  9. 手机客户端软件:不拼创意 拼MONEY和执行力

    [聚杰网移动增值]手机客户端软件:不拼创意 拼MONEY和执行力 最近手机客户端软件,风起云涌,各路神仙尽显神通,越来越多的厂商开始垂涎这块市场,以占领手机终端,为未来3G做准备. 客户端的优势所在: ...

最新文章

  1. .NET领域最为流行的IOC框架之一Autofac
  2. CSS设置列表的符号
  3. python 解析器的常用options
  4. MIT Scheme 使用 Edwin
  5. 洛谷T172100 商店-贪心
  6. mysql vacuum_PostgreSQL DBA快速入门(四) - 体系架构
  7. 瑞典卡罗林斯卡医学院博士后招聘,图像流行病学和深度学习领域
  8. Mac中找不到.bash_profile则自己创建.bash_profile文件
  9. 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
  10. SQL SERVER 2014无法启动T-SQL调试的解决方法(亲自实践)
  11. 标准模块 os.stat
  12. 博弈论入门——威佐夫博弈
  13. 今日头条笔试之手串问题
  14. 生物信息学笔记03 -- 基因组序列分析 方法
  15. 死磕 Framework准没错,大把的高薪岗位等着你~
  16. 2019年北航、南大、东南、上科大及本校计算机系保研
  17. Tarjan算法附图详解(SCC)
  18. 计算机应用一级考试win10,2016年计算机一级考试试题「Windows」
  19. 如何压缩图片到500KB?怎么压缩图片到指定大小?
  20. 个人电子邮箱格式,邮箱如何绑定微信?个人邮箱签名设置

热门文章

  1. python3 MAKE_VTOUR_NORMAL_droplet.py
  2. EOS 之demux源码解析
  3. 21点双人对战和人机对战C++
  4. 基于SSM的学生会管理系统-基于ssm的社团信息管理系统-java项目
  5. java系统答辩时提问的问题,管理系统答辩论文_行政管理学答辩_计算机答辩问题...
  6. 大城市核心区步行和自行车系统规划策略
  7. Bespin Global:云MSP圈儿里的“有为青年”
  8. 基于Java+SpringBoot+Vue民宿管理系统 民宿预定系统的设计与实现
  9. Xtralogic Remote Desktop Client 远程桌面客户端体验
  10. 不合格机器人工程专业讲师笔记-230529-