如何成功打造一款中台(PaaS)产品
现如今,很多互联网公司在向“大中台,小前台”方向靠拢,通过打造高度可用、高度可定制的中台,来支撑前台业务的快速发展、个性化功能定制。但在构建中台产品(即所谓公司级平台)的时候,如何能成功让一款产品从0到1,即,能顺利诞生,落地,并产生价值呢?这里,我们抛开技术话题,探讨在产品设计规划时要考虑的。
笔者曾经作为Team Leader负责过四次中台产品打造,一次不成功,三次成功。打造一个成功的中台产品,一方面可以提高前台业务部门的效率,减少后续开发投入,还可以通过中台产品,集成前台业务数据,达到数据集成统一接入发布,甚至能发掘潜在客户需求,也有助于对前台需求进行启发。中台成功后,可以在全公司得到重视,进而影响整个公司的技术体系,当然其中个人和团队的获益也是显而易见的;中台不成功,就是没有人用,落不了地,boss认为浪费资源,从而否定产品经理和开发团队的能力(在这儿笔者需要感叹一下,虽然网上经常说开发和产品经理是死敌,其实二者是绑在一根绳上的蚂蚱,再牛逼的开发,如果没有成功落地的产品证明自己,也是空谈技术)。笔者通过复盘总结,得到一些经验和教训,希望读者能引以为鉴、为戒。
产品诞生前,经常是源于公司前台产品出现大量重复性需求,boss希望能够进行提取抽象,做成中台产品。那么,在这个时候,需要注意遵循2-8法则,即寻找实现20%的功能,来撬动80%的需求场景。那么,具体做法是,产品经理需要收集各个业务线对于此需求的现状、短期的规划、以及未来的考虑。(在这个阶段,最好跟业务线产品经理达成一致,当我们的中台产品上线后,能够立刻接入,一个没有业务线用的中台产品是落不了地的)。通过整理总结各业务线反馈,标出该需求对业务线是否重要?商用价值是否高?未来是否需要?还是无关轻重的?然后,在这些需求中,按照2-8法则,找出撬动80%场景的那20%的功能,然后作为产品的MVP(最小可交付产品)推动实现。(一定要注意,实现尽可能少的功能,满足尽可能多价值高的业务场景)
设计和开发阶段,产品和架构师(或者主程)必须达到深入沟通,让开发深入理解到此中台产品解决业务线什么场景,核心需求是什么,产品定位是什么,未来会向哪些方向发展。MVP能解决业务线哪些场景,还有哪些场景未解决。架构师基于此,选择合适的技术架构,封装好核心,对未来的扩展留出接口。好的中台产品,往往能无限扩展,比如快速开发平台(Bei...Clou.)能做出无限多的增删改查表单列表功能、前端组件化平台(Pa..Buil...)能搭建出无穷多的页面,自动化测试框架(BAT)能实现无限多的业务线自动化测试集。那么,就需要架构师在这时,设计好中台产品的核心架构,业务线如何使用,以及针对特殊个性化需求的扩展能力。
一旦MVP上线(第一版),首先要做的不是继续增加功能满足更多的场景。而是要放慢开发脚步,转而去推动业务线进行接入。为什么呢?因为新需求的开发,势必会让中台产品变得“重”(臃肿),增加业务线或客户的使用成本,让中台代码变得复杂难以维护;而此时MVP上线,正是需要向boss和公司业务线展示产品价值的时候,而中台价值的体现,是从业务线那儿得到的,这也关系到boss是否能继续支持投入做这个产品,从而达到良性循环。如果能有多个业务线使用中台产品搭建出前台业务,那么,就可以证明中台确实能够提升开发效率,降低成本,能落地。如果一味逼开发上线新功能,往往团队看不到产品价值,有挫败感,业务线感觉不到你的存在,boss不认可从而不继续投入,导致恶行循环。。
打造明星客户作为标杆。平台上线后,想要在公司一炮走红,或者让boss一眼就能看到产品价值,认为这是个牛逼的应用,必须打造出来一个标杆产品。以在前端组件化平台(Pa..Buil...)基础上打造个性化主页(Profi..)为例,当时为了推广中台,而推出了Profi..产品。而这个产品让大家眼前一亮,进而后续各业务线产品经理(可能本来没这需求的业务线)理解Pa..Buil...的作用,进而产生把Pa..Buil...应用在自己产品内的想法。
当业务线开始试用后,势必会提出各种各样的花式需求。。此时,不管是产品还是开发,一定要有拒绝能力,能表示“这个功能暂时支撑不了”,或者通过什么方式扩展,对于业务线需求不能照单全收。要让业务线在中台的设计规范内进行扩展。不能为了实现某个业务需求,而在中台设计上“巧妙”实现,甚至hack中台产品(如果一定要做,也要明确跟业务线表示,中台升级的时候未必支持)。否则,当你的中台升级时,对于老数据的兼容会让你头疼死。
中台的开发节奏一定要慢,要“小步慢跑”,要留出时间重构代码,填平技术债,不要做过多的临时方案。产品在提出新需求前,需要考虑好对之前业务的影响,对现有各业务线的影响。别出现中台升级,前台挂掉的情况。最好有专门的人去支撑业务线对接,解答业务使用中的问题(没有的话,team leader充当也行)。
注意:
第一戒,禁止去满足业务线所有场景。。做平台的产品,一定要懂得取舍,有些功能属于平台必须提供支撑业务线nocode(拿来即用,或者通过简单配置不接触代码即可满足场景);有些功能是平台提供扩展接口让业务线轻便扩展即可;有些功能是平台不支持,需要业务线自己开发。
第二戒,明确中台产品边界,禁止把业务功能渗透到中台产品中。比如,BAT的逻辑是启动Selenium、生成报表、提供版本控制、解析运行脚本、异常封装处理,而“打开登录页面”这种代码,不能出现在BAT的产品代码中。再比如,人才VS中,加载对比项、调用业务接口获取数据、业务接口超时自动开车是人才对比的功能,而加载测评活动列表绝对不能出现在人才对比框架中。这里需要注意,不混入业务,并不是说中台产品运行时没有业务,那就失去了中台的意义了。而是,不要把业务逻辑混到中台逻辑里。简言之,中台必须跟前台严格划清界限,我的是我的,你的是你的,你的逻辑不要进入。当中台产品中,出现对业务的特殊处理,就需要反思,是不是中台产品设计的不够好,需要特殊判断才能支撑业务。
总结:
1. 规划阶段,明确业务线现有需求,提取抽象中台MVP,满足2-8法则。
2. 尽早跟业务线约定好MVP上线时间,以及业务线使用时间。
3. 设计开发阶段,跟架构师讲透产品定位、扩展点以及发展方向,架构上要明确业务如何使用,如何扩展。
4. 产品MVP上线后,要推动业务应用,让中台产品落地,不要急于扩展新功能。
5. 后续迭代,要小步慢跑,留出时间重构、填技术债、解决业务问题。
如何成功打造一款中台(PaaS)产品的更多相关文章
- 第四阶段:1.从零打造一款社区web产品
---恢复内容开始--- 熟人关系:微信 陌生人关系:微博 1.把各种竞品罗列起来形成一个分析池.分析其目标用户是哪些.这些产品满足了用户什么需求.可以从时间角度分析趋势.针对每一类竞品画一个商业模式 ...
- 第四阶段:2.从零打造一款工具APP产品
1.APP:安卓跟IOS(根据目标用户选择 ,那个先做哪个后做,APP的通过需要审核,其中也有很多技巧). 同时注意设计模版的使用(提高效率).竞品分析也是少不了的.
- 【ASP.NET程序员福利】打造一款人见人爱的ORM(二)
上一篇我已经给大家介绍AntORM的框架[ASP.NET程序员福利]打造一款人见人爱的ORM(一),今天就来着重介绍一下如何使用这套框架 1>AntORM 所有成员 如果你只想操作一种数据库,可 ...
- RethinkDB创始人教你如何打造一个伟大的互联网产品
关于作者 我叫Slava Akhmechet,本人是 RethinkDB 的创始人之一,RethinkDB是开源,分布式数据库,旨在帮助开发人员与运营商在打造实时应用时处理无结构数据 如何打造一个伟大 ...
- 如何打造一款五星级的 APP ?
移动互联网大潮来袭!据统计,2015 年平均每天有 1000 个新的应用上架,而这些应用的现状可以说是鱼龙混杂,同是每个人的眼光.品味.意识和利益都不同,因此每人眼中的应用也是不同的.在巨大的市场竞争 ...
- 【FastDFS】如何打造一款高可用的分布式文件系统?这次我明白了!!
写在前面 前面我们学习了如何基于两台服务器搭建FastDFS环境,而往往在生产环境中,需要FastDFS做到高可用,那如何基于FastDFS打造一款高可用的分布式文件系统呢?别急,今天,我们就一起来基 ...
- 【Microsoft Azure 的1024种玩法】八. 基于Azure云端轻松打造一款好用的私有云笔记
[简介] Leanote一款开源云笔记软件,它使用Go的Web框架revel和MongoDB开发完成的,其是目前为止发现的最有bigger的云笔记,它支持markdown输入,代码高亮,多人协作,笔记 ...
- 【ASP.NET程序员福利】打造一款人见人爱的ORM(一)
“很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有大用户群体的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造 ...
- 打造一款属于自己的web服务器——开篇
JVM总结慢慢来吧,先插播一篇水文,来介绍下最近业余一直在写的一个小项目——easy-httpserver(github).适合新手学习,大神们路过即可^_^. 一.这是个什么玩意? easy-htt ...
随机推荐
- CSS第二篇
给导航设置圆角的代码: c3 里面的属性:border-radius:7px: 1补充盒子问题 (盒子边框紧邻变粗问题)将两个盒子边框重叠并且设置定位提高层级避免盒子重叠,鼠标放上去只显示一个盒子的边 ...
- ios 视图既显示阴影又有圆角实现
//- (UIView *)createTimeBG //{ // UIView *view = [[UIView alloc]init]; // view.backgroundColor ...
- centos7 安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH)
今天安装mysql 5.7 编译时出现一下问题: [root@localhost software]# cd mysql-5.7.21 [root@localhost mysql-5.7.21]# c ...
- 【论文阅读】Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks
Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks 参考 1. 人脸关键点: 2. ...
- react-redux性能优化之reselect
在React-redux深入理解中,我们知道了 react-redux 是如何将 React 和 Redux 进行连接的,今天来说一下其中存在的性能问题以及改进的方式. 一.存在的性能问题 以 Red ...
- 在c#中 RemoveAt、 Remove、delete用法区别
有三种方法可以删除 DataTable 中的 DataRow: Delete 方法和 Remove 方法和 RemoveAt 方法 其区别是: Delete 方法实际上不是从 DataTable 中删 ...
- 创建Windows服务
windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志.计算机启动时,服务会自动开始 ...
- 8th week blog
1.indexof() indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始,没有返回-1:方便判断和截取字符串!indexOf()定义 ...
- APIPA
自动专用IP地址(Automatic Private IP Address,APIPA)是当客户端无法从DHCP服务器中获得IP地址时自动配置的地址.IPv4地址前缀169.254/16已经被IANA ...
- [C]排序并插入
/* 编写程序,在主函数中定义一个有10个元素的整型一维数组,用户输入9个数据,调用函数,对数组元素进行从小到大排序后,在函数中输入一个数,插入到数组中正确的位置,并输出. */ #include&l ...