程序员如何做好需求判断?

1. 导语

本文作为2024上半年核心思考之二。

通过他人经验传导、个人实践、广泛阅读书籍(方法论类、企业经营类、传记类、财务类,具体书单附文末),学会基于更高阶的经营者视角来做业务需求判断。本文思路如下:

  • 首先,抛一个灵魂问题让大家思考: 你评估过自己负责的项目做的好不好吗?

  • 接着,带着问题看解决思路

2. 引人深思的问题

正在看本文的你:

评估过自己负责的项目做的好不好吗?

可能大多数人的答案是「按时、按质做完」。这个答案没错。接着,继续问:

按时,按质的标准是什么?

对于我们程序员来说,可能标准的答案:

  • 按时:业务预期时间内完成项目交付

  • 按质:

    • 功能:满足业务需求(实现功能)

    • 性能:接口峰值QPS满足业务极端场景等

    • 质量:千行代码bug率、故障数

    • 收益:符合预期

这个答案没问题,只是不够。

不够在哪?

答:基于更高的要求,不够在缺少个人思考:缺少基于经营者视角的思考,也就是经营者意识。如果能想到「按时、按质做完」答案的同学,在团队中主要还是扮演执行者的角色(项目来了,按时按质交付),如下:

48aebbdd160537aae8100eca81110dc5.png

所以:

程序员如何能以经营者视角的思考评估工作呢?

答:核心自驱完成从“执行者”到“思辨者(具备经营者意识)”转变。如何完成?主要步骤如下:

  • 明确角色转变目标

  • 如何实现角色转变?

    • 养成习惯(解决有没有的问题):解决有没有以经营者视角思考的问题

    • 结构化思维+阅读(解决好不好的问题):通过阅读,学习结构化思维和企业经营知识、财务知识、互联网思维等,解决经营者视角做的好不好的问题

3. 如何以经营者视角评估工作?

3.1 明确角色转变目标

从“执行者”到“思辨者”的转变,且是具备经营者意识的思辨者。

什么是思辨者?

3.1.1 什么是思辨者?

对于同样的任务输入,思辨者相对于执行者:

表现上:

  • 会多问为什么?

  • 会积极发表意见和建议

根上:

  • 搞清楚逻辑:为什么这么做?

  • 合理性判断:这里的逻辑是不是有什么问题?

  • 建设性建议:这样做是不是会更好?

50701a564c148bb66a060b2ae523974f.png

什么是经营者意识?

3.1.2 什么是经营者意识?

开公司的目的是什么?挣钱。判断挣钱的指标是什么?利润。

所以企业经营者会更加关注:

  • 项目能带来的利润

  • 项目能提升利润的背后逻辑

  • 项目的投入产出比

31037cbf7182a075ffa1bae2bc79568f.png

3.2 如何实现角色转变?

  • 步骤一,养成习惯(解决有没有的问题):解决有没有以经营者意识思考的问题

  • 步骤二,结构化思维+阅读(解决好不好的问题):通过阅读,学习结构化思维和企业经营知识、财务知识、互联网思维等,解决经营者视角做的好不好的问题

详细展开如下:

3.2.1 养成习惯(解决有没有)

解法:养成习惯,比如

  • 提前思考需求:提前看需求文档,关于需求收益部分提前产出自己的问题,做好准备。比如,典型的问题,这个收益是如何预估出来的?

  • 需求评审多问:每次在需求沟通时,强制自己多去问问需求收益的逻辑是什么,哪怕听不懂,敢问

但养成习惯只解决有没有转变的问题,不解决转变过程做的好不好?接下来,解决做的好不好的问题。

3.2.2 结构化思维+阅读(解决好不好)

  • 结构化思维:通过结构化思维拆解复杂问题

  • 阅读:通过阅读学习结构化思维拆解方法论和获取企业经营经验、互联网思维经验、财务知识等

什么是结构化思维?

3.2.2.1 什么是结构化思维?

关于结构化的概念,我拆解成了两部分:

  • 结构化表达:本文不包含结构化表达部分。结构化表达的目的是如何能帮助我们“说清楚”,比如典型的方法论有金字塔原理等。

  • 结构化拆解: 本文核心是结构化拆解。结构化拆解的目的是如何能帮助我们“想清楚”,特别是面对复杂的问题,比如基于经营者视角如何能找到提升利润的方向和具体的项目?

