就在去年的11月,我和其他几个同学一起在外面接了一个水位计数据采集的项目。这个项目当时接过来的时候,原先以为不会太难,但项目现在进行到今天(2011.1.18),才发现很多东西不是我们想当然的,下面随便写一些东西吧,也算是项目中期体会吧。
1、项目的实施过程中非常重要的一点就是进度的把握,在这个项目推进的过程中,我原本有着一份正规的实习工作,任务也很紧,所以有一段时间,我必须在两个项目之间不停地切换,人很累。两边客户或老板催得紧的时候,那时候唯一的想法就是能够有更多的时间。所以我的结论是:如果你是项目的头目,那么在召集开发人员的时候,一方面要兼顾到人员的专业特长,另一方面也要考虑到项目本身可能存在的时间风险,与其找一个日程紧,专业知识强的人,倒不如找一个能基本上全身心投入时间的。
2、项目实施过程中还有一个比较麻烦的就是协调各方进展,像水位计这个项目,原先用的设备是enfora的无线模块,insitu的水位传感器,可是项目到快要结束的时候,各种问题暴露出来,无线方式数据采集不稳定,特定的modbus协议采集数据存在莫名其妙的数据偏差,客户方考虑到成本问题希望换设备,甚至出现所有的软件层面的都搞定后,出现设备返回数据不对等等。
比如说,之前没有使用DTU来作为无线模块的时候,数据采集非常不稳定,开发出来的产品完全是“野鸡”产品;后面客户方需要使用单片机作为node来连接水位计和无线模块,这样就不得不和客户方去联系合适的单片机开发公司,基本的硬件设计和本地下位机软件设计都托管给他们,但是双方之间又需要协调需求工作,这里面其实有时候还是比较微妙的:自己总是希望能够非常顺利简单的完成自己的任务,把可能存在风险的部分扔给对方,最后拿钱走人,这种心理现象是非常普遍的,不仅是在团队与团队之间,甚至团队内部也存在这种情况。
我的结论是这样的:作为一个开发人员应该勇于承担责任,并自信地来完成义务,故意拖拉或者有意推诿都是不可取的。但是在有些特殊情况下,还是需要从团队利益或公司利益的角度出发。
3、另外遇到技术问题,或者根本就不知道什么问题的时候,怎么办?
一、找可能了解这方面或者有做过类似经验的人:当时出现水位计和无线模块连接没有数据采集上来的时候,我非常果断,在没有能够通过网上资料和设备数据手册找到问题所在的时候(另外设备本身就是国外进口的产品,所以相关问题的解决很难在网上获得资料),我的想法是:果断找经验丰富的人,后来一天之内连续找了多个老师,最后找到了问题的可能地方。
二、如果使用的是其他公司的产品的话,能够及时的联系对方的技术支持人员,这样在一般情况下,他们都是很愿意来解决问题的,因为这对他们来说意味着订单、利益、生意。就像这次无线模块换成驿唐的DTU CDMA后,出现采集数据总是错误的情况,通过两天的技术支持人员的努力,终于找到了问题的症结,RS232-RS485转化器串口线接线有问题。其实像这种问题的出现可以这样来避免解决:在制作具体硬件完成后,应该让设计人员做好充分的测试,尽量在早期就把问题解决掉,因为像这种问题,如果对于不太懂硬件的软件开发人员来说,就很难找到问题所在,会耽误很长一段时间。所以从这一点也可以说明一个问题,项目中的很多事情需要提前完成,留出一定的时间来应对可能出现的意外情况。
三、就是为人处事了,我觉得:如何能够通过讲话、眼神、或者动作让别人能够非常愿意或者比较愿意的为你做事,并且乐于在下一次继续帮助你,这种能力的锻炼非常需要,因为项目实施过程中,光靠一个人完全不能支撑整个项目的顺利完成,整个过程中会牵涉到很多问题、很多人。从开发人员到客户、再到供货商。做项目头头既要会强硬(严格标定时间节点),也要会疏导手下的不满情绪(需要及时的赞扬,最好是能够在众人面前表扬他,及时的给钱,利益当前)。
4、最后一点,很多事情不是光靠技术能够解决的,很多非技术的原因都会影响我们、客户、供应商。(客户总是希望开发过程中时间周期短、开发费用低 ;供应商总是希望使用量大、可持续 ; 我们总希望开发顺利,能够准时拿钱。。。)
好了,讲了这么多了,下次再说吧。。。。