几年前的某个时候,公司大伙都等着下班我却等着晚上加班,因为产品经理对产品的某个功能进行了调整和修改,我必须加班将其修改完善。对于这种事情我已经数不清了,产品经理的每一次变动都得让我们技术部门的同学们加班到深夜甚至到天明,如今回忆起来历历在目!今天这个文章我们不谈论是谁的责任,也不去抨击产品经理的无能,说说技术人员为什么总是在抱怨需求在变动这些事, 希望大家踊跃讨论。

  一. 抱怨现象

    最近我做了实施人员,经常到各个客户工厂去给他们实施项目,在这个过程中我了解到了软件的真实使用者,在这之间我就成为了客户和公司技术人员的传话筒,因为我本身也是做技术出身所以这样对消息的转化也就有了一定的优势。最近几次我在回来的路上一直再想同样一个问题,为什么技术人员总在抱怨需求的变动,之前我做开发的时候也是在抱怨,现在换了新人我给他们传话他们同样在抱怨,这是为什么?

    案例一:

    前面的文字中说道过给客户做的一个仓库电子看板,这个里面经历了几次较大的改动,每一次我回来给公司的技术人员反馈问题他们总是那么的不耐烦甚至抵触。

    第一次给客户做的效果原型示例图如下:

    

    分为两个部分,两个都是一样的只是显示内容不一样而已,一个是进料信息一个是出料信息。

    第二次客户要求在下面添加一行文字:

    

    这次添加的是下面的滚动文字,界面展示效果堪称不错,现场屏幕测试也完全OK。

    第三次 客户要求下面的滚动文字可以替换,也可以不显示或者不滚动

    第四次 客户要求字段显示的行数可以自定义

    第五次 客户要求字段滚动的速度可以自定义

    第七次 客户要求界面数据刷新数据的频率可以自定义

    ............

    到了这个时候技术人员火了,MD天天改,天天这样改,有完没完?

    案例二:

    客户之前做统计报表都是Excel自己统计的,而且统计的还有模有样,在Excel中制作的非常漂亮而且显得非常专业,后来公司上系统了需要在系统中能够自动生成这样的报表,这里贴一个示例图看看客户的要求。

    

    以上表格式Excel中的,客户要求在系统页面上显示一个这样的报表格式。因为使用者非技术人员之前就是一直用Excel这样做的,要求就是给他们做成如图的样子就可以了并且数据正确。

    公司技术人员拿来之后一看这个报表也不怎么难嘛,很简单,数据在系统中都可以统计得到。

    (1) 课题年份和获奖年份有啥关系

    (2) 课题年份和课题数有啥关系,课题研究如果当年没有完成直到第二年才完成算哪一年的?

    (3) 客户研究是以小组的形式来展开的,他们和小组是否有关系,表格中并没有体现小组的信息

    (4) 课题和成果之间的关系是啥,怎么好像数量关系没有直接联系啊

    (5) 课题和获奖是否有直接关系啊?

    (6) 有了成果是不是就一定能够获奖啊?

    ..............

    后来开发人员懵了,这是啥子需求哦,改一个不是这样的,该另外一个又不是这样的,客户又表述不清楚你想知道的东西,你确认一直认为客户所要的东西变了和第一次说的不一样啊!一个这么简单的表格到了最后花了时间,花了人力,最后结果还是一团糟.

  二. 客户不清楚最终想要什么

    以上两个案例都是最近我实施过程中的真实案例,我们用事实说话不做虚假假设。在最近的工作中类似的经历非常之多,这里只是举两个例子【我们这里说的是问题,如果哪位高人想说这表现出你们团队协作能力较差,或者公司整体能力不行等麻烦不要看此文了,这个问题不在此文章讨论,后续再说这些问题】。

    案例一分析:

    (1) 客户频繁的要求修改这些那些,说明客户自己本身也不知道需要做什么怎样的界面,界面需要展示什么数据。这是一个很正常的现象,如果客户这些都全部清除你也就只有码代码的份了,处理码代码的体力劳动你没有价值了。

    (2) 很多要求是在现场展示的时候提出来的,说明客户很多时候就是随心所欲,甚至拿着手机看到了一个非常漂亮的东西也想往上面贴。

    (3) 软件是否适用要在真正环境下才能校验"真伪",比如其中遇到的字体问题,在电脑上显示非常好,但是在大屏幕上显得非常小,远距离观看和近距离观看还是有差别的。

    (4) 开发人员只是一味的跟着客户的节奏在走,客户说什么就是什么,说那里有问题就改哪里,最终代码没有结构性,满是补丁的可以勉强运行,只要再修改里面千疮百孔。

    以上总结几点基本可以归纳出来在开发的过程中为什么会一直出现不停的修改,于是这也苦了开发人员,没办法那个谁说的"客户就是上帝"。

  三. 开发人员未能真正理解需求

    案例二分析:

    (1) 技术人员太小瞧了一个简单功能的开发.这里我一定要将这个排到第一点,个人觉得这是态度的问题,对于问题处理的态度问题。

    (2) 技术人员对给出的浅显得需求未能去深入挖掘,不然不会到了开发过程才发现年份之间关系有问题。

    (3) 非专业人士的表达不能够理解是因为技术人员没有站在使用者的角度去想这个问题并且表达出来(我承认这个有点难度,但是作为有价值的的技术人员必须学会这么做)。

    (4) 发现问题没有去归纳总结,而且没有及时去反馈问题,也没有去沟通问题。

    

  四. 案例分析总结

    以上单独分析了两个案例,一个案例问题出现在客户这边,一个案例问题出现在开发人员这边,我这里暂且这样划分。

    总结一下导致需求变动的原因:

    (1) 客户本身不清楚自己具体要做成什么样子,而且客户的想法较多

    (2) 客户现场的真实环境导致你某些程序不能满足(适应环境,有机会影响环境,生物的适应性)

    (3) 客户不能正确表述他所要的东西,虽然他心里非常清楚想要这个,和程序员一样语音组织表达能力较差(实际上需求没有变,表述不一样理解不一样)

    (4) 开发人员小瞧了简单的业务需求,没有深入去挖掘潜在的问题和需求,问题最终逐步暴露出来

    当然需求的变动还有很多其他的原因,比如市场的需求变动,客户操作习惯的变动,业务的发展变动这些都会直接导致程序需求的变动,以上的原因导致的需求变动就足以让技术人员叫苦不迭了。

    

  五. 技术员能不抱怨么

    说来很奇怪,我一直认为技术人员就是”很奇怪的动物”,从开始工作的那个时候开始走到哪里都能够看到抱怨的程序员,没有一个公司的程序员对需求变动不抱怨的,但是最终抱怨之后还是默默的修改变动的需求,说明程序员都是善良的!偶尔会抓狂但是他们还是会默默付出。

    对于后来我介入了这两个功能的开发,并且做了一些工作来调整这样的状况:

    案例一中我自己在纸上罗列一些环境和硬件清单:

    1. 客户屏幕分辨率使用的是1280*768,最大分辨率支持1990*1280,刚好公司有这样一个屏可以模拟测试。

    2. 客户使用xp系统(使用的工控机,没得办法),那我们也安装一个xp系统,虚拟机就好[建议尽快抛弃xp系统,这个系统现在的确非常头疼]

    3. 远距离看屏幕字体大小,不要在电脑屏幕上看

    4. 需要自定义动态设置的参数全部罗列,显示数据行数,字段数,刷新频率,翻转时间,滚动文字等等,每一个都具体在纸上罗列,然后对着去实现

    5. 问题分析主次,画好数据传输的逻辑图,问题优先级分等级,哪些问题是有关联的,程序层次关系等等

    6. 交给另外的人员来测试,没有参与过开发的(很是惭愧我公司没有测试人员)

    案例二中我给开发人员指出一下几个问题:

    1. 课题年份和获奖年份的关系, 我先假设几种关系,使用穷举法:

      (1) 课题研究是否获奖要到第二年才确认,甚至是第三年

      (2) 课题研究是否获奖一定是在第二年确认

      (3) 课题研究是否获奖一定是在当年确认

      (4) 课题研究和是否获奖本身没有任何关系

    2. 课题成果和获奖之间的关系,同样先假设几种关系,使用穷举法:

      (1)  课题研究有成果就一定能够获奖

      (2)  课题研究有成果可能能够获奖

      (3)  课题研究成果和获奖没有关系

    .........

    上面是简单罗列的问题,我相信如果你能够将这些问题罗列出来,说明你解决问题的思路已经非常清晰了,这个思路和技术无关,也就是你已经明白你要做的东西了。同样你清楚这些东西那么你就很容易去有的放矢,针对具体的问题解决问题,而不是盲目的去修改代码然后编译一次交给实施人员去给客户看行不行。对应客户自己本身不能表诉那么你就从他表达出来的内容拆分几种假设,然后你可以以你的专业语言去描述给他听,他自己要明白你描述的是否是他想要的东西问题就解决了。

    我当然知道技术人员的抱怨是必比不可少的,我工作也有些年了,到现在还避免不了偶尔去抱怨一下,就跟家庭生活一样偶尔也会有烦心和不愉快的时候,如果你坦然去接受面对这些问题我相信你会从容很多。

  六. 总结

    (1) 永远不要奢望客户清楚的告诉你他们想要什么东西,更加别异想天开的他们会给我们整理一份非常完美的需求文档(如果有客户为你做了很好的一份需求文档,那是因为你的善良感动了上帝)。

    (2) 客户的问题是你发挥自己能力和体现价值的时候

    (3) 好的程序层次结构,代码的健壮性能够很好的应付客户需求的变动

    (4) 你和你的程序一定要比客户想的多,而不让客户为你想更多的问题

    (5) 深入挖掘客户的需求,这个不会让你吃亏的,挖掘需求也有很多办法,只要你真的再为客户想问题那么解决问题的方式一定很多

    (6) 没有一层不变的需求,也没有完美的客户,更加没有完美的个人,要坦然面对工作中的问题

    (7) 沟通是解决问题的最好最直接的方式,直接打电话不要使用QQ发消息留言(最反感QQ留言了,开发人员最喜欢QQ留言了,因为不敢给客户打电话)

  本文到此结束,文中所写只是个人经历和感受,不存在任何的偏见,可能和一些人的意见和想法有出入,但是不影响各位对此话题的见解!

