设计「业务」与「技术」方案
三天研发,两天设计;
01
【优先做设计方案】
职场中的那些魔幻操作,研发最烦的是哪个?
作为一个数年且资深的互联网普通开发,可以来说明一下为什么是:缺乏设计;
面对业务需求的时候,可能都听过这样一句话:
这个很简单,直接开发,三天内上线;
产品听了流泪,测试见了崩溃,研发眉头一皱直呼什么鬼;
如果没有听过,那么职场的经历可能是不完美的,但是幸运爆棚;
这种魔幻般的神奇操作,逻辑在哪里?底线在哪里?唯独离谱在这里;
从实践经验上来看,产品研发抛开业务设计所带来的反伤,也许会迟到,但绝对不会缺席;
所谓的简单业务流程,仓促上线之后,后续补坑的成本可能高的离谱;
相对于完整的研发周期来说,设计、落地、一次性的高质量完成,就是成本最低,效率最高的决策;
对于研发角色,方案设计通常就是围绕技术和业务两个核心;
02
【常用的方法论总结】
在做方案设计时,必然要运用一些基础的方式方法;
有关方法的经验总结很多,但是真正常用的并不多,以下只围绕个人在工作中常用的几个来分析;
- 本质:
理解本质的时候,必须明确在一定的空间和时间范围内,需要有边界约束;
如果范围扩大,考虑的因素太多,相互间的影响和关联过度复杂,脱离实际太远,很难得出符合现状的结论;
在工作中时常会说:透过现象看本质,理解不同事物的共性和个性,判断发展逻辑;
那么,如何理解产品研发的本质?
基于业务的供需关系,持续打造优质的产品服务;
这个描述只是个人的实践体会,对于事物的本质理解,应该简单明了,直击核心内容;
- 矛盾
矛盾是指事物内部以及事物之间的对立统一关系,虽然概念很抽象,但现象几乎是无处不在;
用通俗的方式来理解,就是需求和利益之间的冲突且统一的关系;
以常见的平台商业形式来思考;
平台方:希望以低成本的服务获取更高的营收;
客户方:希望以低成本获得更好更优质的服务;
平台与客户双方,都希望低成本付出,获取更高的回报,矛盾就这样产生了;
但是,平台失去客户,没有持续生存的能力;客户本身又依赖平台服务,关系既统一又存在冲突;
双方的合作,随着不同阶段的核心问题被解决,即事物的不断发展变化,新的问题和矛盾也会出现;
- 系统
理解事物的全貌,横向扩展的广度,纵向发展的深度,在时间空间的变化中,以动态的思维应对事物的变化;
简单的说就是:全面的看事物,系统的解决问题;
以实际的研发案例来分析;
面对并发业务的复杂流程时,比较经典的就是抢单场景,处理的思路有很多种;
如果资源足够,直接扩展以支撑请求处理;
如果资源不足,可以限制请求端的放行比例,服务端只处理少量请求;
或者服务端对请求异步解耦,快速失败掉大量的请求;
所以在面对问题时,不必只片面的看一个方向,围绕问题的矛盾多方,统筹寻找平衡的解决方法;
- 周期
在周期现象中,存在事物的发展和演变规律;
即事物在运动、变化的发展过程中,某些特征多次重复出现;
比较经典的现象就是业务的发展周期:孵化期、验证期、成长期、成熟期、衰退期、转型或者消亡期;
理解事物的发展周期,可以在不同的阶段把握核心事项,解决关键问题;
- 分治
分而治之是研发的核心能力之一,强调对复杂事物的拆解能力;
随着技术水平的成长,面对的业务问题也更加复杂,必须具备拆分能力,分而治之;
流程的分段管理;技术与业务的分离;代码工程的分层维护;系统的分布式架构;
这些都是研发过程中常用的分治手段;
面对诸多的方法论,首先围绕几个基础方法进行思考和实践,从而理解其内涵和精髓;
然后,再借鉴其他的方法,形成自己的方法体系;
基于一些核心的方法论之上,再去思考业务和技术的设计,在思路上就会成熟很多;
03
【如何分析业务】
想要分析业务,首先要深刻的理解和洞察业务整体;
在个人习惯上会考量三个层次:首先理解业务全貌,其次理解负责的业务板块,最后理解具体的业务需求;
- 理解业务全貌
理解业务全貌,本质就是明白公司在做什么,组织架构的协作流程,团队的工作方向;
业务的常规定义:行业的基本模式,运作的流程,具体的事务执行;
在实际的工作中,职级越高越是需要具备对业务全貌的分析能力;
行业分析并非普通玩家所能理解的,需要极其顶级的思维和知识储备,以及对各个信息的统筹分析;
作为研发来说;
应该理解业务的投入和营收,并且能意识到这种模式是映射到产品设计或者服务中的;
必须理解业务模式所对应的产品矩阵设计,各个核心功能的流程和路径;
- 理解负责的业务板块
个人的工作习惯,并不是常规的流程机制;
明确自己负责的业务板块,把握工作重心,不同阶段中调整能力的输入(学习)和输出(生产价值)策略;
产品矩阵的设计与业务模式有直接关系,也是梳理自己工作板块的核心依据;
对于产品来说,常见的拆分有两种;
例如以端口为依据划分的C端和B端,以系统为依据划分的业务应用和数据应用;
对于业务来说,拆分的模式则更加灵活;
在运营概念上可能有多个业务线,但是对于研发来说,各种业务线之间存在诸多的流程交互;
对于个人来说,可以从业务、技术、数据三个基础的方向梳理,或者根据具体的运营模式梳理;
理解业务全貌和个人的负责板块,以此明确工作重心和方向;
- 理解具体的业务需求
理顺业务全貌与自己负责板块,更偏向于内在的务虚方向;
研发对于职场的真正价值,还是在于各个版本的具体需求实现;
分析具体的业务需求时,依然有一个对齐的过程;
将具体的业务需求向业务全貌对齐,理解其价值所在;
将业务需求向自己的工作板块对齐,理解自己的价值所在;
实现版本的业务需求,既要对齐大的业务框架,也要理清需求本身,把握版本落地的质量;
04
【理解技术架构的演进】
对于技术规划来说,通常分为:业务和技术两个方向;
可以分析一个复杂系统的迭代过程,从而理解技术方案在规划设计上的演变规律;
- 横向扩展
从架构的概念来描述:单服务、集群模式、分布式服务、系统级分拆;
横向扩展,其映射的是业务流程和模式的复杂度,随着业务的不同发展阶段,需要进行不同级别的服务拆分;
- 纵向扩展
从单个系统架构的纵向来分析:展现层、应用层、业务层、组件层、存储层;
纵向深入,其映射的是业务逻辑的复杂度,在纵向上进行分层设计,可以降低逻辑管理的难度;
- 业务研发
基于常规的分布式系统来看,业务研发在演变的过程中,也会拆分为应用级业务,公共业务两大板块;
应用业务实现的是具体需求场景,而公共业务则是大多数应用都依赖的基础业务能力;
- 技术研发
基于常规的分布式系统来看,合理的架构设计,必然会追求技术与业务的分离;
在代码工程的分包上,可以独立封装技术层面的组件应用,以便于统一维护和升级;
在服务级别上,可以将组件服务拆分为业务(侧重业务解决方案)与技术(侧重技术解决方案)两个层次;
分析业务,把握技术架构的演进历程,将二者进行统筹结合,就是方案设计的主线;
05
【统筹技术和业务方案】
设计研发方案,自然需要把握业务的整体,规划技术架构,确保业务和技术双线推进;
方案的核心则是围绕当前阶段的具体业务需求,设计实现流程、目标、指标;
- 业务和技术的演进
分别把握整体与阶段的核心目标,作为方案设计的基础指导原则;
从业务整体上看,系统建设与技术架构应该围绕大的业务目标去考量,支撑或者驱动业务发展;
从业务阶段上看,把握当前阶段的业务本质,关键问题与核心矛盾,在版本需求中有序解决;
- 业务和技术的流程
分析业务的运转流程和特征,映射为技术的实现过程,作为方案设计的核心思想;
业务的运转流程,围绕客户、产品、组织协作来设计,侧重于场景的分析;
业务映射的系统流程,将业务流程和特征转化为系统实现的流程,侧重于两者的统筹分析;
核心逻辑的实现流程,围绕具体需求,设计逻辑时序图,侧重于关键问题的分析;
- 业务和技术的目标
围绕具体需求,设定相应的目标和指标拆解,作为方案执行结果的考量标准;
版本需求立项之时,就对结果有明确的预期,目标贯穿业务需求的完整周期,在组织协作中是关键导向;
指标用来衡量目标达成的执行过程和最终完成度,侧重于对目标进行验证;
综合来看,对于业务和技术的方案来说;
有业务的整体思考,技术的系统性架构,具体需求的核心设计与落地执行,以及目标和指标的衡量标准;
06
最后,回到工作实践中来,做事虽然有很多方式方法,但是从来没有绝对的标准;
业务也好,技术也罢;
在周期演进的过程中,始终受到组织架构和团队人员的最根本影响;
所以在输出业务和技术方案时,要围绕环境的真实现状,做出相应的调整优化,把握核心即可;
相关文章:

