(公文收发小软件:程序开发部分) 日期:2009年2月1日 晚上 分类:项目开发经验 跟客户也达成了一致意见,我心里还想,就这么简单的东西,不就三下两下就搞定的玩意儿吗?还偷偷乐了一下,很久没玩过这样的小项目,做小项目有成就感,而且比较简单,也算是一个产出。 价格都商定好了,于是网络中心的老师带我到那个部门了解真实情况。客户给我演示了一下老系统,哇靠,功能哪有那么容易啊!粗略地数一下,有收文功能、督办件功能、强大的收文查询功能、收文轮阅功能、轮阅提醒功能、发文功能、强大的发文查询功能、排序功能、公文序号产生功能、公文抄送列表功能,发文有发文类别、收文有收文类别…… 看到这里,我心里有些虚了,这么多功能!而且那个平时使用这个软件的人,操作简直熟练透顶了,全键盘操作,功能非常连贯。需求明确了,好了,就这么些功能,想升级一下。 话也说出去了,牛也吹了,总不能现在就跑了吧?我狠了一下心,算是自己栽了吧,反正平时的积累也很多,加几个班弄出来算了。本来是想给公司弄个小项目,蛤蟆也是肉,赚多少算多少吧。 以下所说的每轮,不只是跑了一次的意思,是至少跑了一次的意思。政府单位的人,懒得跟你邮件沟通来沟通去,人家需要的是周到的服务,当面交流效率才高,交流的误差比较小,而且项目在本地,跑一趟也容易。 第一轮 回到公司,跟公司的领导汇报了一下,说教育局要一个很简单的小软件,半个月不到就可以做好,客户也不愿意掏多少钱,我就八千元答应给他们做一个看。我们领导人好,说那就弄弄吧,反正是一个小项目,功能也不多。其实这时候我是不敢说功能还蛮多的。 我想,数据库就用SQL Server吧,项目也不大,就做个Web版本的。经过一周,我把客户需要的功能都做出来了,给客户去演示,客户比较满意,对我的印象好了很多。 然后,他们说以前的软件没有打印功能,用起来不舒服,他们想加个打印功能。那不加钱是不行了,这个功能是当时没提过的,而且在Web里弄打印还是很折腾人的事情。要加钱,也可以,他们说会向领导提,只要用得舒服钱都好说。有这句话,我心里舒服多了,毕竟是堂堂的宁波市教育局,应该不会差这么点儿小钱吧? 第二轮 又回去弄了三天,把他们需要的三个打印功能弄好了,我自己也测试打印了十来次,打印效果还不错,而且我还干了一个通宵,把Web直接打印的问题解决了。打印功能实现好了,我又给他们去演示,他们又提了很多细节功能,我想他们都同意加钱了,应该没啥问题,就把他们提的很多细节问题都解决了。 第三轮 这时候,他们终于说实话了,以前那个FoxPro的软件是教育局内部的人编写的,当时那个人经常到那个部门,跟他们进行沟通,那个小软件前后修改完善了三年,才到了现在的程度,然后现在操作这个软件的人,用这个小软件也已经有五年了,所以任何操作的细节,都要符合他的习惯,例如快捷键的设置、光标的停留位置、回车的处理、页面的跳转、查询的优化等等,提了很多很多。没办法,我硬着头皮回去继续搞。等到都折腾好,已经又过去了半个月,超出我的预计足足1倍了。 第四轮 这下他们看看程序,也不错了,就真的想用新的软件了,他们就说,要把前十年录入的数据导进来。我想这个需求也是合理的,否则人家那个旧电脑报废了,数据怎么查?新系统上线就是为了淘汰那个旧电脑啊,我反正对FoxPro也熟悉,那就弄吧。 我在自己的电脑里安装了Visual FoxPro,分析了数据库结构,头都大了。里面的数据多得要命啊,有30万条,而且数据的严谨性不高,导入SQL Server根本不是想象的那么简单。好在我数据库的水平有一定的高度,折腾了3天,写了N多脚本,终于把老数据库导入的问题解决了。 第五轮 他们采购了新电脑,里面啥都没有,安装IIS、.NET运行环境,配置好网络,再把数据库安装好,程序部署好,又解决了很多权限配置等相关问题,还调试了打印机,总之足足折腾了一天,等把老系统的数据导入好,新系统能跑起来,已经到下班时间了。 教育局的老师说了,新系统还要试用一段时间,才能正式上线使用,因此老系统还需要用,过些日子需要正式上线时,数据需要重新导入一下。然后又提了一个功能,以前是单机版,现在想要网络版本,平时这个软件是由一个老师操作,另一个老师也偶尔来查询数据,以前是用复制软件的方式,现在想直接在这个上面用。 晕倒了!不是说单机版本吗?现在又变成网络版本了?又说了,楼下也有一个部门的老师经常需要查询数据,但是不能修改,只能查询。哇靠,那还需要权限控制了?这个跟开发一个大型应用一模一样了,我又强调了,这个是需要加钱的。客户说没问题,他们会向领导反馈,需要我把工作量打个报告过来,给领导审核。 其实说到这里,来回跑的已经不止五轮了,还好项目在宁波市区,平时坐公交车就可以了,说得夸张一些,要是平时自己开车去,油钱也要上千元了。我继续说开发。 第六轮 客户试用了一段时间后,又提了很多细节问题,其中有些问题简直是要人命的,主要是快捷键的操作。还好我JavaScript的能力也很强,经过死去活来的改进,终于把细节问题都修改好了。 客户终于说,那就正式上线吧。客户的日常工作,几乎是不能间断的,他给了我一个小时的时间,说4点半开始会很忙碌,你必须在4点半前把事情全部搞定。哎呀,真的不是吹的,我的动手能力是超级强大,但是在一两个小时内,把几十万条记录都处理好、导入好,新旧系统都衔接好,在好几台电脑中间折腾来折腾去,还真不是开玩笑的。 心都要累死了,几乎没有犯一个错误,没有浪费一秒钟时间,升级 好了。 客户用用还可以,他们每天要收到几十个公文,要在一个小时不到的时间里,把这些都处理好,所以对软件的操作细节要求非常高。 什么叫专家?就是收文发文的工作,做了五年以上,天天进行几十个文件的收发,有条不紊地给近十位领导抄送文件,这就叫专家!给专家做软件,容易么?!为什么这个软件能用十年?为什么升级好几次都失败?因为客户有很多细节的处理要求,一般人是达不到的。 第七轮 这下总算可以结项目了吧?客户又说了,还需要统计功能。晕倒了,统计的方法接近十种。 我说能不能谈一下项目的价格问题啊?我已经搞了一个多月了,你们到底给我多少钱啊?让我心里有个数好不好?否则我怎么向领导交代啊? 我工作的每一天,都是需要成本的,我们公司的程序员,一般每天是800元,像我这个级别的是1200元以上的报价,我再干几天,就要满满工作两个月了,两个月用1200元/天算,这个费用好几万了。和八千比较,已经不是一个数量级了。 客户说了,你把功能都做好了再来谈加钱。 我晕了,政府部门就是牛B啊,我只能硬着头皮回去继续做。 第八轮 又折腾了一周,把统计功能也做出来了,然后列出了一个工作量清单,就这么三个功能延伸出来不知道几倍的工作量了。客户的一句话,能让我折腾几天啊。 序号 功能模块 详细功能部分 工作量(天) 1 初步需求分析 0.5 2 发文部分 发文功能 0.5 发文查询功能 0.5 发文修改功能 0.5 发文编号产生方法 0.5 发文断号检查功能 0.5 发文附件功能 0.5 3 收文部分 收文功能 0.5 收文查询功能 0.5 收文修改功能 0.5 收文编号产生方法 0.5 收文断号检查功能 0.5 收文附件功能 0.5 4 收文编辑轮阅状态维护 1 5 轮阅 1 6 轮阅提示 1 7 详细功能确认 0.5 8 分析原数据库结构 1 9 将原数据导入到数据库中 1 10 将原数据导入到新系统中 1 11 打印督办单功能 1 12 打印承办单功能 1 13 安装维护 1 14 重新导入最新的数据 1 15 软件功能测试、性能测试 3 工作量小计 20 16 安装最新软件 0.5 17 测试最新软件 0.5 (续) 序号 功能模块 详细功能部分 工作量(天) 18 最新数据库导入 1 19 自动归档功能改进 1 20 按分类搜索功能改进 1 21 按分类输入关键字功能改进 1 22 按回车进行查询功能改进 0.5 23 导入数据有重复显示问题解决 0.5 24 开设只有查看权限的账户 2 25 重新安装系统、查询优化 1 26 数据整理维护、编号产生方式优化 1 27 发文按发文类别查询、收文发文按顺序倒序编号排序 1 28 不按签发人查询、收文急件能直接归档 0.5 工作量小计 11.5 29 打印领导批示单 1 30 按收文份数统计 1 31 按每一类文件数量统计 1 32 按全部文件数量统计 1 33 未归还文件列表打印(按处室为单位) 1 34 发文未归档文件列表打印(按处室为单位) 1 工作量小计 6 工作量总计 37.5 说白了,半天就能搞定一个功能,或者一天就能把一个难题解决,也真不是那么简单的,我平时除了睡觉、吃饭,几乎都是在研究这个软件了,并且还加上以前的积累,否则,哎,完蛋了这个项目! 我平时还做一些其他大项目的技术支持,否则两个月光做这个项目,真的丢死人了。干了两个月只给公司带来毛利8000元,哎,亏死的买卖了,这样下去要破产了。