如何进行结构化拆解?

通过阅读《麦肯锡结构化战略思维》得到:

  • 公式法: 来源经验,经验包括自身实战积累、他人言传身教、他人总结分享(媒体资源、书籍)。我当前经验主要来源于企业经营相关书籍,比如稻盛和夫的《阿米巴经营》、刘润的《底层逻辑2:理解商业世界的本质》等(详细书单附文章末尾)。

  • 子目录列举法:穷举出所有的因子,且因子不相交

  • 流程法:按照流程进行拆解

  • 等等

基于以上方法,我们以平台电商业务为例,进行结构化拆解:

基于经营者视角如何能找到提升利润的方向和具体的项目?

第1层拆解:如何提升利润

  • 目标:提升利润

  • 问题:如何提升利润?

  • 方法:公式法,利润 = 收入-费用(公式来源:财务知识,书籍《世界上最简单的会计书》、《底层逻辑2》)

  • 方向:通过公式可以清楚得到影响利润的两大因子:收入和费用,要不提升收入,要不就降低费用,也就是俗话说的开源节流,以及稻盛和夫提到的企业经营原则:收入最大化和费用最小化(来源数据《阿米巴经营》》)。

c9e875bef61f57a44d3f4a73ebb48341.png

第2层拆解:如何提升收入

  • 目标:确认收入公式

  • 问题:如何提升收入?

  • 方法:公式法,收入 = 市场*品类*流量*转化率*客单价*复购率(公式来源:书籍《增长黑客》、《精益数据分析》)

  • 方向

    • 市场:拓展市场,比如出海

    • 品类:拓展商品类别

    • 流量:进一步拆解因子

    • 转化率:进一步拆解因子

    • 客单价:进一步拆解因子

    • 复购率:进一步拆解因子

8e19daa8d03ef29e146df91757d96600.png

第3层拆解之一:如何提升流量

  • 目标:找到所有流量来源

  • 问题:如何提升流量?

  • 方法:子目录列举法,自然流量|搜索流量|付费流量|消息触达|外链

  • 方向

    • 直接流量:-

    • 搜索流量:比如评估网页SEO质量,进行SEO优化

    • 付费流量:比如增加投入

    • 消息触达:比如丰富触达场景

    • 外链:比如增加站外链接

fd52174f6147cfd913e76aabfb2277a4.png

第3层拆解之二:如何提升转化率

  • 目标:建立流量漏斗分析

  • 问题:如何提升转化率?

  • 方法:流程法,完成下单流程拆解:商品到购物车转化 | 购物车到订单转化 | 订单到支付转化

  • 方向

    • 商品到购物车转化率:进一步拆解因子

    • 购物车到订单转化率: 同上

    • 订单到支付转化率: 同上

7cb1e475d53c7431963edfedc500f82a.png

按照以上的思路层层拆解,能帮助我们清楚的找到提升利润的方向和具体项目,让我们想清楚。具体拆解结果如下:

8aa591aa17e7e0be91cc0d48dfb1bc23.jpeg

4. 总结

  • 养成习惯:养成基于经营者视角多问为什么的习惯

  • 学会拆解:通过结构化拆解过程判断需求逻辑是否合理

  • 储备知识:通过阅读书籍补充财务、企业经营、互联网思维(增长公式)知识,增强个人逻辑拆解&逻辑判断知识储备

通过以上过程,我们完成“执行者”到“思辨者(具备经营者意识)”转变后,再来看开头的问题:

如何评估自己负责的项目做的好不好吗?

相对于开始的答案,我们新增了一条:

  • 做好需求准入判断:需求的逻辑是什么?需求的量化目标是什么?目标测算的逻辑是什么?

  • 按时:业务预期时间内完成项目交付

  • 按质:

    • 功能:满足业务需求(实现功能)

    • 性能:接口峰值QPS满足业务极端场景等

    • 质量:千行代码bug率、故障数

    • 收益:符合预期

反过来增加这条让我们能真正的参与企业经营,而不仅仅是一个事情的“执行者”或者“透传者”。同时,这也是我意识到打工的核心。


书单附录:

1.《麦肯锡结构化战略思维》:经典结构化拆解问题的方法论。

2. 《增长黑客》:互联网思维下的增长方法论,定义增长公式+指标牵引(不断变化的北极星指标+AB实验)

