设计「业务」与「技术」方案
三天研发,两天设计;
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…...
互联网架构之 “高可用” 详解
一、什么是高可用 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。 假设系统一直能够提供服务,我们说系统的可用性是100%。 如果系统每运行…...
分布式高级篇4 —— 商城业务(2)
一、订单服务1、订单基本概念2、订单基本构成3、订单状态4、订单流程5、配置拦截器拦截订单请求6、订单确认页模型抽取7、订单确认页vo封装8、Feign 远程调用请求头丢失问题\*\*\*\*\* 惨痛教训9、Feign 异步调用请求头丢失问题10、查看库存状态11、模拟计算运费12、接口幂等性…...
二分查找基本原理
二分查找基本原理1.二分查找1.1 基本概念1.2 二分查找查找步骤1.2.1 中间索引不能整除,取整数作为中间索引1.2.2 索引不能整除,整数1作为中间索引1.3 二分查找大O记法表示2. 二分查找代码实现1.二分查找 1.1 基本概念 二分法(折半查找)是一…...
【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~
前言 哈喽!上午好嘞,各位小可爱们!有没有等着急了呀~ 由于最近一直在学习新的内容,所以耽搁了一下下,抱歉.jpg 双手合十。 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移…...
UE4:使用样条生成随机路径,并使物体沿着路径行走
一、关于样条的相关知识 参考自:样条函数 - 馒头and花卷 - 博客园 三次样条(cubic spline)插值 - 知乎 B-Spline(三)样条曲线的性质 - Fun With GeometryFun With Geometry 个人理解的也不是非常深,但是大概要知道的就是样条具…...
计算机组成原理(判断题)
计算机控制器是根据事先编好的程序,根据其指令来进行控制只会每一步骤的操作; 面向主存的双总线结构计算机系统,因在CPU与主存之间增加了一组存储器总线,由于通过存储器总线访存,提高了CPU的访存速度,也减轻…...
error: failed to push some refs to ... 就这篇,一定帮你解决
目录 一、问题产生原因 二、解决办法 三、如果还是出问题,怎么办?(必杀) 一、问题产生原因 当你直接在github上在线修改了代码,或者是直接向某个库中添加文件,但是没有对本地库同步,接着你想…...
DAMA数据管理知识体系指南之数据仓库和商务智能管理
第9章 数据仓库和商务智能管理 9.1简介 数据仓库(Data Warehouse,DW)由两个主要部分构成:首先是一个整合的决策支持数据库,其次是用于收集、清洗、转换、存储来自于各种操作型数据源和外部数据源数据的相关软件程序。两者结合以支持历史的、…...
PHP的五种常见设计模式
工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合。要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程。在更改一个代码片段时,就会发生问题,系统其他部分 —— 您曾认为完全不相关的部分中也有…...
教你搞懂线段树,从基础到提高
秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 目录前言线段树逻辑概念线段树的俩个重要用处代码实现线段树题目巩固最后…...
做招聘的网站/贵港seo关键词整站优化
标签:Navicat for MySQL 常规选项Navicat 常规选项主要包括以下内容:窗口在工作列显示:每打开一个新窗口时会自动显示在 Windows 任务栏。停用该选项后,当退出 Navicat 主窗口时,所有窗口(例如:表、查询)将…...
乌鲁木齐建设银行招聘网站/独立站seo怎么做
题目 本题是2016年中国海洋大学研究生入学考试910高级程序设计程序填空题第1题。 题目: 求前n项和:1/2,2/3,3/5,5/8…(10分) 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj。QQ:2394799692 一、解题思路 思路: 找规律:当前项…...
微信php网站开发流程/免费的网站软件
js包含全局作用域,函数作用域 es6语法:块级作用域 1,作用域 https://blog.csdn.net/qappleh/article/details/80311443 (作用域的理解) https://blog.csdn.net/yueguanghaidao/article/details/9568071 ÿ…...
怎么样可以做自己的网站/北京it培训机构哪家好
2019独角兽企业重金招聘Python工程师标准>>> http://bbs.fedora-zh.org/showthread.php?1097-VirtualBox%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97 转载于:https://my.oschina.net/u/174445/blog/33764...
郑州网站seo服务/网站排行
网络管理员在维护系统过程中,经常遇到计算机或服务器意外重新启动,这个时候运行在服务器上的程序会因为重新启动导致程序无法运行,比如摄像头监控程序,等发现服务器等待你输入用户名和密码的时候,监控程序已经好长时间…...
wordpress扫码支付下载/最近的新闻热点
啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。 我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。 注意:答案是一个整数。请通过浏览器提交答案。 不要书写任何多余的内容(例如&…...