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

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

 

  一. 抱怨现象

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

    案例一:

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

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

    

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

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

    

    这次添加的是下面的滚动文字,界面展示效果堪称不错,现场屏幕测试也完全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留言了,因为不敢给客户打电话)

 

 

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

时间: 2024-10-24 08:03:02

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

和开发人员讨论一个业务需求和简单实现

前几天一个开发的同事来找我咨询一个问题,说是咨询,其实是开发的同事也不是非常清楚里面的逻辑,因为历史系统,历史原因,各种原因吧,所以我也是带着试试看的态度来帮助了这位同事. 这位同事知道这个咨询我的是一个存储过程.基本思路是从千万级的表table1中查出结果集,然后在table2,table3,table4都插入数据. 这个存储过程是怎么触发的呢,从开发同事那里得到的信息是在大概每周三凌晨运行一次,但是具体怎么触发的他们就无从得知了.要确认这个信息也花了一点时间.首先排除crontab,然后在s

《Spring Data实战》——第1章 Spring Data项目 1.1为Spring开发人员提供的NoSQL数据访问功能

第一部分 背景知识 第1章 Spring Data项目 Spring Data项目是在"Spring One 2010开发者大会"上创建的,该项目起源于当年早些时候Rod Johnson(SpringSource)和Emil Eifrem(Neo Technologies)共同参与的一场黑客会议.他们试图把Neo4j图形数据库整合到Spring框架中,并评估了各种不同的方式.这次会议最终为初始版本的Spring Data Neo4j模块奠定了基础,这个新的SpringSource项目旨

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

下载 本文讨论: • 用于编写单元测试的 NUnit • 用于创建代码文档资料的 NDoc • 用于生成解决方案的 NAnt • 用于生成代码的 CodeSmith • 用于监视代码的 FxCop • 用于编译少量代码的 Snippet Compiler • 两种不同的转换器工具:ASP.NET 版本转换器和 Visual Studio .NET 项目转换器 • 用于生成正则表达式的 Regulator • 用于分析程序集的 .NET Reflector 本文使用了下列技术: .NET.C# 或

.NET 开发人员该下载的十个必备工具

  本文讨论的工具如下: NUnit:编写单元测试的工具 NDoc:创建代码文档的工具 NAnt:生成解决方案的工具 CodeSmith:代码生成工具 FxCop:用于监视代码的--代码警察 Snippet Compiler:小型代码段编译工具 两个不同的转换器工具,ASP.NET 版本转换器(Version Switcher)和 Visual Studio .NET 项目转换器(Project Converter) Regulator:生成正则表达式工具 .NET Reflector:程序集分

如何为自己的外包项目选择最合适的开发人员?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 在软件项目外包过程中,如何在一大批参与项目投标的开发人员中进行甄别与筛选,找到最适合的开发人员,是发包方必须解决的一大难题.如果草率地选择开发人员,往往会造成项目的开发周期延长.质量无法达到要求.成本增加甚至项目彻底失败的严重后果. 作为一个有多年经验的软件外包产业参与者,我也曾经为如何选择合适的开发人员而迷茫,也曾有过项目外包失败的教训.现

做有市场思维的开发人员

做有市场思维的开发人员 2011/03/03  导读:现在很多开发人员还没有学会市场思维,仍像是象牙塔里的学生那样,保持着学生思维.事实上,软件工程更接近于经济学,而非计算机科学,需要开发人员具备市场思维. 世上无易事 要是我问你,跑百米容易还是跑马拉松容易?这还用问!当然是跑百米容易了,是吧?其实我想问的是:亚洲运动员要拿奥运冠军,是跑百米容易还是跑马拉松容易?答案似乎就颠倒过来了.近邻韩国和日本都已经出过奥运马拉松冠军,比起拿百米冠军,概率要大多了. 有了上面这个问题垫底,你应该可以猜到下面

SQL Server自动化运维系列——关于邮件通知那点事(.Net开发人员的福利)

原文:SQL Server自动化运维系列--关于邮件通知那点事(.Net开发人员的福利) 需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 邮件作为一种非常便利的预警实现方式,在及时性和易用性方面也有着不可替代的优点. 所以,在本篇中将详细的分析下在SQL Server中的邮件通知功能及使用方式等.  本篇实现 1.通过SQL Server自带的邮件功能实现运维的预警及检测 2.利用数据库邮件组件代

开发人员正确实施加密机制的比例仍偏低

本文讲的是开发人员正确实施加密机制的比例仍偏低,尽管过去几年当中利用加密机制打击安全漏洞的举措已经迎来了显著推进,但开发人员缺乏专业知识以及相关库过于复杂的状况仍然导致多数商业应用程序并未得到加密机制的有效保护. 这一问题的规模显然不容忽视.目前加密问题已经成为各行业当中最为常见的安全缺陷类型,应用程序安全厂商Veracode公司在本周发布的一份报告当中指出. 这份报告以静态.动态与人工漏洞分析作为统计基础,对企业环境中所使用的超过20万款商用及自主开发的应用程序进行了调查. 加密问题在历史角度

银行项目开发-开发银行项目,如何使开发人员看不到数据库表结构依然能够开发?

问题描述 开发银行项目,如何使开发人员看不到数据库表结构依然能够开发? 开发银行项目,如何使开发人员看不到数据库表结构依然能够开发?对于敏感信息是不能外泄 解决方案 自己封装操作数据库的接口,对外只暴露外包人员能看到需要用的接口,就可以屏蔽他们对数据库信息的查看了