在下认为,不会 “砍需求” 的程序员不是好程序员,工作经验越丰富的程序员,砍需求的本领一般就越高。即使现在我多了一个身份 —— 管理团队,我也会帮开发同学去跟产品砍需求。
没错,从管理者的角度,我希望我团队的同学都能学会砍需求,而不是像个需求机器一样,产品经理或者老板说什么,就去做什么。
为什么?说说我的看法。
1、砍需求的本质
注意,砍需求不是砍产品经理,也不是单纯地 “拽” —— 劳资是大爷、劳资说不做就不做!
这样肯定是不行滴,你这样东哥都不愿意跟你做兄弟。
砍需求的并不是为了推卸责任,而是为了让自己舒服、让团队舒服,确保项目能够按时、按质、按量地完成。
砍需求的前提是对需求有深刻的理解,这就包括理解需求的背景、需求的目标、分析需求的优先级、可行性、以及对用户和业务的影响等等。
虽然需求很多时候是产品经理或者老板提出的,但毕竟他们也只是 “个体”,他们也会犯错、也会出现乱甩需求的情况。作为一名专业的开发,我们有义务理解需求、并且拒绝无意义的需求。毕竟谁也不希望自己做的需求没有任何意义对吧?
比如老板昨天喝高了,临时起意说:“我想让网站炫酷一点”,然后开发二话不说,回去花了一周时间,搞了一堆狂拽炫酷吊炸天的网页动效,什么 WebGL 都给你整上。结果验收的时候,老板说:“我们特么做的是一个信息查询网站,你整那么华丽呼哨干嘛!”
你本想辩解,可辩解又有什么用呢?还不是默默承受。
如果再给你一次机会,问问这几个问题:
● 为什么要把网站做的炫酷?有什么意义?
● 炫酷一点具体是指什么,有没有理想的效果?
● 实现复杂度高不高,如果较为复杂,是不是可以排期到以后再做?
前期多嘴,是为了后期不悔啊!
所以理解需求、跟需求提出方保持统一是很重要的,之前我们团队的开发同学,在需求评审会上 “大放豪言”,产品经理说完需求,他就说:“这个简单!好做!”
结果后期验收需求的时候,发现做出来的效果和我们想象的完全不一样,错把一个让用户自主上传内容的页面做成了一个给管理员上传内容的页面。究其原因,就是对需求的背景理解错误了,搞错了需求的目的是为了让用户参与共建,而不是只给用户看管理员发布的内容。
2、砍需求不是乱砍
砍需求不是乱砍,而是要有理有据,有章法。
我发现自己团队的同学不太会砍需求,有时产品经理说完需求后,开发同学要么就默默接受了,结果到后面开发阶段才跟产品 “诉苦”;要么就是一通回怼,典型的就是 “这周时间来不及”、“这个需求我觉得没用” 等等。
换位思考一下,这种理由其实很难说服对方。
怎么砍需求?
第一式、共同目标
表明目前做这个需求对达成目标的帮助不大,可以投入时间做性价比更高、更好实现目标的工作。将个人的意见和想法进行上升,证明砍需求不是因为我不想做,而是确实没啥用。
第二式、数据支持
用客观的数据和事实来证明需求的价值,而不是 “我觉得、我猜测、我认为”。举个例子,现在我们要优化编程导航的搜索功能。技术同学一听,老开心了:“我终于有机会用 Elasticsearch 啦!终于不是拧螺丝啦!”
“拜托,看看您那搜索功能,每天 不到 10 个用户 在用,优化个龟龟哦?!”
后面的才是正解,通过已有数据来证明需求的意义。技术是为业务服务的,业务都没必要做,又何必要用更复杂的技术呢?
第三式、阶段性迭代
通俗一点,就是需求拆解。
很多时候,如果一个需求较为复杂,或者需求方要的比较急,与其直接拒绝(反正后面也得做),不妨思考下能否 “小砍一刀”?比如将复杂的需求拆解为一期、二期、三期,如果非要这周上线,那可以先做一期,后面再优化。
这也是大厂员工的 “惯用伎俩”。为什么这么说呢?在下认为,大厂一般都是各司其职,专业的事情有专业的人去做,通常都会有产品经理来整需求,需求往往会更复杂、更体系化。如果你不会拆解,非要把整个需求一起实现,哪怕时间拖得很长,也会觉得需求很复杂、很难实现,压力山大。而如果你 “砍” 得合适,说不定做完一期之后,效果不好,后面也都不用做了。
毕竟很多时候,后面再优化 == 后面不做了。
第四式、金蝉脱壳
这是一种更高级的砍需求方法,需要开发同学有足够的业务经验积累。说人话就是给当前的需求找到更合适的替代方案。
我觉个自己团队的例子,前段时间我们想统计下老鱼简历的数据,比如注册率和注册来源等,按照正常的方式,可能是需要开发统计分析的能力,我们开发同学也欣然接受了。
但由于自己之前的经验,我知道可以通过系统已经接入的第三方统计分析平台提供的 “上下游分析” 的能力来推测出其中的部分指标,只需要产品在平台上配置即可,就不用什么都开发了。
就是这样,我成功帮开发同学砍掉了部分开发需求,将一个技术问题转变成了业务问题。
3、上级为什么希望开发学会砍需求?
换位思考一下就能理解了,无论你的上级是什么级别,他都有自己的 KPI(目标)要完成。人力和时间都有限的情况下,只要手下的开发同学花时间做了乱七八糟的、无意义的需求,就会影响目标的完成情况。所以上级喜欢的,是能够帮他完成目标的开发,砍不砍需求只是一些小的操作,哪怕你不会砍需求,多花点时间加班完成工作倒也不是不行;但如果有更好的方式达成目标,砍一砍需求,何乐而不为呢?
回归到我自己身上,为什么我希望团队同学都会砍需求,因为每一天都是从我的账户上扣钱啊!!!我当然也是希望人力花在刀刃上。