最近的三个多月,一直在忙着我们的项目。我们所做的是一个教务系统,主要负责维护学校各种基础的信息。刚开始接到这个项目时,想着这个基础系统嘛,不就是对基本信息的增删改嘛,so easy!可是当我们真正开始做的时候,发现问题远比我们想象的复杂的多。
此教务系统在代码实现方面,没有太多的难点。系统真正的难点在于对业务的理解、数据库的设计。设计数据库时,我们组十个人,耗时将近一个月,最终才将系统的表确定下来。说说我们数据库的规模,本数据库共有70多张表,就冲这个数字就能想象到,单这么多张表的关系想弄清楚就不是一件容易的事,那他们之间的关系有多复杂呢?看看我们的视图就知道了,系统中有的视图用到了近30张表!30张,系统表的一半,你能想象到那种关系的复杂吗?
说句实话,那段时间真的让我挺头疼的,每天都是重复着学生、教师、教室、学院等等,实在是太无聊了。其实,产生这种想法的根本原因还是对软件开发理解的不够深刻,盲目的迷恋于技术的学习,认为天天讨论这个,根本学不到什么技术,就感觉无聊,不想干。可是呢?现在想想,如果你只迷恋于技术的学习,固然你有很高的技术,但你永远都是奋斗在一线的程序员,永远都是个打工仔、干体力活。
下面说说经过这次合作开发我的收获。
1、技术方面。教务系统用到的关于数据库的知识比较多,经过这次实践,对视图和存储过程更加熟悉,同时也进一步了解了事务和游标。当然,涉及最多的还是查询,给我这样一种感受:只有你想不到,没有你查不到。另一方面,关于B/S的学习,整个系统的开发过程中,html、css、javascript、ajax等技术都有涉猎,不得不承认,在开发项目的过程中,用到的知识是比较全面,学习效率也是比较高的。
2、规范性
规范,几乎无处不在。这里我重点说几个感受比较深的。
①命名的规范性
教务系统中的四个子系统共用一个数据库,一共有一百多张表。如果关于表没有一个命名规范,那种百里挑一的感觉可想而知。
②测试数据的规范性
如果你仅仅测试一个表中的数据,使用什么都没有关系,但是,当你所用数据设计到10几个表的时候,如果你还用不规范的数据(如:1,2,等等),等查询出数据后,全部都是1、2等无效数据时,你绝对会很无语。
③代码注释的规范性
关于注释,我想大家都懂的,不用我多说。
3、业务为王
技术方面的问题都是小问题,只要给你足够的时间,技术上的问题都不是问题。业务才是王道。如果业务理解错了,做的再好也是白扯。
一个系统的成功与否,跟程序员的水平有关系,但是,起决定作用的并不是技术,而是对需求的了解,对整个系统的设计。
4、站在巨人的肩膀上
不管做什么事情,都不要闭门造车,开拓眼界是必须的。要学会站在巨人的肩膀上。
5、要事为先,分清主次。
分析错误原因很重要,但是得分时候,遇到问题时,想解决方法是首要事情(完成任务排第一),等问题解决了再回头分析之前错误的原因,总结经验。
6、基于准则,但又不拘泥于准则
比如三范式,这个我们要遵守,但是,绝不能让它限制我们的思路,必要的时候可以适当变通。
7、关于合作
组员
一定要配合组长,组长分配的任务一定要按时完成。同时,交流、沟通更是重中之重。
组长
一定要有全局观,对整个项目的把控,人员的分配,项目的进度,以及如何调动组员的积极性,这些组长都应该考虑,而不是仅仅去考虑代码如何去实现。
8、加深了彼此的了解
在讨论的过程中,难免有观点不一致的时候,各自都觉得自己的观点正确,有时候讨论的相当激烈,夸张点说会议室有时都会弥漫着一股硝烟的味道。不过,正是因为有了这种交流,这种沟通,使得我们之间的了解更深,感情更好。
合作开发,学习的不仅仅是技术方面的东西,所以,不要痴迷于代码,对软件开发过程的理解,各个阶段时间的把控等更为重要。当然,比这些更重要的是学会如何去交流、沟通,如何去领导一个团队。
通过这次合作开发,使我认识到,自己欠缺的东西还有好多好多,继续努力啦!加油!