首先大概介绍下当时情况下我们的公司状况,公司规模很小,基本上具备了中国小公司的一切特点,人员少,巅峰时期也就三十多个人,平常项目少的时候,还有10个人打天下的时候;部门少,使的上劲的就是就是开发部,开发部里有两个人兼作网管,技术支持,除了开发部就是销售部,销售部的头头兼作HR,销售部的成员兼作文员,有时候写写文档。
因为部门是如此的稀少,那组织层次自然也很不复杂,我们时常能亲自得到老板的接见,呵呵,说错了,是得到老板的亲自接见。公司接项目的情况,基本上看老板的本事,老板有关系有人脉,就能拿下不少,有的时候项目堆一块,特别的紧,有的时候青黄不接,就断粮了。
当时我做那个项目实施的时候,我也是个新手,刚进去公司时间不长。因为该项目中我参与了开发,对项目相对比较了解,所以等项目开发完成,本人就被派去做实施了。如前所述,在小公司里,那得是一个萝卜一个坑,基本上所有的人都得兼职,有什么要求就得做什么,我们自然也不会有专门的实施部门了。这个项目七月一号上线,六月三十号,我们还在修改东西,我想小公司大概都是这样子的吧,保证不会提前完成。
那个时候,我还不知道我当时的工作叫做项目实施,很长时间以后我才晓得,如果给那会那些复杂零碎的工作起个名字的话,就叫项目实施吧。当时的想法很简单,就是把我们的软件安装到客户的机器上,导入数据,然后培训下业务员。那个时候刚进入IT行业,实在是知道的不多,就这样就赶鸭子上架了。不管怎么样,七月一号,我是被客户的汽车拉到了客户那里,哎,说起来真是窘迫,从那以后,不管什么事,都是客户的汽车把我给拉过去,然后客户IT部门的经理有时候还请我吃饭,按理说人家是客户,我们应该巴结着人家才是,但是谁让咱没人家有钱呢。我这来回往复的车费,能给按时报销下来,我就应该感激公司了。
到了客户那里,首先见到了我们这个项目的最终用户,一个胖忽忽的很凶恶的女人,(一般我不喜欢的人,我就觉得她丑,实际上未必如此),这个女人是客户公司的业务员,也是最终使用我们这个系统的人,我一开始还以为得培训多少人呢,到那才知道,她就是我的唯一培训对象。我们的系统名字叫做ERP系统,实质上只是一个ERP的子部分,就包含了四个部分,入库,出库,盘点,货架管理。我就负责把她教会怎么使用这些。经历过一番虚情假意的客套之后,(之所以说虚情假意,因为之后我才知道其实她很抗拒这套新的系统,十分的不喜欢,后面是横挑眉毛竖挑眼。),就开始开工了。
第一个工作是导数据,在这里我必须说,客户准备的数据还是不错的,十分干净,基本没有脏数据,这说明人家的准备工作很充分。导入数据的过程也基本上顺利,我们的系统也没出什么岔子。在这个期间,我给业务员讲解了如何使用我们的这套系统,之前我们做了个模拟的有同样功能的系统,可以在互联网进行访问,但是就在这个阶段,破坏了我们的公司给人家的第一印象,也不知道是他们的网络太慢了,还是我们公司准备的这个模拟环境性能不够好,总之是操作十分缓慢,跟慢镜头一样的,按钮按下去半天才有反应。人家这个时候,眼睛里就有了鄙夷的眼神,我虽然看在眼里,但是无可奈何。
最后我也受不了了,我就打电话给我们公司的技术支持,让他们查查是不是我们的服务器出问题了,我们技术支持人员还是一贯的态度,‘我想这不会是我们的问题,是不是你们那边网速太慢了’,这个技术人员似乎说贯了这种套话,给谁都来这个。我真是被气疯了,对客户耍这种赖皮,对我还这样。我打电话前,先在客户那测试了一下网络,访问新浪,百度,速度都不慢,我当时想,我无缘无故,不会打电话回去的,怎么技术支持对谁都是这套废话呢,在客户那里,我又不好意思发火,只好说‘你再仔细看看,应该不是这边的问题’,对方回了一句,‘那我就不知道了,看看再说吧’。
到了下午,模拟环境干脆完全死掉了,一点反应都没了,当时客户的脸色就十分难看了,客户亲自打电话到我们公司询问,才知道服务器已经当机了,我看到客户要发火了,我赶忙接过电话来,避重就轻的批评了那边一顿,谁知道这一停就是一个多小时,客户等的十分不耐烦了,我只好说,小公司吗,就是这样,这句话一方面说给客户听,谁叫你把价钱压这么低呢,另一方面,也说给我自己听,因为当时最尴尬就是我了。最后客户不耐烦了,不使用模拟环境了,就使用真实的环境来吧。好在我们系统可以做一些无效数据来供试验,忙活到大晚上,总算给把这一天给过去了。第二天客户的业务员就要真实的业务处理了,我心理十分的紧张,但愿别出撒事情啊。
事实证明,侥幸心理是不能有的。第二天一用就出问题了,出货单无法捡货,人家的工作还得继续,这个是一分钟也不能耽误啊,于是我赶紧打电话回去,找我们的开发人员改bug,开发人员还算不错,总算是在比较短的时间就给找着了,但是接下来的问题确是头疼的要死。这回是客户这边的网络是出问题了,改的代码横竖传不过来,而我们公司离客户公司又非常远,来回得半天。我们公司小,没有专门的车,客户公司的车又订出去了,真它奶奶地,怕撒来撒,最后决定还是得在互联网上传,蜗牛一样的速度,慢慢爬了一个小时,总算传完了。其实有更好的办法来做这个传送,但是当时我是新人,又光顾着急,完全没有想到,怎么传我就不细说了。
第二天过去,所有人的心情就都不好了,业务员抱怨耽误了时间,搞的她还要加班,我也觉得十分的疲惫,十分的丢脸。俗话说,好事多磨,坏事情从来是赶着堆来,客户公司那居然大面积停电,说是推土机把电线给挖折了,天啊,什么世道啊。关键是正处理着数据呢,我们的那个系统对于事务性的支持,我可是心里没底,可别给处理一半。可惜的是,怕撒来撒,还真就只处理了一部分数据。服务器放在客户这边,想访问这的东西,就得有权限,开端口,谁知道客户这边水也很深,交涉了半天人家硬是不同意,说是安全问题。我如果在客户这边改吧,又没有工具。想来想去,也只能我在客户这边改,最后使用PLSQL给改了后台数据库。我后来一直以此为耻辱,这系统做到这个程度,失败啊。但是现在我仍然没有处理数据量相当庞大的项目的经验,不知道各位在500强工作的同仁们,对此有什么良好的建议吗?我的确知道数据库有一定的事务管理的功能,但是我想光靠数据库提供的,应该不够吧,程序里能做什么安全措施呢?
第四天,业务员用的比较深入了,她发现新的系统跟她原先用的有很大不同,很不习惯,总是说这个地方不如原来的好,那个地方也不如原来的好。奶奶地,系统又不是我让换的,老冲我说这个屁话干嘛呢。这个家伙还挺精,当着客户IT部的经理不说,专挑他不在的时候,冲我一个人唠叨。我一开始,还比较能沉住气,后来就受不了,这家伙比机关枪嘟嘟的还快。我是在受不了了,就要求去到现场去和工人实际查看。你别说,这一去还真有收获,跟工人捡货的时候,才正经的知道了他们的需求到底是撒,他们到底觉得什么最难。后来我找客户IT部的经理也商量了一下,修改和简化了一些流程,得到了工人师傅们的一致好评,这是我在这个项目实施的过程中得到的唯一好评,也是我唯一有点成就感不那么沮丧的时候。
第四天和第五天因为没出什么事情,一切顺利,我就撤了,回公司了。这一周忙活的我,十分疲惫又十分狼狈。再后来我去客户那的次数就比较少了,主要是BUG的修改了。公司当时也没有BUG维护工具,就是客户电话打过来就开始改,改完提交,有时候说不清楚就来回电话折腾。在这期间我觉得最不好的就是,没有东西完善记录BUG,而且我们这边也没有及时跟进客户那边的数据,我们还使用最开始的模拟环境,我们改了BUG后,在模拟环境里看一下没有问题了,就提交过去。因为这两边数据不同步,所以有可能到客户那边后,还是不行,还是有错误。有一个并发性导致的错误就是这样,我们这边查来查去查不到错误,后来才知道在客户那并发处理的时候,数据对不上了。
另外的问题就是如何更新,我们这边修改了东西,有了新的版本,客户那边怎么及时更新,我实施的这个项目一直是程序员手工去更新,后来觉得这个办法实在耗费资源,给程序里加了个自动更新,我们那设置一个服务器,我们把新东西放上去,然后客户那边到服务器上去取。
还有个问题就是错误日志。假设系统出了问题,我们得想办法记录下来,用屏幕快照也好,记录操作的日志也好,都得有踪迹可查。要知道客户的业务员很可能不是十分的懂计算机,一旦出了问题,她就慌了,她一着急你问她当时怎么操作的,发生了什么情况,她是一概糊里糊涂,所以我们不能太指望这个证人的证词,还是要系统强一点。
这个是我第一次进行项目实施,有好多东西没有准备,也不知道从哪里下手,就这样糊里糊涂的走下来了。后来看了阿朱的《如何走出软件作坊》,才晓得,象我当时的那个公司,的确就是作坊式工作。当时我隐约的知道,这样做始终是不行的,但是也没想到好的办法,直到后来我离开了这个作坊。
希望这篇文章能给予仍在作坊里工作的程序员们一些经验,不再重复我等走过的老路。