3. 《精益数据分析》:做好数据驱动的方法论,选择正确指标,建立底线指标。

4. 《世界上最简单的会计书》:财务知识入门必看,以一个卖柠檬水小摊的示例讲解资产负债表、利润表等财务概念。

5. 《底层逻辑2》:通过数学问题视角解释商业逻辑,比如资产负债表、利润表的作用。

6.《阿米巴经营》:一代大师的企业经营理念:全员参与经营等


电商系统设计系列更多文章

  • [Skr-Shop]一篇文章搞清电商订单结算页面设计?

  • [Skr-Shop]做电商还搞不清一元秒杀、常规秒杀、限时购?

  • [Skr-Shop]什么,秒杀系统也有这么多种!

  • [Skr-Shop]你想知道的优惠券业务,SkrShop告诉你

  • [Skr-Shop]通用抽奖系统之系统设计

  • [Skr-Shop]通用抽奖系统之需求分析

  • [Skr-Shop]营销体系开篇

  • [Skr-Shop]购物车设计之架构设计

  • [Skr-Shop]购物车设计之需求分析

  • [Skr-Shop]coder,你会设计交易系统吗(实干篇)?

  • [Skr-Shop]coder,你会设计交易系统吗(概念篇)?

  • [Skr-Shop]电商设计手册之基础商品信息

  • [Skr-Shop]支付开发,不得不了解的国内、国际第三方支付流程

  • [Skr-Shop]电商设计手册之用户体系

97a29e8dc66a3cd1c50c4777e1f77137.jpeg

6e610c72976cc1cdad456e62a02d6945.png

原创不易,欢迎👏🏻右下角点赞在看支持,

让作者的辛勤付出得到认可,感谢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/782610.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【server】springboot 整合 redis

1、redis 使用模式 1.1 单机模式 1.1.1 编译安装方式 1.1.1.1 下载 Redis的安装非常简单,到Redis的官网(Downloads - Redis),下载对应的版本,简单几个命令安装即可。 1.1.1.2 编译安装 tar xzf redis-stable.tar.…

IDEA 开发工具

IDEA 开发工具 IDEA软件激活新建项目新建project 运行调试 IDEA软件激活 访问激活码网进入带*的域名下载并解压左上角的zip包先执行sh uninstall.sh,再执行sh install.sh在带*的网页中复制并使用激活码code 新建项目 新建project file》New〉Project》New Proje…

【测试】系统压力测试报告模板(Word原件)

系统压力测试,简而言之,是在模拟高负载、高并发的环境下,对系统进行全面测试的过程。它旨在评估系统在面对极端使用条件时的性能表现,包括处理能力、响应时间、资源消耗及稳定性等关键指标。通过压力测试,开发团队能够…

MySQL之备份与恢复和MySQL用户工具(一)

备份与恢复 备份脚本化 为备份写一些脚本是标准做法。展示一个示例程序,其中必定有很多辅助内容,这只会增加篇幅,在这里我们更愿意列举一些典型的备份脚本功能,展示一些Perl脚本的代码片段。你可以把这些当作可重用的代码块&…

Python酷库之旅-第三方库Pandas(009)

目录 一、用法精讲 19、pandas.read_xml函数 19-1、语法 19-2、参数 19-3、功能 19-4、返回值 19-5、说明 19-6、用法 19-6-1、数据准备 19-6-2、代码示例 19-6-3、结果输出 20、pandas.DataFrame.to_xml函数 20-1、语法 20-2、参数 20-3、功能 20-4、返回值 …

【国产开源可视化引擎Meta2d.js】网格

画布背景网格 在线体验: 乐吾乐2D可视化 示例: // 设置默认缺省网格属性 meta2d.store.options.grid true; // 开启 meta2d.store.options.gridColor eeeeee; // 网格线条颜色 meta2d.store.options.gridSize 10; // 格子大小// 设置单个图纸的网格…

Golang | Leetcode Golang题解之第222题完全二叉树的节点个数

题目&#xff1a; 题解&#xff1a; func countNodes(root *TreeNode) int {if root nil {return 0}level : 0for node : root; node.Left ! nil; node node.Left {level}return sort.Search(1<<(level1), func(k int) bool {if k < 1<<level {return false}…

【ETABS】【RHINO】案例:Swallow to ETABS

