一个教学系统管理员的困惑
2005 年,我研究生毕业后选择了留在学校工作,接到的第一份任务就是给刚刚读完大一的学生开一门编程实践课,让学生们可以充分练习进而熟练掌握刚刚学习的程序设计方法。这样的课程靠讲是没有用的,一定要让学生练,但一百多学生每个人写的程序如果都要我一个人看,那效率注定是极低的。于是我用 Moodle 架设了辅助教学网站,用 Python 写了一个在线给程序判分的引擎,并开始在课堂上使用。后来随着这种方法被领导和同事的认可,越来越多的课程和几乎全校一二年级的本科生都开始使用这个系统,而我也不得不在授课之余花费大量的时间来维护这个系统。
除了定期更新系统的代码之外,最繁琐的维护工作莫过于维护系统中的用户:
- 每年新生入校的时候,要从教务处要学生名单,导入到系统中,给学生们设置好默认密码。
- 为了让学生能自己找回密码,就得逼着他们给账号设一个邮箱,可邮件发多了就会被拉进垃圾箱,想解决这个问题真是头大。
- 每当有新的老师要使用这个系统,都会找我们开设账号,我想恐怕也有很多老师不知道该找谁开设账号,于是放弃了对系统的使用。
- 后来教学上要引入新的系统,我们不得不把 DB 中的密码拉到 LDAP 中,单独维护一个 LDAP 数据库。
这样的工作,不仅消耗大量的时间,用户也不会满意,因为我知道,学校当中这样的系统有很多,而学生和老师们已经被密码搞的不厌其烦,但作为一个学院的教师,我又能怎么样呢?
2007年前后,在仔细的研究了当时国外大学的在线系统后,我发现很多国外的学校都在使用耶鲁大学编写的 CAS 做全校的统一身份认证。于是壮着胆子给校领导写了个建设统一身份认证的建议,请学院的院长助理代为发送,但很显然石沉大海了,从未得到任何反馈。
信息中心的作用
2010 年,我从学院调入网络服务中心。这个单位的职能有三个部分:校园网建设、信息信息建设、教室多媒体设备的建设和维护,而我的工作主要是信息系统建设这一部分。
从数字校园一期项目上学到的
2008 年,学校和某司签署了信息化建设的合同,合同额估计有五百万左右,包含了一整套硬件和三大平台、迎新离校等一堆系统,但实际上整个项目的进展并不顺利,离校系统第一次上线使用就崩掉了。作为用一千块钱攒服务器常年支撑千人同时在线的 BBS 的系统管理员,对于这种动辄几百万却做不出来啥的项目,除了鄙视,真的不知道该说什么。
于是跟某司之间的合作关系慢慢开始疏远,并且循着从各种大会上听来的“经验”,自以为是的开始帮业务部门搞信息系统,譬如学工系统。两年下来,不仅一无所成,还多加了很多班、浪费了不少钱。于是痛定思痛,重新反思作为信息中心到底应该做什么事情。
虽然对于某司的项目并不满意,但我们仔细研究其中的内容时,却发现其中关于建设统一身份认证、统一门户、数据交换三大平台的内容却是非常正确的,而迎新、离校等带有公共属性的业务可以很好地体现并验证这些平台的建设效果。于是我们的工作重心,就从替业务部门操心做业务系统,转回到解决学校信息化工作中的公共部分的问题。因为这些问题,是哪个部门都不方便做的,只有信息中心做,才名正言顺。
看的见的门户和看不见的基础服务层
建设的方法,包括采购,也包括自己做。采购的,多是相对成熟的东西,而自己做的,多是当时很难找到成熟产品或者成熟产品并不让人满意的东西。
任何事情,都不是一帆风顺的,即便找对了方向,前进的路上也会遇到各种各样的问题。其中走过的比较大的弯路,是在移动门户的建设上。从最早和公司合作定制 App,到后来选择了互联网的通用方案企业号,中间的故事已是过往云烟。
但当学校的移动门户建设初具成效后,其价值却是非常明显的。在过去,学校从来没有一种手段,能让三五万人同时使用一个系统,人事、学工、教学,没有一个系统能做到,但当移动门户出现后,再上线任何一个系统都变得非常简单,过去那些做了而无人知道,无人用的系统,只要有价值,接入移动门户也会被迅速地使用起来。当移动门户做好以后,不止一个业务部门的领导提出要在上面增加他们部门的业务。我想,这样的故事,在今日校园和晓庄学院上也肯定发生过。
还有一些工作,一直都不显山不露水,统一身份认证、数据交换、短信网关,很少有人知道他们的存在。但这些系统逐步上线,给我们的工作带来的效率上的提升和跟业务部门之间的关系改善,是非常明显的:
- 当财务系统、资产系统升级时,我们接管了其中对外通知的部分,因为我们承诺无论对外发短信的通道怎么变,我们一定会保证接口不变,不需要他们联络公司改系统;
- 当教务系统升级时,教务科科长主动提出新系统必须对接学校的统一认证,我知道,他也被改密码的事情烦透了;
- 当研究生院做成绩单打印时,主动提出用我们的共享库数据作为数据源,这样研究生系统再怎么改造升级,也不会影响到成绩单打印业务。
具体的内容,有兴趣的朋友可以参考《看不见的基础服务层》。
对于学校而言,看得见的门户和看不见的基础服务层,都是学校信息化平台的一部分,没人会轻易否定其中的一部分。
可以用“操作系统”来形容平台吗
学过计算机的人一提到操作系统,通常会想到的概念是进程调度、内存管理,这的确是单机操作系统最重要的部分。
但实际上,当我们深入地理解操作系统后,就会发现对于程序员而言,操作系统所提供的进程间通信机制和通过驱动统一程序与同一类硬件的通信接口对应用程序编写的影响是最大的。如果操作系统没有约束所有的程序都要通过同一个系统调用打印文档,如果操作系统没有约束所有的打印机无论是点阵、喷墨还是激光,都要实现一套驱动程序接口接收文档,那么今天就会出现每个程序都要自己去适配每个打印机的局面。
而随着苹果手机的发展,大家又发现原来操作系统还可以解决应用程序发布的问题,当然,还少不了程序如何在桌面上展示的问题。
简单的说,一个应用程序的编写者最关心的,并且很可能需要通过操作系统解决的问题就是:
- 我的程序想跟另外一个程序传递数据,怎么办
- 我的程序想调用一种硬件,但每个硬件都不同,怎么办
- 我的程序写好了,想装到系统上,怎么办
- 我的程序装到系统上了,系统桌面哪些地方可以把我显示出来
而高校的信息化平台,也正是在着力解决这些问题:
- 应用从能力层统一获取基础数据
- 应用调用能力层实现认证、支付、通知、任务、打印……
- 应用统一接入平台
- 服务统一在服务入口展示
站在这样一个角度,我们用操作系统来形容平台也是可以的,只是这个形容有时容易牵扯到 IaaS 层功能而引起一些误解。
结语
对于绝大多数学校来说,在校园中出现的第一个信息系统,通常都是某种业务系统,譬如财务系统、饭卡系统、图书馆系统、教务系统。这些系统出现的原因很简单:2000 年时高等教育进行了大规模的扩招,而为了降低生师比,编制肯定向教学科研倾斜,管理人员的编制是无法大规模增加的。但学生数量的增加,不仅给教学带来了挑战,同样给管理带来了巨大的挑战,那时解决这一矛盾的最好方法就是引入信息化手段,提高管理的效率。
业务系统,对于直接的师生服务是非常有价值的,但没有了平台所提供的公共能力,业务系统管理员就会陷入独自维护每一个系统的局面,吃力不讨好。没有了平台的连接,业务系统就是一盘散沙,就是一堆数据孤岛和应用孤岛。这时我们也无法用“体系”来形容一个学校的信息化。
我们经常在说用户体验,这个体验是不可以简单理解为操作界面是否方便和美观的。一个人进入学校后多长时间能开始使用各种系统,使用的时候是否需要去每一个部门开通,一个系统的入口是否一下就能被找到,一个领导刚好在外面没带电脑能不能用手机完成一个审批任务,这些都是体验,甚至是比纯粹的炫酷好看更重要的体验,而这些体验中的很多部分,是需要靠“平台”去改进的。