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

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

1、砍需求的本质

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

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

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

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

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

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

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

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

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

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

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

2、砍需求不是乱砍

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

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

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

怎么砍需求?

第一式、共同目标

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

第二式、数据支持

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

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

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

第三式、阶段性迭代

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

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

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

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

第四式、金蝉脱壳

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

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

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

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

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

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

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

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

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

相关文章

7 步解决Android Studio模拟器切换中文输入

详细步骤传送地址:Android Studio 模拟器切换中文输入 目录 01 问题概述 02 模拟器的调试 01 问题概述 大家在使用Android Studio 软件进行项目演示时总会遇到一些输入框需要输入中文汉字的情况,由于AS自带的模拟器基本都是英文,这时就有同…

【网络原理】HTTPS详解

一.HTTPS的相关基本概念 HTTPS:由于HTTP协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况. 可能会出现运营商劫持,黑客入侵等不利影响, 因此就引入了HTTPS,其本质上就是在HTTP协议的基础上,引入了一个加密层SSM.什么是运营商劫持? 例如我们要…

UI线程和工作线程

引用:windows程序员面试指南 工作线程 只处理逻辑的线程,例如:启动一个线程,用来做一个复杂的计算,计算完成之后,此线程就自动退出,这种线程称为工作线程 UI线程 Windows应用程序一般由窗口…

CIM分级

定义 以建筑信息模型(BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据,构建起三维数字空间的城…

护网在即,请拿你走你的蓝队神器!~

前言 养兵千日用兵一时,护网已经临近了,你是不是还在考虑现场一系列可能发生的情况?提前找好工具,避免在甲方面前太尴尬? 你需要它! 据我了解,去年国护的时候就已经有不少攻城狮在使用我们的蓝队应急响应工具箱&am…

设计模式——工厂三兄弟之工厂方法

1.业务需求 ​ 大家好,我是菠菜啊。在介绍这期工厂方法模式前,我们先来看看这样的需求:升级之前的计算器,增加对数和指数运算。(看这篇文章前可以先回顾《设计模式——工厂三兄弟之简单工厂》这篇) 2.初…

Comfyui导出图片的命名技巧,日期文件夹

种子序号命名:%KSampler.seed% 图片宽高序号命名:%Empty Latent Image.width%x%Empty Latent Image.height% 年月日:%date:yyyy-MM-dd% 时分秒:%date:hhmmss% 年月日种子序号:%date:yyyy-MM-dd%/%KSampler.seed%

「清新题精讲」CF260E - Dividing Kingdom

CF260E - Dividing Kingdom D e s c r i p t i o n \mathrm{Description} Description 给定 n n n 个点 ( x i , y i ) (x_i,y_i) (xi​,yi​) 和长度为 9 9 9 的数列 a a a,满足 ∑ i 1 n a i n \sum_{i1}^na_in ∑i1n​ai​n。通过 2 2 2 条平行于 x x …

Mac连接虚拟机(Linux系统)

1.确定虚拟机的IP地址 ifconfig //终端命令,查询ip地址 sudo apt install net-tools 安装完成后再次执行 ifconfig: 2.安装SSH(加密远程登录协议) (1).安装OpenSSH服务器软件包: sudo apt-get install openssh-ser…

leetCode.86. 分隔链表

leetCode.86. 分隔链表 题目思路&#xff1a; 代码 class Solution { public:ListNode* partition(ListNode* head, int x) {auto lh new ListNode(-1), rh new ListNode(-1);auto lt lh, rt rh;for(auto p head; p; p p->next ) {if(p->val < x) {lt lt->…

33 mid 55. 跳跃游戏

贪心算法&#xff1a; class Solution {public boolean canJump(int[] nums) {int leftBorder 0;for (int i 0; i <nums.length; i) {if(i<leftBorder){leftBorderMath.max(leftBorder,inums[i]);}if(leftBorder>nums.length-1){return true;}}return false;} }

精酿啤酒:品质与口感对啤酒消费趋势的影响

随着消费市场的不断变化&#xff0c;啤酒消费趋势也在发生着演变。在这个过程中&#xff0c;品质与口感成为了影响啤酒消费趋势的重要因素。对于Fendi club啤酒而言&#xff0c;其卓着的品质和与众不同的口感对啤酒消费趋势产生了深远的影响。 品质的提升是推动啤酒消费趋势发展…

fastadmin部署后JSHint报错,导致Config::getValueByName()无法获取到值

问题 解决方案 一、本地 在phpstorm中&#xff0c;依次点击【设置】-【JSHint】-【取消勾选Enable】-【应用】即可。

Neural Filters:深度模糊

Ps菜单&#xff1a;滤镜/Neural Filters/摄影/深度模糊 Neural Filters/PHOTOGRAPHY/Depth Blur 深度模糊 Depth Blur滤镜可以在图像中创建环境深度以提供前景或背景对象。 “深度模糊”滤镜利用 AI 技术&#xff0c;分析图像的深度信息&#xff0c;生成一个深度图&#xff0c;…

爬虫案例-亚马逊反爬分析-验证码突破(x-amz-captcha)

总体概览&#xff1a;核心主要是需要突破该网站的验证码&#xff0c;成功后会返回我们需要的参数后再去请求一个中间页&#xff08;类似在后台注册一个session&#xff09;&#xff0c;最后需要注意一下 IP 是不能随意切换的 主要难点&#xff1a; 1、梳理整体反爬流程 2、验证…

【JavaScript】ECMAS6(ES6)新特性概览(二):解构赋值、扩展与收集、class类全面解析

&#x1f525; 个人主页&#xff1a;空白诗 &#x1f525; 热门专栏&#xff1a;【JavaScript】 文章目录 &#x1f33f; 引言五、 Destructuring Assignment - 解构赋值&#xff0c;数据提取的艺术 &#x1f3a8;&#x1f4cc; 数组解构&#x1f4cc; 对象解构&#x1f4cc; 特…

iOS自动连接已知Wi-Fi功能的实现

首先需要在配置文件申请的时候将hotspot勾选上&#xff0c;之后还要在x-code里添加对应的配置&#xff0c;由于我们并没有用到获取设备周边Wi-Fi的功能&#xff0c;所以就没申请相关权限 相关连接Wi-Fi代码如下&#xff1a; #import <NetworkExtension/NetworkExtension.h&…

LeetCode583:两个字符串的删除操作

题目描述 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 代码 解法1 /*dp[i][j]&#xff1a;以i-1为结尾的wrod1中有以j-1为尾的word2的个数为了让word1和word2相同&#xff0c;最少操作…

排序专题(常见8种)【思路解析和代码实现】【2w字长文】

排序专题&#xff08;常见8种&#xff09; 1.排序的概念及其运用 1.1排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中…

如何在文档中有效添加网格:技巧与实例

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;为何添加网格至关重要 二、网格添加的基本步骤 1. 确定网格类型和样式…