我们当然希望承接的都是杭州本地大型软件项目,但是种种原因,特别是为了某发展不得不承接外地的软件项目,外地软件项目有几个比较重要的风险,相对失败的概率会比本地软件项目更高一些。软件开发成本控制相对更困难、飞机来回飞几次,宾馆住个把儿月,再打打车来回跑几下、吃几次饭店,上万快很多快就会花个精光了,其次就是人员沟通上也容易出问题,毕竟人与人面对面的交流沟通是效率最高的,打打电话、写写邮件、偶尔远程桌面一下还是没有当面沟通的效率高。沟通上出问题了那一切麻烦就会接踵而来了毕竟软件项目以人为本。发生了摩擦,很可能合作的项目也会出现裂痕,若项目整体的费用也不多为了挽回一个小小软件项目来回外地跑来跑去也是很闹心的事情,很容易最终结果是竹篮打水。

    可能往往是不忙的时候希望能跟开发人员交流,忙的时候希望做自己的事情,这样不是我们有空就可以跑过去维护实施的。
  
    越是相对成功的,有实力的客户越往往是工作繁忙、任务多多,根本没精力仔细去整理需求文档,也没时间去耐心的讲解每个需求的详细功能点,更不可能把每个需求都像日本鬼子一样写得详详细细,除非是遇到专业的设计公司,这样客户的门槛也很高,这样规范的业务也未必能承接到。虽然软件行业现在已经发展得也很快,但是还是会遇到很多不规范的客户,他们的需求往往是很笼统的、很模糊的,甚至他们的需求只能简单的口述,需求写出来就一页纸不到,甚至就6-7句话。
    若没有经验的开发人员很容易会把工作任务过于乐观的估计,一天搞定2个问题,3天就开发好一样,其实3个月都难开发完毕。因为客户已经把需求高度概括了,就像是我需要编程厉害的,数据库精通的,网页也精通的其实就3句话,但是能达到这3句话的程序员其实也不是很多的,这3句话一般能超过努力工作3年的境界。

   
    一个在深圳的小型项目,远程维护过程中主要遇到的问题:
 

   01:刚开始客户总把需求急着提出来,QQ上今天发一下,明天发一下,刚开始在做这个项目的时候还可以,但是项目开发工作结束了,也开始了其他项目后这个就很影响工作了,总是容易被客户打断,而且软件有不足什么的,心里总会沉甸甸的总想马上就处理好,其实这个东敲一下,西搞一下,整体的工作效率会很低,所以最好能让客户批次的提出需求,给客户提供一个简单的Word样本文件,把问题的原因、抓图、希望达到的效果等等都描述好,然后批次的提交一下,这样相对来说效率会更高一些,问题也都能集中起来。
 

   02:往往是需要跟客户的多个相关人员沟通,有时候同一个事情需要给A说一下,还要跟同事的B也要说一下,有时候忘记跟A说了,也不知道有没有给B说过这个事情,这时候最好不要急于用QQ、手机等即时通讯工具沟通,最好是仔细写个邮件,把问题写清楚,然后再打电话告诉有什么什么事情,什么原因等等,然后让啊,A,B注意查收邮件。
 

   03:程序的更新,数据库的更新等越少越好,刚开始的时候设计越稳健,越合理,后期的维护工作就会轻松很多,因为客户的需求往往是会变的,甚至今天提出来的需求更前几天的矛盾了,每次客户提出大的需求变更后多多少少需要修改程序,调整数据库结构,这时候需要做好备份,然后最好是在晚上进行更新,更新前把新的程序,数据库变更脚本都准备好,更新升级需要的时间越短越好。
 

   04:客户也不是神仙,一开始的时候不会把所有的问题都想到,Office也不会一开始就会是 Office 2010了,客户说要你开发一套办公软件,让你开价,你会开多少?然后客户连续10年都提不断的改进要求,其实人家的要求也都是合理的,按道理都应该给人家修正才对。但是软件开发也是有成本的说法,你只收一次性的开发费用,然后持续给改进10年,那需要多大的投入?所以并不是客户提出来的所有的意见都能修改都能满足的,这个需要把握个度。也不好有什么衡量,若你不好好给客户改进,客户就不会给你尾款,后期也不会有新的合作。若你客户的需求没完没了的一直改,改100年都可以有的改,有的客户很没良心,你就任劳任怨的给他拼命改进更新,甚至是给100%的修改维护,但是后期还是不会给你合作的机会,所以有时候也要看命运的安排。但是只要用心去对待客户了,相对来讲后期的发展空间总会更大一些。
 

   05:我们在设计开发中总会忽略到很多问题,例如有几百个客户端后,各种乱七八糟的事情都会发生很多,电脑的操作系统有各种版本,客户的浏览器有各种版本,光IE有时候就好几个版本,所以会遇到很多事先没想到的问题会发生,所以在开发、设计、规划时要留出充分的时间上的考虑,不能把工作安排得过于紧凑,其实我们历史以来就可能没那么高的工作效率,这次也不大可能会有翻天覆地的变化。我们系统开发的环境与部署的环境也不一样,上次就遇到软件无法部署的问题,换了一个主机后就很顺利的部署了,另外一个主机上死活不能部署,有时候也会有这样的活见鬼的事情。我们在自己的电脑上运行程序都很快,但是客户有的电脑配置极低,连审核按钮都可以连续按5次都可以,我们自己的电脑上飞快的东西,客户电脑就会出现这样的神奇慢的运行速度。
 

   06:开发工作量与软件预算的冲突也是个头疼的事情,客户的预算是有限的,但是客户的需求是无止境的,客户也不是每年都能有预算,所以客户的需求范围一定要控制住,千万不能轻易的松口,很可能你答应的一句话就是1周以上的工作量,在合同范围意外的工作量能委婉拒绝的全部拒绝掉并不是坏事,但是这个当然需要有一定的表达上的艺术性,否则很容易得罪客户。
 

   07:有时候遇上出差,不在杭州时,特别是在内地出差时往往网络环境会很糟糕,这时候最好是有无限网络,虽然无限网络也难进行远程控制等等,但是总比上不来网相对好一些,有些管理严格的公司里,虽然有网络也是不能上外网,在银行里、石油公司里大多都不让上网,这时候有无限网络相对会好一些。因为客户的问题不能及时处理,就会丢失客户的信誉,没信誉了,口碑就会差,口碑差了没生意了,没生意了日子就难过了。
 

   08:每次更新程序一定要做好测试工作,最好是在自己的本地多测试几遍,然后让客户的相关人员也测试一下,然后才真正去升级生产环境里的服务器比较好,升级前与升级后,最好跟主管打个招呼,成功升级几天后,最好也进行一下回访,确认一下问题是不是得到解决了,不是光说程序更新就可以了。
 

   09:逢年过节什么的,最好也给客户打个电话,打个招呼保持联系,因为很多天不联系的人慢慢的就会疏远了,就像我小学同学,初中同学,高中同学,大多都很疏远了,也是由于地域的差别,文化的差别等等,沟通的次数也很少了,有什么好事情的时候根本不会想到他们的,也根本不清楚他们都在干什么,擅长做什么,或者是做什么生意的。
 

   10:你要保持一个良好的心态,因为别人的心态会影响你,你的心态也会影响别人,虽然我们不用语言表达,看看言谈举止,看看你,或者感受一下你文字,别人就知道你的心态,我们有个良好的心态,很容易影响到客户,大家都会开心多一些,心情好了其他什么事情都会顺利一些,大家心情不好都是火药味十足,很容易擦枪走火。
 

   11:开发人员有的时候也不能过于软弱,该软的时候软,该硬的时候硬,特别是客户的需求严重超出需求范围时需要内心强硬一些,因为这时候一软后果严重,给客户提供服务时多一些温柔体贴,多一些包容,多一些关注,工作生活会更顺利些,人嘛总共能活的日子也是有限的,在有限的这么几十年里还是快乐多一些好。
 

   12:历史提出的修改要求,功能改进要求都记录好,将来亏本严重了,或者想拿到下一个项目时,可以拿这些变更需求扩展等等说点儿事,会对下次合作谈判对你更有利一些,别干得死去活来,优化改进了N多问题,最后连个记录都没,大多客户都不认可的,干啥事情都需要拿个证据,请记住这点很重要,特别是在法律上很可能会救你一命关键时刻。
 

   13:在项目上太贪婪了客户会远离你,技术太差了客户会怕你,费用开口太低了最后白干一场的是自己,这个都需要把握个合理的度,做软件伤身体折寿,白菜价瞎折腾不如看看书提高自己锻炼身体,争取多活几年,多看看世界的美好风光,天气快要暖和了值得期待的日子快到来了,女孩子会穿得越来越少了,天快点儿缓和起来吧。

 

   最后真诚感谢客户项目的尾款都提前给结了,谢天谢地,好服务得到了好回报。

 

 

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。