业务需求永远第一

没有和 PM 吵过架的 RD 不是好 RD,那没有被需求整哭过的人生不是完整的人生。

一直以来,PM 和 RD 就是一对欢喜冤家。
“这个需求很简单,就是加个按钮”
“你能不能想清楚再提。这个需求能带来多大收益?”
“小哥哥,我要改个颜色,马上上线,急”
“能不能晚点和其他需求一起上线?”
...

现实中,PM 的需求有时候就是合理的;现实中,有些 RD 的疲于应付就是架构设计不到位;现实中,有时候哭过的 RD 才能成长得更好。

下面我们就来看下这个场景。

典型场景

相信在很多业务下我们需要定义一些规则,比如满足规则 A,则 xx1,满足规则 B 则 xx2。用一个“高端”一点的表达就是一棵决策树,很简单的需求。

图一:规则的决策树表示

基于这种思维方式,在一次活动期间,我们需要对参与活动的人进行风险控制。PM 的需求很简单:两个人是好友,则 3 天内只能使用 1 个优惠,两个人不是好友,则 3 天可以使用 2 个优惠。

用决策树表示则为:

图二:需求Demo

程序员成长之路

01 /  程序员1.0

无知者无畏

涉世未深的程序员,看到这个需求后,心里暗暗的觉得“so easy”,不就是 if/else 轻松解决么。

有经验一点的程序员,心里盘算,PM 是易变的生物,这些“几天几个”肯定要变来变去,得配置化

因此针对这个需求的 1.0 版本:

图三:基于纯业务开发的系统

看似完美的解决方法,上线后,等待程序员的苦日子就来了。

  • 我需要把某棵树的 A 节点和 C 节点重新组织,形成一条行的规则。

  • 我需要修改阈值,修改时间范围。

  • 我需要根据不同的规则,触发不同的响应。

。。。

拥抱变化,程序员 1.0 开始忙于改配置、测试、上线。随着策略变复杂,需求变化更快,上线出问题也越来越多。程序员 1.0 开始应接不暇了,开始频繁的出错,开始了自我怀疑,开始很受挫。

我明明很努力,怎么结果就这么不好呢。凌晨下班的1.0,落下了“不甘心的泪”。

02 /  程序员2.0

迭代是互联网的利刃,也是我们程序员持续成长的法宝。

2.0 版本的程序员,吸收了前面的经验教训,在决策树的原理上,复用最大化。我们将决策树的每个节点都按照最小化规则来组织,抽象最小规则元素。

图四:最小规则抽象

特征:按照一定业务逻辑实现的类型。比如是否好友、3天使用优惠数量等等

阈值:配置的触发规则的值

逻辑判断:用于比较特征和阈值之间关系的实现。

对于决策树的分叉,在逻辑上可以抽取成独立的链式关系。即对于图一,我们可以抽象出 ABB1/ABB2/AC 三条规则链,且三条规则链相互独立。

图五:链式规则

对这个链式的规则结果进行统计,将得到和决策树一致的结论,但是节点的存储和组织更加的冗余了。

基于这个认知,我们做了一个规则引擎:

图六:基于最小节点的规则引擎设计

所有的节点都格式化成:特征、阈值、逻辑判断 三要素

所有的决策树打散成独立的链式节点

标准化,表示我们可以搭建一套很完整的产品管理后台,彻底释放RD的生产力。

程序员2.0 松了一口气,总算熬出头了。

03 /  程序员3.0

追求更高、更快、更强。

自研的规则引擎就完事了吗?显然不是,程序员成神的道路没这么简单。

相同的需求,隔壁公司会怎么做?比如美团Maze框架?

基于链式规则不够精简,是否用DAG(有向无环图)方案更科学?

开源的Drools 有什么优缺点?

实现功能的方案有很多,NX(牛叉)的架构师,不会唯技术论,也不会让自己跟着需求追。在成大神的道路上,推荐孙玄和他创立的奈学教育,一个好的导师、指路人,可以节省我们成长过程中最宝贵的时间成本。

