我觉得 “砍需求” 是程序员最牛逼的本领

在下认为,不会 “砍需求” 的程序员不是好程序员,工作经验越丰富的程序员,砍需求的本领一般就越高。即使现在我多了一个身份 —— 管理团队,我也会帮开发同学去跟产品砍需求。
没错,从管理者的角度,我希望我团队的同学都能学会砍需求,而不是像个需求机器一样,产品经理或者老板说什么,就去做什么。
为什么?说说我的看法。

1、砍需求的本质

注意,砍需求不是砍产品经理,也不是单纯地 “拽” —— 劳资是大爷、劳资说不做就不做!

这样肯定是不行滴,你这样东哥都不愿意跟你做兄弟。

砍需求的并不是为了推卸责任,而是为了让自己舒服、让团队舒服,确保项目能够按时、按质、按量地完成。

砍需求的前提是对需求有深刻的理解,这就包括理解需求的背景、需求的目标、分析需求的优先级、可行性、以及对用户和业务的影响等等。

虽然需求很多时候是产品经理或者老板提出的,但毕竟他们也只是 “个体”,他们也会犯错、也会出现乱甩需求的情况。作为一名专业的开发,我们有义务理解需求、并且拒绝无意义的需求。毕竟谁也不希望自己做的需求没有任何意义对吧?

比如老板昨天喝高了,临时起意说:“我想让网站炫酷一点”,然后开发二话不说,回去花了一周时间,搞了一堆狂拽炫酷吊炸天的网页动效,什么 WebGL 都给你整上。结果验收的时候,老板说:“我们特么做的是一个信息查询网站,你整那么华丽呼哨干嘛!”

你本想辩解,可辩解又有什么用呢?还不是默默承受。

如果再给你一次机会,问问这几个问题:

● 为什么要把网站做的炫酷?有什么意义?
● 炫酷一点具体是指什么,有没有理想的效果?
● 实现复杂度高不高,如果较为复杂,是不是可以排期到以后再做?

前期多嘴,是为了后期不悔啊!
请添加图片描述
所以理解需求、跟需求提出方保持统一是很重要的,之前我们团队的开发同学,在需求评审会上 “大放豪言”,产品经理说完需求,他就说:“这个简单!好做!”

结果后期验收需求的时候,发现做出来的效果和我们想象的完全不一样,错把一个让用户自主上传内容的页面做成了一个给管理员上传内容的页面。究其原因,就是对需求的背景理解错误了,搞错了需求的目的是为了让用户参与共建,而不是只给用户看管理员发布的内容。

2、砍需求不是乱砍

砍需求不是乱砍,而是要有理有据,有章法。

我发现自己团队的同学不太会砍需求,有时产品经理说完需求后,开发同学要么就默默接受了,结果到后面开发阶段才跟产品 “诉苦”;要么就是一通回怼,典型的就是 “这周时间来不及”、“这个需求我觉得没用” 等等。

换位思考一下,这种理由其实很难说服对方。

怎么砍需求?

第一式、共同目标

表明目前做这个需求对达成目标的帮助不大,可以投入时间做性价比更高、更好实现目标的工作。将个人的意见和想法进行上升,证明砍需求不是因为我不想做,而是确实没啥用。

第二式、数据支持

用客观的数据和事实来证明需求的价值,而不是 “我觉得、我猜测、我认为”。举个例子,现在我们要优化编程导航的搜索功能。技术同学一听,老开心了:“我终于有机会用 Elasticsearch 啦!终于不是拧螺丝啦!”

“拜托,看看您那搜索功能,每天 不到 10 个用户 在用,优化个龟龟哦?!”

后面的才是正解,通过已有数据来证明需求的意义。技术是为业务服务的,业务都没必要做,又何必要用更复杂的技术呢?

第三式、阶段性迭代

通俗一点,就是需求拆解。

很多时候,如果一个需求较为复杂,或者需求方要的比较急,与其直接拒绝(反正后面也得做),不妨思考下能否 “小砍一刀”?比如将复杂的需求拆解为一期、二期、三期,如果非要这周上线,那可以先做一期,后面再优化。

这也是大厂员工的 “惯用伎俩”。为什么这么说呢?在下认为,大厂一般都是各司其职,专业的事情有专业的人去做,通常都会有产品经理来整需求,需求往往会更复杂、更体系化。如果你不会拆解,非要把整个需求一起实现,哪怕时间拖得很长,也会觉得需求很复杂、很难实现,压力山大。而如果你 “砍” 得合适,说不定做完一期之后,效果不好,后面也都不用做了。

