当前位置: 首页 > news >正文

设计「业务」与「技术」方案

三天研发,两天设计;


01


【优先做设计方案】

职场中的那些魔幻操作,研发最烦的是哪个?

作为一个数年且资深的互联网普通开发,可以来说明一下为什么是:缺乏设计;

面对业务需求的时候,可能都听过这样一句话:

这个很简单,直接开发,三天内上线;

产品听了流泪,测试见了崩溃,研发眉头一皱直呼什么鬼;

如果没有听过,那么职场的经历可能是不完美的,但是幸运爆棚;

这种魔幻般的神奇操作,逻辑在哪里?底线在哪里?唯独离谱在这里;

从实践经验上来看,产品研发抛开业务设计所带来的反伤,也许会迟到,但绝对不会缺席;

所谓的简单业务流程,仓促上线之后,后续补坑的成本可能高的离谱;

相对于完整的研发周期来说,设计、落地、一次性的高质量完成,就是成本最低,效率最高的决策;

对于研发角色,方案设计通常就是围绕技术和业务两个核心;


02


【常用的方法论总结】

在做方案设计时,必然要运用一些基础的方式方法;

有关方法的经验总结很多,但是真正常用的并不多,以下只围绕个人在工作中常用的几个来分析;

  • 本质

理解本质的时候,必须明确在一定的空间和时间范围内,需要有边界约束;

如果范围扩大,考虑的因素太多,相互间的影响和关联过度复杂,脱离实际太远,很难得出符合现状的结论;

在工作中时常会说:透过现象看本质,理解不同事物的共性和个性,判断发展逻辑;

那么,如何理解产品研发的本质?

基于业务的供需关系,持续打造优质的产品服务;

这个描述只是个人的实践体会,对于事物的本质理解,应该简单明了,直击核心内容;

  • 矛盾

矛盾是指事物内部以及事物之间的对立统一关系,虽然概念很抽象,但现象几乎是无处不在;

用通俗的方式来理解,就是需求和利益之间的冲突且统一的关系;

以常见的平台商业形式来思考;

平台方:希望以低成本的服务获取更高的营收;

客户方:希望以低成本获得更好更优质的服务;

平台与客户双方,都希望低成本付出,获取更高的回报,矛盾就这样产生了;

但是,平台失去客户,没有持续生存的能力;客户本身又依赖平台服务,关系既统一又存在冲突;

双方的合作,随着不同阶段的核心问题被解决,即事物的不断发展变化,新的问题和矛盾也会出现;

  • 系统

理解事物的全貌,横向扩展的广度,纵向发展的深度,在时间空间的变化中,以动态的思维应对事物的变化;

简单的说就是:全面的看事物,系统的解决问题;

以实际的研发案例来分析;

面对并发业务的复杂流程时,比较经典的就是抢单场景,处理的思路有很多种;

如果资源足够,直接扩展以支撑请求处理;

如果资源不足,可以限制请求端的放行比例,服务端只处理少量请求;

或者服务端对请求异步解耦,快速失败掉大量的请求;

所以在面对问题时,不必只片面的看一个方向,围绕问题的矛盾多方,统筹寻找平衡的解决方法;

  • 周期

在周期现象中,存在事物的发展和演变规律;

即事物在运动、变化的发展过程中,某些特征多次重复出现;

比较经典的现象就是业务的发展周期:孵化期、验证期、成长期、成熟期、衰退期、转型或者消亡期;

理解事物的发展周期,可以在不同的阶段把握核心事项,解决关键问题;

  • 分治

分而治之是研发的核心能力之一,强调对复杂事物的拆解能力;

随着技术水平的成长,面对的业务问题也更加复杂,必须具备拆分能力,分而治之;

流程的分段管理;技术与业务的分离;代码工程的分层维护;系统的分布式架构;

这些都是研发过程中常用的分治手段;

面对诸多的方法论,首先围绕几个基础方法进行思考和实践,从而理解其内涵和精髓;

然后,再借鉴其他的方法,形成自己的方法体系;

基于一些核心的方法论之上,再去思考业务和技术的设计,在思路上就会成熟很多;


03


【如何分析业务】

想要分析业务,首先要深刻的理解和洞察业务整体;

在个人习惯上会考量三个层次:首先理解业务全貌,其次理解负责的业务板块,最后理解具体的业务需求;

  • 理解业务全貌

理解业务全貌,本质就是明白公司在做什么,组织架构的协作流程,团队的工作方向;

业务的常规定义:行业的基本模式,运作的流程,具体的事务执行;

在实际的工作中,职级越高越是需要具备对业务全貌的分析能力;

行业分析并非普通玩家所能理解的,需要极其顶级的思维和知识储备,以及对各个信息的统筹分析;

作为研发来说;

