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

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.xdnf.cn/news/1474915.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

60页论文参考:基于Java+SpringMvc+Vue技术的智慧校园系统设计与实现

详细查看地址: 基于JavaSpringMvcVue技术的智慧校园系统设计与实现-CSDN博客 基于JavaSpringMvcVue技术的智慧校园系统设计与实现 六、论文参考:

数据驱动的内容优化:Kompas.ai如何提升内容表现

在数字化营销时代,内容是企业与用户沟通的重要桥梁。然而,随着信息量的爆炸性增长,如何让内容在激烈的竞争中脱颖而出,成为每个营销人员面临的问题。数据驱动的内容优化策略,通过精准分析和科学决策,帮助品…

【Unity】简单举例UI合批,优化draw call

1. UGUI-Editor 首先引入UGUI-Editor插件 链接: https://pan.baidu.com/s/1PpxStvgRCDi9xjUr6j6nCQ?pwdm5ju 提取码: m5ju 或者直接去Github搜索UGUI-Editor 2. 没有UI时 3. 放几个UI看看效果 4. 选中Canvas,右键优化Batch 发现减少了3个,这是因为&…

[LoaderRunner] 关于LoaderRunner的基本使用

LoadRunner环境搭建 LoadRunner运行的环境参考以下文档:Docs 介绍LoadRunner LoadRunner是什么 LoadRunner是性能测试工具,对软件或者系统的性能进行评估 为什么使用LoadRunner LoadRunner具有以下的优势: LoadRunner相比于其他的测试工具…

【高中数学之函数】四种幂函数图线(二次、三次、开方、开立方)

【图像】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>UNASSIGNED</title><style type"text/css">.c…

数字传输系统的演变与应用

引言 在现代通信网络中&#xff0c;数字传输系统扮演着至关重要的角色。本文将用简单易懂的语言&#xff0c;向初学者介绍PCM速率体制、SONET/SDH以及光网络&#xff0c;让大家更好地理解这些技术。 2.5.1 PCM速率体制 数字传输系统简介 在早期电话网络中&#xff0c;用户电话…

[个人感悟] 消息队列应该考察哪些问题?

前言 消息队列. 不论是Java内部提供的LinkedBlockingQueue, 还是当下主流的中间件RabbitMQ, Kafka, RockMQ. 其本质上都是一个削峰填谷的工具. 我们都知道, 请求和流量都有可能瞬间很高, 或者很低. 所以, 很多时候, 我们需要请求存储起来, 或者使用异步的方式, 来匀速的处理过…

【C++】类和对象(中)--下篇

个人主页~ 类和对象上 类和对象中-上篇 类和对象 五、赋值运算符重载1、运算符重载2、赋值运算符重载3、前置和后置重载 六、const成员七、日期类的实现Date.hDate.cpptest.cpptest1测试结果test2测试结果test3测试结果test4测试结果test5测试结果test6测试结果test7测试结果 八…

基于Java+SpringMvc+Vue技术智慧校园系统设计与实现--60页及以上论文参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

8、Redis 的线程模型、I/O 模型和多线程

Redis 的线程模型、I/O 模型和多线程 1. Redis 的线程模型 Redis 以其高效的单线程模型著称&#xff0c;从设计之初&#xff0c;Redis 就选择了单线程模式&#xff0c;这在很大程度上简化了其内部实现和维护。单线程模式避免了多线程编程中常见的竞争条件和锁机制问题&#x…

Linux Bridge - Part 2

概览 在前一篇文章中&#xff0c;我描述了Linux 网桥&#xff08;bridge&#xff09;的配置&#xff0c;并展示了一个实验&#xff0c;其中使用Wireshark来分析流量。在本文中&#xff0c;我将讨论当创建一个网桥时会发生什么&#xff0c;以及Linux 网桥&#xff08;bridge&am…

C++初学者指南-4.诊断---valgrind

C初学者指南-4.诊断—Valgrind Valgrind&#xff08;内存错误检测工具&#xff09; 检测常见运行时错误 读/写释放的内存或不正确的堆栈区域使用未初始化的值不正确的内存释放&#xff0c;如双重释放滥用内存分配函数内存泄漏–非故意的内存消耗通常与程序逻辑缺陷有关&#xf…

Java版Flink使用指南——将消息写入到RabbitMQ的队列中

大纲 新建工程新增依赖 编码自动产生数据写入RabbitMQ 测试 在 《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们介绍了如何使用Java在Flink中读取RabbitMQ中的数据&#xff0c;并将其写入日志中。本文将通过代码产生一些数据&#xff0c;然后…

Vine: 一种全新定义 Vue 函数式组件的解决方案

7月6日的 vue confg 大会上 ShenQingchuan 大佬介绍了他的 Vue Vine 项目&#xff0c; 一种全新定义 Vue 函数式组件的解决方案。 和 React 的函数式组件有异曲同工之妙&#xff0c;写起来直接起飞了。 让我们来快速体验一下 vine&#xff0c; 看看到底给我们带来了哪些惊喜吧…

分别通过LS和RML进行模型参数辨识matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 最小二乘法(LS)参数辨识 4.2 递归最大似然估计(RML)参数辨识 5.完整程序 1.程序功能描述 分别通过LS和RML进行模型参数辨识matlab仿真&#xff0c;仿真输出参数辨识的误差&#xff0c…

网络基础:BGP协议

BGP&#xff08;边界网关协议&#xff0c;Border Gateway Protocol&#xff09;是一种用于在不同自治系统&#xff08;Autonomous Systems&#xff0c;AS&#xff09;之间交换路由信息的路径向量协议。BGP是互联网的核心路由协议之一&#xff0c;负责管理和维护互联网范围内的路…

MySQL安全加固及等保测评

登录后复制 Mysql基础命令 create USER new_userlocalhost IDENTIFIED BY password; //创建用户 alter user root% identified with mysql_native_password by ********; //修改密码 rename user root% to root192.168.1.1; //重命名 flush privileges; …

Java面试题--JVM大厂篇之深入解析G1 GC——革新Java垃圾回收机制

目录 引言: 正文&#xff1a; 一、G1 GC的区域划分及其作用 1. 伊甸园区&#xff08;Eden Region&#xff09; 2. 幸存者区&#xff08;Survivor Region&#xff09; 3. 老年代区&#xff08;Old Generation Region&#xff09; 二、区域划分的优势: 三、图片解析: 结…

昇思25天学习打卡营第20天|LSTM+CRF序列标注

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) LSTMCRF序列标注 概述 序列标注指给定输入序列&#xff0c;给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取&#xff0c;包括分词(Word Segmentation)、词性标…

Python | Leetcode Python题解之第220题存在重复元素III

题目&#xff1a; 题解&#xff1a; class Solution(object):def containsNearbyAlmostDuplicate(self, nums, k, t):from sortedcontainers import SortedSetst SortedSet()left, right 0, 0res 0while right < len(nums):if right - left > k:st.remove(nums[left]…