毕竟很多时候,后面再优化 == 后面不做了。

第四式、金蝉脱壳

这是一种更高级的砍需求方法,需要开发同学有足够的业务经验积累。说人话就是给当前的需求找到更合适的替代方案。

我觉个自己团队的例子,前段时间我们想统计下老鱼简历的数据,比如注册率和注册来源等,按照正常的方式,可能是需要开发统计分析的能力,我们开发同学也欣然接受了。

但由于自己之前的经验,我知道可以通过系统已经接入的第三方统计分析平台提供的 “上下游分析” 的能力来推测出其中的部分指标,只需要产品在平台上配置即可,就不用什么都开发了。

就是这样,我成功帮开发同学砍掉了部分开发需求,将一个技术问题转变成了业务问题。

3、上级为什么希望开发学会砍需求?

换位思考一下就能理解了,无论你的上级是什么级别,他都有自己的 KPI(目标)要完成。人力和时间都有限的情况下,只要手下的开发同学花时间做了乱七八糟的、无意义的需求,就会影响目标的完成情况。所以上级喜欢的,是能够帮他完成目标的开发,砍不砍需求只是一些小的操作,哪怕你不会砍需求,多花点时间加班完成工作倒也不是不行;但如果有更好的方式达成目标,砍一砍需求,何乐而不为呢?

回归到我自己身上,为什么我希望团队同学都会砍需求,因为每一天都是从我的账户上扣钱啊!!!我当然也是希望人力花在刀刃上。
请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native 之 BackHandler (二十)

react-native 中的 BackHandler 是一个用于处理 Android 设备上的硬件返回按钮(back button)和 iOS 设备上的手势返回(swipe back gesture)的模块。在 React Native 应用中,当用户按下返回按钮或执行返回手势时&#x…

消灭对账,提升资金周转率,实现购销双方共赢

在当今激烈的市场竞争中,购销双方都在寻求一种能够彻底消灭繁琐对账、提升资金周转率、实现共赢的解决方案。用友新一代结算协同方案,正是应时而生,以全新的数字化理念和技术手段,帮助企业革新传统供应链管理模式。 该方案运用云…

web练习

[CISCN 2022 初赛]ezpop ThinkPHP V6.0.12LTS 反序列化漏洞 漏洞分析 ThinkPHP6.0.12LTS反序列漏洞分析 - FreeBuf网络安全行业门户 解题过程 ThinkPHP V6.0.12LTS反序列化的链子可以找到,找到反序列化的入口就行 反序列化的入口在index.php/index/test 链子 …

latex中伪代码后面多出=0

这latex简直就是憨猪!!! \usepackage{algpseudocode} 注释掉,或者删除就可以了 还有,引用包的时候一般begin{}中括号里是什么就引入什么包。 这下面这几行,开始全爆红说没定义,我就去一行一行问…

【SPSS】基于因子分析法对水果茶调查问卷进行分析

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

P2341 受欢迎的牛

题目描述 每一头牛的愿望就是变成一头最受欢迎的牛。现在有 N 头牛,给你 M 对整数,表示牛 A 认为牛 B 受欢迎。这种关系是具有传递性的,如果 A 认为 B 受欢迎,B 认为 C 受欢迎,那么牛 A 也认为牛 C 受欢迎。你的任务是…

ToList()和ToArray()的区别

以下是具体分析&#xff1a; 1. 返回类型 ToList()&#xff1a;返回一个泛型列表 List<T>&#xff0c;其中 T 是列表中元素的类型。 ToArray()&#xff1a;返回一个 Object 类型的数组。如果需要特定类型的数组&#xff0c;必须使用重载的 ToArray(T[] a) 方法&#x…

MATLAB学习:频谱图的绘制

1.概述 时域信号经FFT变换后得到了频谱,在作图时还必须设置正确的频率刻度,这样才能从图中得到正确的结果。 2.案例分析 下面透过一个简单的例子来分析频谱图中频率刻度(横坐标)的设置的重要性。一余弦信号,信号频率为30Hz,采样频率100Hz,信号长128,在FFT后做谱图&#xff0…

Iphone自动化指令每隔固定天数打开闹钟关闭闹钟(二)

