update:实际系统在12月初上线了,磕磕碰碰的运行了10来天,应该算是完成它的历史使命吧,就是不知道明年科技处还敢不敢用。 题目应该改成:为什么会做的这么烂? 现在距离真正开始写科研管理系统已经半年多了(其实快一年了)。经过最开始两个月的突飞猛进,到现在整个项目陷入停滞不前。我想了很多,感觉整个项目其实已经无法按时交付了,甚至都有可能无法完成(而且可能性较大)。这是第一个由我完整控制的项目,中间是有许多问题的,烂代码是最主要的问题,为什么会写烂代码?

客户需求不明确&想太多

科研处的需求听上去挺简单的,老师(用户)填各种表格,选择各种选项,学院审批,科研处审批,入库。但是真正去实现的时候并没有这么简单。

  • 这中间牵扯到不同老师的身份权利问题,项目分负责人和参与人……,论文分第一作者、第二作者……,著作分主编,参编……,然后有的人员的积分归学院得(比如行政的),有的人员则是谁也不得(比如离退休)。正常来做也不是不行,但是问题还存在于,有些东西负责人(第一作者,主编)并不在我校,任务的所属从一开始就没有确定,一直在扯皮中改来改去。
  • 填表的内容分项目,论文,著作,专利,获奖情况……,院系审批现在都还没理清楚,比如多个参编,没有主编,归哪个学院审批?各种流程中只有论文是比较清楚的,其他的都是一锅粥,甚至“项目经理”都搞不清楚其他流程到底是什么样的。最开始是“先做着,到时候再改”,现在是“不管了,先做出来再说”,起码到现在,我都不知道要做个具体的什么出来。

整个项目还有一个特点就是想太多,技术水平没有达到,但是又试图去包揽很多脏活累活。

  • 比如分数的计算,分数分配的校验。学校文件很多都是“原则上”的,一旦针对某些特例更改非常麻烦。
  • 项目外键满天飞,最初目的就是为了方便修改,但是基本无人能改,因为谁都不知道改的这个被多少张表引用,毕竟当时设计的时候连学院改名都给考虑进去了。(几乎所有存在重复的信息都单独抽到一张基础表里面去了)。
  • 字段莫名其妙,例如计算分数和分配分数的表,格式千奇百怪,有很多字段都是以json格式打印出来存进去的。抽出来是为了方便调整,但是估计没人能调整。
  • 使用了工作流引擎,但是对其干扰太大,基本每一步都有拦截器来控制,实际使用下来,和不使用工作流基本没有太大区别了。特别是某些可以用行政文件来控制的,都放到工作流里面去了。

技术不稳固

这个应该就是我的锅了,整个项目无论是前端部分,以及前后端交互部分从头改到位,从最开始的前后端完全分离(Jersey),到后来的前端部分分离(Jersey+SpringMvc),再到现在的pjax+Mvc,前端除了脸面,其他基本改了个遍。当然,现在我个人感觉比较稳固了,然而却没人做了(前端队友都去考研了,准确来说,除了我都去考研了)。 工作流部分运用不熟练,最开始的错误使用方法导致前台JS做了很多苦力活,现在却因为前台积累,错误用法也不好纠正了。

功能实现

这个也是我的锅,很多功能从最开始到现在,一直都没实现,权限控制曾经做了一个版本,但是管理的太过粗放,现在基本属于没有权限管理的状态。 数据导入导出,导出能做,导入估计是个苦力活,估计是不会做了的。 数据展示,功能接口应该是都有的,然而前端并没有展示(都去考研了)。

先写在这儿吧。