程序员如何与项目负责人沟通

做一名程序员,虽然好的口才不是必要条件, 但不善于表达自己想法以及与上司同事沟通,吃亏的是自己;

最近做一个项目,与项目的负责人出现一些不愉快的事情,出现这种情况虽然与其它杂七杂八的事情有点关联, 但最重要的原因还是在工作上缺乏沟通; 例如, 上周他给我们C#组的人员分配工作, 每人负责一个小模块, 数据库和需求文档已经提供有,但数据库的表字段有可能根据实现开发情况做少许改动,而且也给我们一个例子看, 可能参考该例子来做; 在统一讲需求时虽然听起来明白了,但做起来会发现很多关节的细节没考虑进去,而这些细节往往会影响到开发的速度, 甚至看駢符合了文档的需求,但却不符合负责人或者说是客户的实际需求;因为文字类型的需求是比较抽象,特别是要做用户界面, 虽然有例子,但也只能参考,不能照搬也做,这样做出来的程序很多情况下只符合程序员自己的需求; 已经花了很多时间去做一个可能不需要的功能,如我当时做一个日历控件来显示排班信息,且也接近交货日期了,到时交到负责人手里时才发现,这个日历控件不是必要的,选择的时间范围是在弹出窗口里,且不保存到数据..., 这时发现做了很多无用功,又要加班加点去赶进度了。虽然这只是一个小例子,但相似的例子在前几个月里已经发生过几次,为什么呢,因为表达能力差,也不善于与人沟通。

经过多次类似的情况,我发现了一个与项目负责人沟通的方法,这个方法几乎可能通用;

首先分析下为什么程序做的功能与需求不一至:
1)程序员与用户沟通的经验少, 对同一条需求的描述,理解会与负责人不一样;
2)有些需求文档写得不详细,特别要做用户界面时,又没有界面原型供;
3)对需求理解不深,或者说是只理解大概,而没有细分模块与剖析细节;
4)对不理解的功能自作主张;
5)平台不完美或技术能力未到关;

对于经验少,可以问经验丰富的人,特别是项目负责人,做得了项目负责人,对客户需求上的理解一般都比他手下的人要丰富,所以关键是程序员是否能意识到自己的经验是比不上别人,遇到一个模棱两可的问题时,能否放下面子问下负责人或者同事; <br/> 而文档不详细,这也只能追问项目负责人了, 不要怕被人说自己愚蠢,而且这根本不是智力的问题,不明的而不去问,或者一个不详细的需求文档,却没问题可问,那才是缺少发现问题的能力;
有时需求很详细了,会议里也讲明白了,但觉得自己还理解不了的,这还是要问项目负责人,因为他是最理解的人,而且要问到明白为止,有时要再3追问,解释的人才知道要用另一种方式也对你解释这个需求;
没有到迫不得已的情况下,千万不要对需求自作主张,这里对客户不负责的表现,往往也是做最多无用功的原因;
如果开发时是基于框架的,但那框架也不完善,做起来特别吃力,也项目负责人又以为这框架已经完善了,如果不向项目负责人说明原因,而自己花时间去做一个兼容的功能时,到后来发现这个兼容功能又要花去一大段精力和时间, 这时进度已经赶不上了。所以出现这种情况一定先向负责人说明,讨论下是否要做兼容功能,或者这个功能是否是必要的,沟通后会发现解决的方法往往是异常的简单容易,如不要这功能,或用另一种方式来实现,即使要做兼容,也以负责人知道自己是在做一个有难度的功能;

所以综上所述, 有问题一定要和项目负责人或者客户说明和讨论再做决定, 这里保证做出的功能是最接近需求最好方式;

但问题是程序该如何与项目负责人描述问题并正确表达自己的想法, 以下是个人的遇见:

在接到一个需求时,把实现需求的模块进行细分, 如做一个工厂员工排班规则设置,细分为:a.显示已保存的规则列表,b,对员工排班,则要有选员工或者部门的功能,而且还是多选的, c.排班规则设置是可以在日历控件里显示,以不同的颜色显示不同的班次;
细分过程是否存在疑问,有要记录下来以便整合起来问负责人, 如: 选了部门后,再先员工时,员工和部门是否是并的关系,即要包括员工和部门里的员工, 是否需要过滤掉已选部门里的员工; 排班时,对已经提成过班的是否要重新排一次,还是排过的不作重排;
对存在的疑问先看下需求文档里是否有描述如果处理,想下之前开的会议里有没有说明如果处理,如果想不起来就问下同事,如果都没有相应的处理方式,那就铁定要问项目负责人的了; <br/> 好,现在已经整理好了要问的问题,先想一下自己处理这些问题的想法,因为在问时最好是把自己的想法明确的表达出来,让他跟着你的思路,这样一来说明你有自己的想法,二来又可以让他明白你要问的问的问题关键点;
有时尽管没有疑问,在实现需求之前,即写代码前,最好先把自己对需求的理解说一遍,确保自己的理解没有偏离需求, 如: 要显示的规则列表以树的形式列在界面左边, 选用户和部问放到中间,再次选择时把已选的过滤掉,日历控件入到右下角,可选上月,下月,在点了应用后,把排班的数据显示到日历控件里,控件的右边显示班次... 最好把关键点和难点表达出来,并说明自己如果去做;

当然,如何沟通与表达不可能从文字里学到的,必须要在日常生活里体会和应用,其实基本上所有的能力都可以从日常生活中学到,问题是能否敢于面对问题和困境,并想办法去解决;

posted @ 2012-11-06 23:51  山卡啦  阅读(523)  评论(0编辑  收藏  举报