孙玄,江湖人称玄姐,曾作为 58 集团技术委员会主席,转转二手电商首席架构师、技术委员会主席,带领公司技术从0到10,并成功培养了一批技术精英。现在玄姐放弃几百万年薪、数千万期权,创办了奈学教育,旨在为技术人成长提供最贴切的内容和服务。

想了解玄姐创业项目,获取玄姐视频资料,更快成长的同学,扫描二维码了解更多。

架构师课程核心内容

基于互联网高可用、高并发、高性能的架构特性,从底层框架到上层业务应用的课程内容设计,涵盖了主流技术框架以及架构师需要具备的多维度视野。

1、首推分布式系统全链条技术由点连成线实战课程

从基础组件到业务架构设计、测试 CI/CD 到运维安全,深度剖析分布式系统后端所有技术环节,将涉及知识点连接成"线",掌握企业及解决方案设计方法;

2、全套基础架构设施建设实践剖析

后端基础架构全套设施深入剖析:开发框架、服务治理、存储系统、基础服务/中间件,体验基础架构从 0 到 1 的建设过程;

3、全新视角,海量业务并发,掌握业务架构设计精髓

对业务架构进行逐层深入剖析,掌握经典三层架构(网关层、业务逻辑层、数据访问层)设计方法;

4、基于业务快速反应的智能运维实践

从反向代理,DNS、CDN 等基础设施,到服务器选型、网络安全防护技术展开,高效利用服务器资源,保证服务系统与数据安全;

课程收获

结构化的知识体系

结构化的知识才是可掌握的知识,你掌握了吗?

相信一个人价值的核心是能力,当我们能力提升和拥有资源后,升职加薪是水到渠成的结果了。年薪百万不是梦!

更全课程大纲及孙玄老师亲授视频课程扫码获取

两次扫码加小助教,领取资料

名师介绍

《架构师训练营》课程由孙玄& 沈剑首度联合打造。

扫码免费领取资料

孙玄亲授视频课程资料

限时免费领取

两次扫码加小助教,领取资料

感谢点在看支持技术创业????

真不夸张,90%的人都被需求整“哭”过相关推荐

  1. 句句属实,90%的人都被需求整“哭”过!

    业务需求永远第一 没有和 PM 吵过架的 RD 不是好 RD,那没有被需求整哭过的人生不是完整的人生. 一直以来,PM 和 RD 就是一对欢喜冤家. "这个需求很简单,就是加个按钮" ...

  2. sdl 打开耳机_耳机的正确打开方法,90%的人都不知道...

    原标题:耳机的正确打开方法,90%的人都不知道... 戴耳机这件事嘛,当然是很cool很拉风的啦 但是经常会听一些长辈唠叨:别戴那么久啊小心作聋啊 其实慧通君更多时候是心里呵呵一笑... 但是! 最近 ...

  3. 90%的人都不会做的一道笔试题

    关注"Java后端技术全栈" 回复"面试"获取全套大厂面试资料 数组操作的题目,有的确实比较容易,但并非每个问题都是如此.今天就来看道90%的人都不会做的笔试题 ...

  4. 90%的人都做错的用户画像,到底应该怎么做?

    前几天,有个搞运营的小伙伴向我吐槽,熬了几个夜做出来的用户画像被老板说垃圾.不管是市场人员.运营人员还是产品经理,都躲不开"用户画像",但经常听到伙伴们抱怨,这个词太大了,根本不知 ...

  5. 述职答辩提问环节一般可以问些什么_陕西省高级职称评审,90%的人都“死”在答辩上?...

    高级工程职称评审,副高级评审条件:本科以上学历并且取得中级职称后5年,博士学位取得中级职称后2年,才具备申请资格.正高级要求本科以上学历取得副高级职称后5年才能申请.其次要经过发表论文.准备学时.网报 ...

  6. android qq隐藏功能,90﹪的人都不知道--手机QQ这些隐藏的功能!

    90﹪的人都不知道--手机QQ这些隐藏的功能! 我们在平时玩手机的时候,最常用到微信,当然QQ也算是我们日常生活中使用频率最多的社交工具之一,它于1999年推出,随着不断的更新迭代,如今的QQ功能可以 ...

  7. 实木餐桌四大保养方法,90%的人都不知道

    实木餐桌四大保养方法,90%的人都不知道 大家都知道实木餐桌非常受人们的欢迎,因为实木餐桌环保,不少人购买餐桌时都优先考虑实木餐桌.而且实木餐桌看起来有种古色古香的感觉,有着非常贴近大自然的设计,看上 ...

  8. 魅族 计算机 隐藏,魅族Flyme中隐藏的功能,90%的人都不知道,不用白买了

    原标题:魅族Flyme中隐藏的功能,90%的人都不知道,不用白买了 智能手机已经逐渐的走进人们的生活,成为了人们每天随身携带且使用频率最高的设备,自然里面存有很多重要的资料.但是即使大家在小心的使用用 ...

  9. 做跨境电商一年买了房:未来五年的风口行业,90%的人都不知道

    有一句老话常说:"下一个暴利风口来了,将造就大批富翁,抓住就能致富!" 看看朋友圈那些有钱人,几乎都是因为踩对了风口,赚得盆满钵满: 10年前,咬咬牙供几套房,一辈子不愁吃穿: 5 ...