实施项目--为什么开发人员一直在抱怨需求变动相关推荐

  1. aws搭建java项目_开发人员指南 - AWS SDK for Java 1.x - 适用于 Java 的 AWS 开发工具包...

    本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. 开发人员指南 - AWS SDK for Java 1.x 适用于 Java 的 AWS 开发工具包为 Amazon We ...

  2. 学习java第四天,自己做的尚硅谷项目三开发人员调度系统,代码很丑陋,等后面有时间再优化一下。

    1.定义公司成员作为父类 package tEAM;public class Person {private String ID;private String age;private String w ...

  3. 项目绩效—开发人员绩效考核表(实用)

    一.绩效考评的工作可分为三部分: (1)绩效考评前--应制定合理而详细的考评标准.只有制定合理而详细的考评标准并进行公布,为成员制定目标,令其明确自己前进的方向,才能令被考评者对应达到的目标及应做到的 ...

  4. 项目经理眼中优秀开发人员的标准

    项目经理眼中优秀开发人员的标准 版权声明:如有转载请求,请注明出处:http://blog.csdn.net/yzhz  杨争 作为项目经理,我希望我们项目的开发人员做到以下几点: 1.主动性     ...

  5. Formidable 项目开发人员驳斥:MITRE 发的这个CVE漏洞纯属“碰瓷”

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Formidable 项目的开发人员就 Mitre 公司分配的一个CVE漏洞提出反对. Formidable 是一款热门解析器,可从GitHub ...

  6. [MSDN]每个开发人员现在应该下载的十种必备工具

    本文讨论: • 用于编写单元测试的 NUnit • 用于创建代码文档资料的 NDoc • 用于生成解决方案的 NAnt • 用于生成代码的 CodeSmith • 用于监视代码的 FxCop • 用于 ...

  7. 每个开发人员现在应该下载的十种必备工具

    本文自发布以来已经增加了新信息.(摘自 msdn ) 本文讨论: • 用于编写单元测试的 NUnit • 用于创建代码文档资料的 NDoc • 用于生成解决方案的 NAnt • 用于生成代码的 Cod ...

  8. 如何有效地与开发人员一起工作(二)

    现在什么问题变小了? 为什么我要这么麻烦呢?看起来我是想去巴结一些朋友.朋友是好的,但是公司不会为我的社交生活付钱.公司给我报酬是让我使用一部分权力来达到某些目的,一种减少问题的方法.什么问题? 一般 ...

  9. 如何有效地与开发人员一起工作(一)

    原文:Working Effectively With Developers - Brian Marick (注:本译文最早发表在51testing的第7期杂志上) 开发人员与测试人员通常不能很有效地 ...

最新文章

  1. 七八年级计算机教案,八年级信息技术教案第七章   特殊成员----字符串
  2. JNDI学习总结(1)——JNDI入门简介
  3. c++中的全排列函数next_permutation()
  4. malloc/free 和 new/delete
  5. python基本定制之__new__, __init__
  6. Netcore 及SDK版本号问题
  7. python 迭代器 删除_Python学习100天-Day08(迭代器解析)
  8. [Jetty] jetty 内存调优
  9. Python数据结构与算法视频教程-王宁宁-专题视频课程
  10. 解决bootstrap中模态框打开时页面发生一瞬间移动
  11. c语言编程齿轮模数选择,斜齿轮变位系数分配-C程序.doc
  12. 时序分析 42 -- 时序数据转为空间数据 (一) 格拉姆角场
  13. 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)
  14. UML图解简单工厂模式工厂方法模式抽象工厂模式区别
  15. 什么是数据清洗?数据清洗的原理是什么?
  16. 用css实现鼠标移入按钮,按钮出现动态的渐变色边框效果
  17. 详细介绍OAuth2.0及实现和SpringSecurity的整合应用
  18. 企微机器人使用及内容配置文档
  19. electron-builder 打包 exe 报错 Error output: Plugin not found, cannot call UAC::_
  20. QQ2006beta2sp3forsp1的下载地址

热门文章

  1. 用中值排序基数法实现树状结构 (转)
  2. scala报错20/08/31 23:48:40 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 192.168.28.94, exec
  3. mysql设置远程访问
  4. python selenium 文件上传_Python+Selenium学习--上传文件
  5. 献上程序员大学四年珍藏的30个宝藏网站,全部拿出来
  6. 懂得了这些才可以说学习Python入门了
  7. 一键移植工具_【产品推广】让UI设计畅通无阻 — 信息系统人机界面增强工具(HFE Designer)...
  8. jmeter中没有sampler_JMeter 接口自动化测试篇 29
  9. Dockerfile文件命令详解
  10. html导入.md文件并渲染,vue 导入.md文件(markdown转HTML)