笔者在高校的教务处、研究生院各工作了六年时间,主要工作就是教务管理系统的维护与建设,类似的工作经历无论在本校还是其他高校都不多见,近期因为工作调整原因,在新部门筹备建设阶段,自己动手开发了一套宿管系统,其实就是安排床位、处理退宿、查询状态等。在这个过程中,对原来一直困扰的问题进行了重新审视,现梳理一下,水平有限,仅供参考。
为什么管理系统总在重复建设,而达不到满意效果?
无论是跟随还是实际需要,信息系统都要上线。通常的做法就是找一家公司,业务部门提需求,公司一一记下来,或者在现有产品上修改,或者重新开发,总之乙方会严格按照甲方的要求来做。这中间有两个问题会被忽略:
1、甲方需求合理吗?
2、谁去关注业务需求如何落实到数据库定义,谁去关注数据的流转?
今天听到一个特别同意的说法,甲方提出来的“需求”其实充其量叫“诉求”。确实,所谓需求有时候距离科学合理相距甚远,不客气的说甚至是NONSENSE。但乙方很难也很少会去反驳甲方,毕竟要接下来项目,要赚钱,你说啥我做啥就是了,总之界面上你要的“按钮”我给你做出来,甚至还会用一些华而不实的功能去吸引甲方。甲方更关注的是界面,要什么功能,很少会关注系统如何实现,底层的数据如何定义,每一项功要用到哪些上游什么标准的数据,又能为下游提供什么样的数据,功能在执行中产生了哪些有用的过程数据。
这样的系统最终在上线后,很多当初提得功能被废置,重要的功能系统因为缺乏规范的数据定义,业务流转起来总会因为数据不规范的原因导致功能出现问题。这时,甲方很少会去审视自己,最终也就骂骂乙方,一句话:“公司太烂,系统不好用”,逼急了换公司换系统,开始下一个三五年的轮回。
我们到底需要管理信息系统做什么?
这个问题能得到的答案基本一致:管理规范,效率提高,数据共享。其实,这些诉求跟上不上信息系统并没有必然联系。管理规范和效率提高,显然首先要改变的是管理思路和管理流程,线下业务照搬到线上并不能解决根本问题,繁杂的工作流程不会因为使用了系统就变得高效,反而常常会因为系统影响工作,而数据共享同样更是要改变管理思路,打破部门壁垒,放弃默守陈规。
信息系统最重要的功能是把分散的数据集中到一起,实现数据采集、流转、分析,总之,数据才是是根本。业务?功能?只是为了产生有效数据而已,毕竟数据不准确的系统毫无用处,功能再多又怎么样。认识到这一点,甲方才可以提出合理的需求,乙方也能更好实现。
从甲方到乙方的身份转换中的一点感悟
在做宿管系统前,我与具体负责业务的老师梳理了一下“诉求”,当时认为一切都是合理的,都应该要做出来的。但自己在不断的开发过程中,重新审视需求,逐渐发现其实有些当时的想法并不科学,或者是没有必要。
举一个例子:
新生名单拿到之后,我们会把现有床位按人数分配给学院,学院辅导员负责安排本学院学生的床位。首先想到的实现应该是系统管理员在系统内分配床位给学院,学院管理员在权限可视范围内在系统内安排床位。但这种实现方法就要求系统有角色、权限体系,对于宿管这个不太复杂的系统来说,单单这个权限体系就占据了比较大的开发工作量。而这个功能,一年只在新生入校前用一次!换个思路,系统管理员把可用床位导出到Excel,然后根据人数,拆成多个Excel分别发给学院,学院最后把床位、学号对应关系以Excel返回给系统管理员,系统管理员把数据做简单校验(比如用Excel里面的vlookup),然后导入系统就可以了,系统只要在导入过程中做一定校验即可。我们必须承认,Excel里面很多好用的功能,比我们自己开发的系统要强很多。
这仅仅是一个把复杂问题简单化的例子,还有很多。
使用Grails,整个系统开发大约10天时间,而我已经十多年没有做过编码,更是对web编程零经验的人。之所以可以做到这样,我想是两方面原因:
1、现在的程序开发框架已经非常成熟,开发软件就类似于搭积木。
2、我自己可以掌握需求,觉得不合理,改!
高校信息化,敢问路在何方?
软件即服务,这个概念已经提过好多年,但直到现在才有切身体会。系统开发本身的技术含量和工作量已经很低,而需求分析、业务梳理、数据定义才是系统建设中最需要投入的环节。
所以,愚以为高校的信息化建设最关键的是人员队伍建设,一方面是业务部门的人员信息化素质提高,另一方面是建立一个相对专业的软件服务队伍。但目前高校的工作对于计算机专业的从业人员吸引力很低,学校信息化建设主要靠并不包括我的一小部分人自我追求与奉献精神在支撑。期待在不久的将来,学校能在这方面人员队伍建设上给予充分重视。高楼大厦拼不成一流大学,服务器和计算机也堆不出来信息化。
信息化是买不来的,还是要靠自己人一点一点干出来。