最新文章

  1. 你需要掌握的有关.NET DateTime类型的知识点和坑位 都在这里
  2. 特斯拉:即将推出神经网络雨刷
  3. 4种动态加载JS的方法
  4. python安装numpy库用清华镜像_Mac下基于Anaconda通过清华镜像安装Tensorflow
  5. 忘记 mysql 密码的取回方法
  6. mysql gis空间数据库_GIS开发:使用空间数据库
  7. QBoxLayout中setSpacing(int)和addSpacing(int)的区别
  8. php递归返回值只有第一次的结果,php递归函数出现返回值问题的解决
  9. Froala Editor 2.8.1破解过程
  10. 武汉大学计算机 韩立,文澜学术系列讲座 第135期 武汉大学经济与管理学院韩立宁老师:“Financial Network and Industry Connectedness”...
  11. WPS2007去广告
  12. 使用python实现的天眼查小工具
  13. java课程设计之球球大作战
  14. AES算法在Wi-Fi加密中的应用
  15. BZOJ4919: [Lydsy1706月赛]大根堆(set启发式合并)
  16. java中commons意思_java的Commons包简介
  17. 什么是大数据?大数据的5V特点是什么?
  18. 使用Python,Open3D对点云散点投影到面上并可视化,使用3种方法计算面的法向量及与平均法向量的夹角
  19. indesign选中不了图片删除_有办法了!批量删除多个Word页眉页脚
  20. [AHK]EMEDITOR 加上 AHK 高亮色彩配置

热门文章

  1. TensorFlow中的ResNet残差网络实战(2)
  2. 网络优化(中国计量大学现代科技学院第三届“中竞杯”程序设计校赛(网络赛))
  3. pix4d计算机配置速度,ContextCapture、Pix4D电脑需求配置
  4. linux 误删除mysql表能恢复吗_Linux下Oracle误删除数据文件恢复操作
  5. linux离线安装docker教程,Linux 离线安装docker的过程
  6. 波士顿大学计算机科学硕士申请要求,波士顿大学计算机信息系统理学硕士研究生申请要求及申请材料要求清单...
  7. java 继承 注解_在java中实现组合注解原理分析(注解继承)
  8. com.android.phone已停止 vivo,oppo,vivo应用程序终止通知不在android fcm中出...
  9. php 小炒花生,炒花生的做法_炒花生怎么做_炒花生的家常做法
  10. 系统科学丨钱学森:我对系统学认识的历程