文章目录 01. Swallow Overview总览1 LOAD&#xff1a;Defination of LoadCase、Response Combo2 SectionArea Section and Area Load&#xff08;面截面定义与指定&#xff0c;面荷载指定&#xff09;Frame Section with rebarattr and linear load&#xff08;带钢筋属性框架…

flutter:监听路由的变化

问题 当从路由B页面返回路由A页面后&#xff0c;A页面需要进行数据刷新。因此需要监听路由变化 解决 使用RouteObserver进行录音监听 创建全局变量&#xff0c;不在任何类中 final RouteObserver<PageRoute> routeObserver RouteObserver<PageRoute>();在mai…

Hi3861 OpenHarmony嵌入式应用入门--UDP Server

本篇使用的是lwip编写udp服务端。需要提前准备好一个PARAM_HOTSPOT_SSID宏定义的热点&#xff0c;并且密码为PARAM_HOTSPOT_PSK。 修改网络参数 在Hi3861开发板上运行上述四个测试程序之前&#xff0c;需要根据你的无线路由、Linux系统IP修改 net_params.h文件的相关代码&…

基于轨迹信息的图像近距离可行驶区域方案验证

一 图像可行驶区域方案 1.1 标定场景 1.2 标定步骤 设计一定间距标定场&#xff0c;在标定场固定位置设置摄像头标定标识点。主车开到标定场固定位置录制主车在该位置各个摄像头数据&#xff0c;通过摄像头捕获图像获取图像上关键点坐标pts-2d基于标定场设计&#xff0c;计算…

Python | Leetcode Python题解之第222题完全二叉树的节点个数

题目&#xff1a; 题解&#xff1a; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def countNodes(self,…

基于字典学习的地震数据降噪(MATLAB R2021B)

稀疏表示基于研究者们提出了许多变换基函数的方法逐渐成型&#xff0c;比如小波域&#xff0c;曲波域&#xff0c;dreamlet 域等&#xff0c;其原理是利用地震信号在变换域内的稀疏性和可分离性以去除噪声。继 Donoho发表非线性去噪方法-小波阈值萎缩方法&#xff0c;在后续的研…

汉中茗茶小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;茶叶管理&#xff0c;论坛管理&#xff0c;公告管理&#xff0c;茗茶历史管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;茗茶信息&#xf…

阶段三:项目开发---搭建项目前后端系统基础架构:任务9:导入空管基础数据

任务描述 本阶段任务是导入项目的基础数据&#xff0c;包括空管基础数据和离线的实时飞行数据&#xff08;已经脱敏&#xff09;。 任务指导 本阶段任务需要导入两种数据&#xff1a; 1、在MySQL中导入空管基础数据 kongguan.sql空管基础数据表说明&#xff1a; 1告警信息…

JVM原理(二二):JVM虚拟机线程调度与状态转换

1. Java线程调度 Java的线程是被映射到系统的原生线程上实现的 线程调度是指系统为线程分配处理器使用权的过程&#xff0c;调度主要方式有两种&#xff0c;分别是协同式线程调度和抢占式线程调度。 协同式线程调度&#xff1a;如果使用协同式调度的多线程系统&#xff0c;线…

Cortex-A510——内核及汇编

Cortex-A510——内核及汇编 小狼http://blog.csdn.net/xiaolangyangyang 1、异常等级 2、异常等级切换 同步异常&#xff1a; 1、SVC/HVC/SMC&#xff1b; 2、MMU引发的异常&#xff08;内核态EL1发生&#xff0c;发生后不会进行异常等级切换…

Java基础-内部类与异常处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、Java 内部类 什么是内部类&#xff1f; 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…

java 闭锁(CountDownLatch)

闭锁&#xff08;CountDownLatch&#xff09;是Java中的一个同步辅助类&#xff0c;用于协调多个线程之间的协作。它允许一个或多个线程等待&#xff0c;直到在其他线程中执行的一组操作完成。闭锁非常适用于需要等待一组事件发生之后再执行某些操作的场景。 import java.uti…

maxwell启动报错:Could not find first log file name in binary log index file

出现该问题是因为&#xff1a;maxwell 读取的是 mysql 的 binlog 日志&#xff0c;而配置文件中的两个值与 binlog 的最新值没有保持一致导致 1. 切换到maxwell的库 show master status;记住图片中的 FIle 和 Position 2. 修改maxwell的配置 SELECT * from positions p ;将…