设计「业务」与「技术」方案
三天研发,两天设计; 01【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么是:缺乏设计; 面对业务需求的时候,…...

C/C++:预处理(下)
目录 一.回顾程序的编译链接过程 二. 预处理之预定义#define 1.#define定义的标识符 2.#define定义的宏 3.带副作用的表达式作为宏实参 4.两个经典的宏 5.#define使用的一些注意事项小结 6.宏与函数的比较 7.#undef 附:关于#define的三个冷知识 三. 条件…...

2023互联网相关岗位转行与就业选择的简单分析
文章目录1、城市2、岗位1、城市 能找得到工作的城市,可能主要也就这些base了 2、岗位 主要技术岗位 Python 侧重人工智能,人工智能门槛高大家心知肚明。如果学python 不走人工智能,只走单纯的后端开发,不管从薪资还是岗位数量…...

LeetCode·每日一题·1223.掷骰子模拟·记忆化搜索
作者:小迅链接:https://leetcode.cn/problems/dice-roll-simulation/solutions/2103471/ji-yi-hua-sou-suo-zhu-shi-chao-ji-xiang-xlfcs/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权࿰…...

【GPLT 二阶题目集】L2-043 龙龙送外卖
参考地址:AcWing 4474. 龙龙送外卖(杂题选讲) 作者:yxc 感谢y总! 龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环 —— 你可以…...

