这些情况我们并不能准确地知道。因此,互联网产品的需求,并不能通过几个月的用户调研、市场调查、产品规划就能弄清楚,何况互联网的用户群体本身也处于飞速的动态发展之中。
那么,这种情况下如何发展我们的产品?如何对各种可能的产品特性做选择?用户将是最好的指南针,迅速让产品去感应用户需求,不断地升级进化,推陈出新,才是保持领先的唯一方式。要不断地倾听用户的反馈,不断地调整修改,然后决定你后面的方向。
以稳定迭代,小步快跑
此种方式看似简单,但其实对团队的综合研发能力是一个巨大的挑战。其中主要挑战来自以下几个方面。
以特性为中心,随做随发
反馈及时,响应快速
做到产品的快速发布只是第一步,其根本目的就是让用户尽快用到新功能,尽快得到用户反馈信息,以便及时地对产品开发做调整。所以,一个产品团队能否快速获取用户反馈、是否真正重视反馈并及时作出响应非常重要。经历了12年互联网的摸爬滚打,我们非常重视来自用户的反馈意见,并不断改进产品,积累了丰富的交付经验。
建设用户反馈渠道
首先,要解决如何搜集用户反馈的问题,满足不同用户习惯,提供多种方式的反馈渠道,让反馈及时得到。用户可以通过不同的渠道对使用的产品进行问题反馈,提出意见和建议。
重视反馈,快速响应
注重数据运营,有数据才有真相
无论事前经过多么细致的调研、多么缜密的规划,对于产品经理来说,一个新特性的发布,仍然是一个提心吊胆的经历:特性被用户的接受程度如何,用户将如何使用,新特性给产品带来了怎样的拉动或抑制,哪些特性可能存在交互、易用性、稳定性等问题。要想回答这些问题都很困难。
图2连续运营数据分析示例
快需要创新、需要实力
客户端Web化技术:像B/S系统一样的开发方式和发布周期
有人会问:客户端的产品发布能快得起来吗?我们能做到让客户端像Web一样敏捷吗?答案是肯定的,我们的客户端微内核懒加载架构,将客户端Web化技术做到了像Web一样开发客户端产品。
整个架构由客户端的微内核、插件版本控制服务器和资源下载服务器构成,如图3所示。
微内核简要介绍如下。
客户端的简要启动运行流程如下。
同时,通过微内核懒加载架构还能做到特性即插即用,使产品灵活稳定。组件之间被强行解耦,大大降低了依赖性在联调、测试、系统集成方面带来的工作难度。由于每个组件都可以被独立下载,在客户端加载运行,这也就意味着发布风险的降低、效率的提升。
面向特性的竖向架构:以特性为开发粒度,提升开发效率
传统的产品技术架构多为横向的分层结构,而每一层又习惯于分配给不同的人来负责。这直接带来的一个问题是,我们以特性为粒度进行开发、联调、测试时会因为人员耦合、层耦合带来复杂性、引入风险。
图4传统的横向分层产品技术架构
这样的方式,使得面向特性的开发模式得以强制化,从而提升了效率,加快了节奏。
图5竖向产品技术架构
Scrum敏捷开发:发扬光大
CI:持续集成,快速体验
CI在产品开发、测试阶段提升自动化效率方面非常有效。目前我们CI的发展水平还参差不齐,但从起初的自动编译已逐步加入了静态代码检测、单元测试、自动化部署等更多内容,开始为更多的研发团队所青睐。
图6腾讯的Scrum敏捷开发
作为加快产品发布的能力,CI在以下几个方面作用明显。
灰度发布:提升发布的频率,降低发布风险
在互联网行业,灰度发布已经成为最重要的发布控制手段。有时我们希望通过向小部分用户开发新功能,让他们先来体验新功能、新特性。通过用户反馈、数据运营的手段及早获得反馈,及时改进。以此方式,既可以降低发布风险,也可以提升发布频率,加快发布节奏。
总结
快是一种追求、一种习惯,更是一种能力,这种能力需要产品、技术、运营、研发管理多方面的支撑才能够快得起来。这样的快,就像是中国的高铁,在高速的行驶中还必须让你感到安全、舒适、服务、便利。