应该理解业务的投入和营收,并且能意识到这种模式是映射到产品设计或者服务中的;

必须理解业务模式所对应的产品矩阵设计,各个核心功能的流程和路径;

  • 理解负责的业务板块

个人的工作习惯,并不是常规的流程机制;

明确自己负责的业务板块,把握工作重心,不同阶段中调整能力的输入(学习)和输出(生产价值)策略;

产品矩阵的设计与业务模式有直接关系,也是梳理自己工作板块的核心依据;

对于产品来说,常见的拆分有两种;

例如以端口为依据划分的C端和B端,以系统为依据划分的业务应用和数据应用;

对于业务来说,拆分的模式则更加灵活;

在运营概念上可能有多个业务线,但是对于研发来说,各种业务线之间存在诸多的流程交互;

对于个人来说,可以从业务、技术、数据三个基础的方向梳理,或者根据具体的运营模式梳理;

理解业务全貌和个人的负责板块,以此明确工作重心和方向;

  • 理解具体的业务需求

理顺业务全貌与自己负责板块,更偏向于内在的务虚方向;

研发对于职场的真正价值,还是在于各个版本的具体需求实现;

分析具体的业务需求时,依然有一个对齐的过程;

将具体的业务需求向业务全貌对齐,理解其价值所在;

将业务需求向自己的工作板块对齐,理解自己的价值所在;

实现版本的业务需求,既要对齐大的业务框架,也要理清需求本身,把握版本落地的质量;


04


【理解技术架构的演进】

对于技术规划来说,通常分为:业务和技术两个方向;

可以分析一个复杂系统的迭代过程,从而理解技术方案在规划设计上的演变规律;

  • 横向扩展

从架构的概念来描述:单服务、集群模式、分布式服务、系统级分拆;

横向扩展,其映射的是业务流程和模式的复杂度,随着业务的不同发展阶段,需要进行不同级别的服务拆分;

  • 纵向扩展

从单个系统架构的纵向来分析:展现层、应用层、业务层、组件层、存储层;

纵向深入,其映射的是业务逻辑的复杂度,在纵向上进行分层设计,可以降低逻辑管理的难度;

  • 业务研发

基于常规的分布式系统来看,业务研发在演变的过程中,也会拆分为应用级业务,公共业务两大板块;

应用业务实现的是具体需求场景,而公共业务则是大多数应用都依赖的基础业务能力;

  • 技术研发

基于常规的分布式系统来看,合理的架构设计,必然会追求技术与业务的分离;

在代码工程的分包上,可以独立封装技术层面的组件应用,以便于统一维护和升级;

在服务级别上,可以将组件服务拆分为业务(侧重业务解决方案)与技术(侧重技术解决方案)两个层次;

分析业务,把握技术架构的演进历程,将二者进行统筹结合,就是方案设计的主线;


05


【统筹技术和业务方案】

设计研发方案,自然需要把握业务的整体,规划技术架构,确保业务和技术双线推进;

方案的核心则是围绕当前阶段的具体业务需求,设计实现流程、目标、指标;

  • 业务和技术的演进

分别把握整体与阶段的核心目标,作为方案设计的基础指导原则;

从业务整体上看,系统建设与技术架构应该围绕大的业务目标去考量,支撑或者驱动业务发展;

从业务阶段上看,把握当前阶段的业务本质,关键问题与核心矛盾,在版本需求中有序解决;

  • 业务和技术的流程

分析业务的运转流程和特征,映射为技术的实现过程,作为方案设计的核心思想;

业务的运转流程,围绕客户、产品、组织协作来设计,侧重于场景的分析;

业务映射的系统流程,将业务流程和特征转化为系统实现的流程,侧重于两者的统筹分析;

核心逻辑的实现流程,围绕具体需求,设计逻辑时序图,侧重于关键问题的分析;

  • 业务和技术的目标

围绕具体需求,设定相应的目标和指标拆解,作为方案执行结果的考量标准;

版本需求立项之时,就对结果有明确的预期,目标贯穿业务需求的完整周期,在组织协作中是关键导向;

指标用来衡量目标达成的执行过程和最终完成度,侧重于对目标进行验证;

综合来看,对于业务和技术的方案来说;

有业务的整体思考,技术的系统性架构,具体需求的核心设计与落地执行,以及目标和指标的衡量标准;


06


最后,回到工作实践中来,做事虽然有很多方式方法,但是从来没有绝对的标准;

业务也好,技术也罢;

在周期演进的过程中,始终受到组织架构和团队人员的最根本影响;

所以在输出业务和技术方案时,要围绕环境的真实现状,做出相应的调整优化,把握核心即可;


相关文章:

设计「业务」与「技术」方案

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

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)著作权归作者所有。商业转载请联系作者获得授权&#xff0…...

【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 接口&#xff0c…...

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…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...