Maven:基础知识
Maven概念图生命周期目录工程创建测试常用命令COMPILATION ERROR : 不再支持目标选项 5。请使用 7 或更高版本。问题解决pom.xml文件properties配置示例scope配置详解概念图 依赖管理构建项目Maven 的底层核心实现项目的构建和管理必须通过插件完成,但插件本身并不包…...

Web 框架 Flask 快速入门(一)flask基础与模板
前言 课程地址:Python Web 框架 Flask 快速入门 文章目录前言🌴 Flask基础和模板🌷 一个简单的flask程序🌼 模板的使用🌴 Flask基础和模板 1、web框架的作用 避免重复造轮子,app程序不必关心于服务器的沟…...

1CN/Jaccard/PA/AA/RA/Katz/PageRank/SimRank
common neighbors(CN) 公共邻居的数量。 Jaccard 用于比较有限样本集之间的相似性与差异性。Jaccard系数值越大,样本相似度越高。 preferential attachment(PA) 节点倾向于连接到节点度较高的节点上,&…...

YOLOv5-Backbone模块实现
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P8周:YOLOv5-Backbone模块实现🍖 作者:K同学啊一、前期准备1.设置GPUimport torch from torch impor…...

【C语言】程序环境和预处理
🌇个人主页:平凡的小苏 📚学习格言:别人可以拷贝我的模式,但不能拷贝我不断往前的激情 🛸C语言专栏:https://blog.csdn.net/vhhhbb/category_12174730.html 小苏希望大家能从这篇文章中收获到许…...

9.关系查询处理和查询优化
其他章节索引 梳理 名词解释 代数优化:是指关系代数表达式的优化,也即按照一定规则,通过对关系代数表达式进行等价变换,改变代数表达式中操作的次序和组合,使查询更高效物理优化:是指存取路径和底层操作算…...

计算机组成原理(三)
5.掌握定点数的表示和应用(主要是无符号数和有符号数的表示、机器数的定点表示、数的机器码表示); 定点数:小数点位置固定不变。 定点小数:小数点固定在数值位与符号位之间; 定点整数:小…...

C. Least Prefix Sum codeforces每日一题
🚀前言 🚀 大家好啊,这里是幸麟 🧩 一名普通的大学牲,最近在学习算法 🧩每日一题的话难度的话是根据博主水平来找的 🧩所以可能难度比较低,以后会慢慢提高难度的 🧩此题标…...

ASEMI三相整流模块MDS100-16图片,MDS100-16尺寸
编辑-Z ASEMI三相整流模块MDS100-16参数: 型号:MDS100-16 最大重复峰值反向电压(VRRM):1600V 最大RMS电桥输入电压(VRMS):1700V 最大平均正向整流输出电流(IF&#…...

【第37天】斐波那契数列与爬楼梯 | 迭代的鼻祖,递推与记忆化
本文已收录于专栏🌸《Java入门一百例》🌸学习指引序、专栏前言一、递推与记忆化二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析5.原题链接三、【例题1】1、题目描述2.解题思路3、模板代码4、代码解析5、原题链接三、推荐专栏四、课后习题序…...

Map集合
Map集合 Map接口的简介 Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。 Map 没有继承 Collection 接口,…...

PyQt5编程扩展 3.2 资源文件的使用
目录 本例运行效果: 设计Qt窗体 建立项目 放一个Group Box 放三个Label 放一个Horizontal Slider 放两个Line Edit 层次结构 布局 放一个Group Box 放两个Label 放两个Line Edit 放一个Push Button 层次结构 布局 放一个frame 层次结构 布局 窗体…...
Linux系统之文件共享目录设置方法
Linux系统之文件共享目录设置方法一、本次实践目的二、检查本地系统环境1.检查系统版本2.检查系统内核三、创建相关用户及用户组1.创建共享目录2.创建测试用户账号3.创建用户组4.设置用户的属组5.查看admin和IT用户组成员6.查看所有用户信息四、共享目录权限设置1.设置/data/so…...

上海亚商投顾:三大指数均涨超1% 芯片板块集体大涨
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。市场情绪三大指数今日低开高走,午后集体涨超1%,创业板指盘中涨超1.7%。芯片板块集体大涨,…...
Harbor私有仓库部署与管理
目录 前言 一、Harbor概述 二、Harbor 的特性 三、Harbor的构成 四、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署Harbor服务 3.1、部署docker compose服务 3.2 下载或上传Harbor安装程序 3.3、启动Harbor 3.4、查看Harbor启动镜像 4、物理机访问se…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...