程序员应知——我们不是客户

发布时间:2026/7/6 11:36:58
程序员应知——我们不是客户 这件事说起来很容易但实际做起来的时候总会遇到各种各样的阻力似乎在每个项目中都一样。所以有很多人喜欢凭借之前类似项目的经验或者自己对于业务的理解来做需求分析要牵着客户的鼻子有甚至于替客户决定如何来做系统。但是这往往会导致客户抱怨你们做的系统不是我想要的根本就不好用其根本的原因就在于我们不是客户很多人都清楚的一个原则是在做系统的时候要从客户的角度出发但什么是客户的角度呢在明确这个问题之前我想大家应该了解我们程序员与客户之间的一些区别。首先我们和客户使用计算机的水平不一样。这一点是客观存在的我们作为程序员计算机就是我们战斗中的枪那必然是非常熟悉而且整天24小时至少会有十几个小时在和计算机打交道每个人熟悉的软件至少也会有十几种。而作为客户可能只是在上班的时候使用而且使用的软件非常有限一般就是Office加上有限的几个软件。其次我们和客户对业务知识的掌握不一样。客户的业务知识就是他所从事的行业的知识比方说对于一个保险公司的业务人员来说他们的业务知识就是与保单、代理人、承保、理赔、保全相关的各种内容而对于贸易型企业来说他们的业务知识就是与采购、销售、产品、订单等相关的内容。如果我们没有做过相应的行业软件的话那么我们的业务知识就很差。这也正是为什么好多软件公司想要做一种行业软件时所存在的壁垒。既然有了这么大的不同那么我们想要从客户的角度出发就要以客户的计算机水平和业务水平来考虑这样做出的东西才是给客户用的而不是给我们程序员用的。想要达到这个目的首先我们就要从自己做起努力去学习各种业务知识要有不耻下问的精神千万不要觉得自己是做IT的就孤芳自赏而对于其他行业的人员就觉得不如自己。古语说得好三人行必有我师。每个人的知识都有不同的重点客户中有很多人掌握着我们所不知道的知识不向他们请教、学习是不行的。然后就是要多多与客户沟通不同时间、不同地点、不同的环境中客户的想法也会有所不同这也正是需求的变更我们不能要求客户提出的需求是一成不变的有人说过唯一不变的就是变化想要解决这个矛盾我觉得最有效的方法就是沟通这样的话如果客户的需求有了变化我们会在第一时间了解并为其做相应的工作这样可能就会节省出很多的时间和精力。并且沟通是会增进我们与客户之间的感情的如果双方都认为对方是自己的朋友很多麻烦的事儿也就迎刃而解了。接下来我想和大家聊聊当前做系统时获取需求可能的几种做法并提出自己的浅薄的意见。1、闭门造车型——也就是凭借自己对行业的理解或者是以往项目的经验猜当前项目的客户会提出什么需求而不理会客户的具体情况。大家也应该可以立刻给出结论这样的项目很难成功即便是我们之前做过100个类似的项目那么在做第101个的时候也会发现企业会有自己的特点客户会有自己的特点毕竟我们做出的系统不是给机器人用的而是给人用的有人存在就会有差别我们就应该具体情况具体分析。2、积极沟通型——作为程序员或者是项目经理在开发的整个过程中积极地与客户沟通及时了解客户的需求是否有变化。这种类型应该比上述的有很大的改善但是我觉得需要注意的问题就在于沟通和信息传达的效率上。一般来说可能这种工作会由项目经理来做而不是由具体开发的程序员来做。这样的话就需要做沟通的人有充分的计算机知识和业务知识的储备既能够了解客户所说的话也能够把客户所说的话正确地传达给程序员并且还可能会加入自己对如何在系统中实现的理解。3、现场客户型——这是敏捷开发中一个很重要的原则就是在开发的现场要有客户不断地提供对系统的意见和反馈。首先这一点很难达到毕竟客户也有自己的工作很难整天地坐在我们旁边为我们提供反馈。另外如果说是一个或者有限的几个客户那么就需要他对所要负责的模块相关的业务知识都非常了解这对于现场客户的要求也是非常高的。上面几种形式都是我们被动地来接收需求其实我觉得我们还可以主动出击去找需求。4、观察客户型——就是说我们要在客户工作的时候一直观察看客户是如何在实际工作中作出各种各样的决定的也了解客户的工作方式和工作内容看看如何能够通过系统来帮助他们。5、一起工作型——这种方式意味着我们要把自己下放到客户的办公室中去和他们一起工作有些边缘性的工作我们作为学徒的角色帮客户完成。上面的两种方式所获取的需求都是第一手的需求而且通过和客户一起摸爬滚打我们不仅能够获取宝贵的需求和业务知识而且还可以了解到客户对于每个需求的迫切程度以及完成每个需求能够为客户带来什么这样就可以做到知己知彼百战不殆不出意外的话可以达到一种双赢的结果。