在去年10月份的时候公司给我安排了一个项目。直到今年4月份的时候,这个项目因为各方原因做不下去了。通过这个项目,主要还是跟各方人员交流上收获了不少。看看大家有没有碰到跟我一样的经历。
先介绍下背景,我所在的公司属于大企业下的子公司,其实就是原来的IT部门独立出来的,有搞销售的、搞硬件开发的还有搞软件开发的。人也不多,搞软件的就4个人吧。这个项目是给某国企党支部开发一个web形式的党员建设方面的系统,主要目的是让原本书面化的东西电子化。话说光项目其实也没啥高级的地方,关键在人员之间。首先这个项目是通过认识那家国企的介绍人介绍给一家A公司的,一开始A公司是先给另外一家B公司去做,但是B公司做到一半不做了,A公司老总跟我公司老总比较熟,于是A公司就给到了我公司做。而我公司的项目经理又把这个分配给了我一个人去做。
接到这个项目的时候,项目经理就建议老总说不要做,因为内容比较多,关系也复杂,时间还短。但是呢,老总因为人缘的关系最后还是答应接下来了,然后让我去了解这个项目的实际情况。拿到了B公司做到一半的项目代码,然后再跟B公司里面的开发人员沟通了下,项目代码实际情况是B公司拿了一个几年前做过的项目,在那个项目基础上修改而成。数据库是oracle 9i的,C#写的asp.net webform。框架上面也没有很明确的分层,其实就没分层,就访问数据库的时候用了类似linq to sql的DBLinQ去访问oracle。DBLINQ一开始一位就跟linq一样方便,实体类是有个工具自动生成的,但是呢用的时候发现总会发生莫名其妙的问题,最后索性放弃不用了。后来想直接用entity framework,但是发现9i上面装了Oracle Data Provider for .net,也不知道啥原因装了后就连接不上oracle。哎~最后就只能老老实实的用原始的ado.net了。然后我再到了国企待了几天重新做了需求分析。需求了解下来一下子明白为啥B公司的人不再去做了。B公司一开始就没去详细的了解需求,拿了一份别人了解的需求文档看了下,认为就跟以前做的项目差不多,只是表单不同而已,国企的IT部门本身也比较着急,就让B公司先动手去做了。但是做到一般给国企的党组织部门去看的时候发现根本不能满足他们的需求,基本上要从底层改起,而且B公司也就安排了2个人去做,在短短的2个月内没有完成的希望,所以索性就不要钱不做了。一转手A公司呢,本身没有开发人员,通过关系接了这个项目后想通过这个项目入手来接更多的项目,所以他们也很希望做下来。在我需求分析完成回来跟A公司汇报情况的时候,我本想直接跟他说这个项目不好做的,但是对方老总直接跟我说,这个项目已经确定要做了~~然后我就无语了。
就国企党组织部门方面的需求,对方要求还是比较高的,一再的跟我强调要在用户操作上面方便、简便、自动。我一看就想这个前端页面肯定要用javascript框架库才行啊,可是B公司用的都是服务端控件,好吧~我对服务端控件这块比较陌生,不太会用控件形式的ajax。还有权限管理方面的问题,B公司做的根本无法满足,要彻底的重做才行啊。但是呢,国企方面根本不懂技术啊,看到了界面认为差不多了啊,就一些地方没有满足需求,改那部分的东西就可以了啊,于是就说要2个月内搞定它。我回去后跟公司老总说,这个项目我一个人2个月时间根本不可能完成啊,然后老总跟我说,时间上面他会想办法拖延的,没问题的~然而A公司的老总跟我说是,2个月时间比较急,你要晚上加班做啊!(加班你又不给我加班费,我干嘛听你话说加班就加班啊!)于是乎,我就那么一个人接下来相当于一个小型OA的项目,里面有近百张表单,简单的流程审批,有多个数据库之间的数据同步共享,前端页面还要单独开发一些js控件;我还要重写权限模板,用户管理模板等基础功能。好吧,只要有时间这些做的话我也能搞定它,但是关键是没太多时间给我啊~
做了项目,国企的IT部门就整天的催进度,因为对于国企来说,它只知道把项目承包给了A公司,不知道A公司还转手了。A公司一开始已经花了3个月时间给B公司去做了,所以国企认为已经给了很长的时间。它又要向上级汇报,毕竟也是项政绩任务。A公司的老总就是搞销售出身的,对技术根本不懂,他认为B公司花了3个月已经把大的框架做好了,而我就像一个码工跟着之前B公司做的改改就可以了。我公司老总呢,本身事务也忙,基本就交给项目经理去弄了。项目经理自己身上就有项目,而且一开始就认为这个项目做不了,硬是让他去安排人去做,而且公司本身就没几个人,别的人都有任务所以就拉我一个人去做了(我能说因为我跟经理说了我喜欢挑战性的项目吗?)。于是乎,所以的压力就集中到了我一个人身上,我也很想能够完成这个项目,但是毕竟我不会分身。从前端js控件写到后台C#代码,再到数据库表、存储过程这类,叫我单独写都可以写,但是又要写这个又要写那个,时间哪里来得及啊。然后对方还要求每周都要有进度报告~按照实际情况写也没啥,可是A公司认为不能让国企看出就安排了我一个人去完成这个项目,才做了这么一点事情,于是就在我交的进度报告上把我还没做的内容都给填了上去。国企看着我还是做了不少东西的嘛,然后就急着要看网站,没办法就给它在服务器上面部署了一个测试站点让他们先看着。我还不能跟国企说实话,说就我一个人在做,很多东西我都没做呢!当然国企里面的IT部门看到了有测试站了,就想着到他们公司里面去部署。然后我就又充当了一把项目实施人员,去给他们部署。部署完了还要给国企的党组织部门去讲,当然他们这个时候看了下发现还有很多东西没有完成嘛~就要我自己来圆自己的场!靠!这个时候我想说,我只是一个软件开发人员啊!不光要开发,还要说谎,其实我是一个诚实的孩子,不会说谎,特别是不会说一些自己都认为不可能完成的东西。
差不多过完年吧,反正拖延时间这块老总给我档了不少。不过问题是国企对方老是认为我做的东西完成度不高,没法实际使用,让我跟他导入用户、部门、新建用户账号等基础数据。国企方面也比较火大了,下了最后通牒说必须在那个时间节点完成。然后我公司的项目经理这个时候终于觉得我一个人的确顶不住了,然后马上就说让其他几位一起来跟我去开发。然后还答应了对方可以住到对方公司里面。哎~其实我想说网络时代如此今天,到现场和不到现场对于开发人员来说并不会有太多效率的提高,只是反应出需求调用时了解的不够详细。特别是就为了部署到服务器上还要我到现场,明明可以通过远程桌面部署的东西,偏要我冲过去,来回就是2天时间啊,不给出差费就算了,关键是浪费时间啊!所以最后一次谈的时候,我内心也比较火大了,根本就不想再做下去了,都想着回去后抱着辞职的觉悟跟老总说我不干了的。戏剧性的一刻发生了,国企方面考虑下来认为拖延的时间太长,而且看我也没太大把握于是就提出来不再做下去了。我当时就非常开心~不过A公司貌似还不太甘心的样子,再去商量了半天。最后,我公司的老板开会问项目经理意见,然后项目经理说这个是无底洞,建议放弃这个项目。于是近半年的东西就这么被放弃了。
在我看到的范围内,这个项目的各个方面都不满意。国企不满意A公司拖延了太长的时间,一直给时间缺始终没完成。A公司以为我公司会全力的去做这个项目,多次向我老板提出要加大人力投入啊,结果还是我一个人在奋斗~这个项目损失了不说以后合作也泡汤了。我公司认为是在帮A公司擦屁股,接了一个烫手山芋,对方逼得太急了。而在我看来,好吧,我个人技术还是有很多提高的空间,然后得出一点,我不是章鱼,没有8条触手。
PS:在我写代码的时候发现对于一位程序员来说,需要一台不会卡的电脑和两个显示器非常必要。我很多时间就浪费在等待公司破电脑运算的时候了。