1.首先在搜索和操作里搜索“查找日期日程" 1.1.然后过滤条件开始日期选择”是今天“ 1.2.增加过滤条件&#xff0c;日历是这里选择”工作“ 1.3.增加过滤条件&#xff0c;选择标题&#xff0c;是这里选择”workDay“ 1.4选中限制&#xff0c;日历日程只要一个&#xff0c;…

iPhone win10更改备份路径

1 删掉或改名 旧的Backup, 否则不能连接 ren "C:\Users\Administrator\Apple\MobileSync\Backup" Backup_old 2 在目标盘中 创建新的文件夹 手动创建 MobileSync\Backup 3 链接两个文件夹 mklink /J "C:\Users\Administrator\Apple\MobileSync\Backup" &qu…

代码随想录-Day22

235. 二叉搜索树的最近公共祖先 方法一&#xff1a;两次遍历 class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {List<TreeNode> path_p getPath(root, p);List<TreeNode> path_q getPath(root, q);TreeNode anc…

k8s部署calico遇到的问题

kubernetes安装calico calico官网 环境&#xff1a;centos7.9&#xff0c;calico 3.23&#xff0c;kuberadm 1.26 问题1&#xff1a;执行kubectl create -f calico.yml后报错如下 error: resource mapping not found for name: “tigera-operator” namespace: “” from “…

echarts-dataset,graphic,dataZoom, toolbox

dataset数据集配置数据 dataset数据集&#xff0c;也可以完成数据的映射&#xff0c;一般用于一段数据画多个图表 例子&#xff1a; options {tooltip: {},dataset: {source: [["product", "2015", "2016", "2017"],["test&q…

HTTP Basic Access Authentication Schema

HTTP Basic Access Authentication Schema 背景介绍流程安全缺陷参考 背景 本文内容大多基于网上其他参考文章及资料整理后所得&#xff0c;并非原创&#xff0c;目的是为了需要时方便查看。 介绍 HTTP Basic Access Authentication Schema&#xff0c;HTTP 基本访问认证模式…

【在 Windows 上使用 ADB 安装 Android 设备上的 atx-agent】

在进行 Android 应用的 UI 自动化测试时&#xff0c;通常需要在设备上安装一些辅助工具。其中一个常用的工具是 atx-agent&#xff0c;它可以帮助我们在 Android 设备上进行 UI 自动化操作。本文将介绍如何在 Windows 环境下使用 ADB 安装 Android 设备上的 atx-agent。 1. 下…

ThreadLocal:熟悉的陌生词,你应该要知道的。

Hi,大家好&#xff0c;我是抢老婆酸奶的小肥仔。 在很多的地方&#xff0c;我们都能看到ThreadLocal的身影&#xff0c;也会用到它&#xff0c;但是我们真的就了解它吗&#xff1f; 今天我们来叨叨这个我们既熟悉又陌生的小伙伴&#xff0c;废话不多说开整。 1、啥是ThreadL…

云原生架构内涵_3.主要架构模式

云原生架构有非常多的架构模式&#xff0c;这里列举一些对应用收益更大的主要架构模式&#xff0c;如服务化架构模式、Mesh化架构模式、Serverless模式、存储计算分离模式、分布式事务模式、可观测架构、事件驱动架构等。 1.服务化架构模式 服务化架构是云时代构建云原生应用的…

[ C++ ] 深入理解模板( 初 阶 )

函数模板 函数模板格式 template <typename T1, typename T2,......,typename Tn> 返回值类型 函数名(参数列表){} 注意&#xff1a; typename是用来定义模板参数关键字&#xff0c;也可以使用class(切记&#xff1a;不能使用struct代替class) 函数模板的实例化 模板参数…

鸿蒙开发接口图形图像:【WebGL】

WebGL WebGL提供图形绘制的能力&#xff0c;包括对当前绘制图形的位置、颜色等进行处理。 WebGL标准图形API&#xff0c;对应OpenGL ES 2.0特性集。 说明&#xff1a; 开发前请熟悉鸿蒙开发指导文档&#xff1a; gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md…

c++编程(15)——list的模拟实现

欢迎来到博主的专栏——c编程 博主ID&#xff1a;代码小豪 文章目录 前言list的数据结构list的默认构造尾插与尾删iterator插入和删除构造、析构、赋值copy构造initializer_list构造operator 析构函数 前言 受限于博主当前的技术水平&#xff0c;暂时还不能模拟实现出STL当中用…