大学里面的几个失败项目

今天想起大学时参与的一个项目,让我突然想起了一些事情,多年之后再来看原来的我,发现其实还是有不少的建议。
那时候是暑假的时间,课程里面专门安排了一个项目实践,因为也没有实际的项目可做,所以也就是根据老师提供的素材来自己选择一个项目,给了三个项目,每个小组是10多个人,当时学软件工程也有些日子了,论逼格的一句话,当时的软件工程教材还是全英文的。当时大家实际参与到项目中的时候,也都是一头雾水,不知道该从哪里开始。
    记得给的时间也不长,大概一个项目周期下来就是2周,然后就要开始小组演示。所以从一开始就注定了这是一个简单的项目实战,因为大家都没有头绪,谁都没有敢想到两周后的那天到底会是什么样的场景。
    于是乎,大家就在教室里随机分组,然后评选项目经理,挑选项目,然后就是挽着袖子开始干活。
    没有思路,但是我们有模板,所以从这个模板中也可以看到一些工作的分工和任务,当然老师也会在整个过程中穿插指导。如此一看一切都准备妥当了。
大学里面的几个失败项目
在项目开始的时候,充分感受到了*的风气。小组先分工,有做概要设计的,详细设计,数据库设计,测试的分工,对于测试的部分大家都不大愿意干,所以最后的情况就是自己开发自己测试,在项目开始的时候,大家感觉详细设计才能敲一下代码,才觉得自己实际上干了些活儿,虽然从软件工程中的学习我们知道概要设计是一个非常关键的环节,但是到了后面基本就是一个萝卜一个坑,你做你的概要设计,我做我的详细设计。
    我和另外一个女同学被分在了一个小组,负责概要设计,后面人手貌似不够,我们也负责了两个模块的详细设计。今天在邮箱中翻找,也算找到了当初的一点设计的东西,其实我们最开始在梳理关系的时候,也着实花了不少的功夫,也是通过rational rose来设计uml图,至于后来的结果怎么样,其实也是不得而知。因为设计和实现还是有很大的差距,至少当时是脱节的。
大学里面的几个失败项目
至于到底关系如何细粒度,到底是泛化还是其它已经不重要了。当时分工也看起来有模有样,分出了两个人做DBA,专门负责设计表和索引,说实话当时还是挺羡慕的,因为感觉建好表他们就没什么事情了。
    我们三个组,从我们的整体感觉来说,风格迥异,第一个组里似乎多了很多的程序员,因为大家都希望其他人能够复用他们写的代码,所以在开始的模块分工和功能划分上,下的功夫不够,于是乎,几波人都要做一个登陆验证的工作,然后各自开发自己的功能模块,当时他们的进度一度超过我们。
    我们是第二梯队,算是里面的温和派,大家在项目里似乎没有那么多的争执,在分工上有一点做的比较好的是,我们制定了一个统一的配置文件,按照模块划分,所有的主类都需要在这个配置文件中定义,然后划分每个人负责的功能模块,所以几个模块之间可以看做是独立来操作的,当然缺点也很明显,后面单捡出来说。第三个小组下的功夫最大,总能看到他们在那加班加点,他们也会有争吵,但是也会在项目经理的调和下马上平息,设计上也着实做了点东西,他们是严格按照MVC的设计方式实践的,其中为了突出DB层面的独立,硬是搬着电脑扛到教室,然后通过校园网连接到宿舍里的DB服务器,他们就想说明他们的DB是分离的,绝对不是本地的连接方式。
    很快就到了项目验收的阶段,三个小组都在最后的时刻开始了集成,整合,结果马上就暴露出来了一系列的问题,第一个小组因为大家开发的东西耦合度太高,最后整合代码以后连登录页面都打不开,然后各个小组都不愿意再做很大的改动,所以集成就是个大问题。当然如果要做进一步的整合,有些人的功能代码肯定是要直接抛弃了,所以他们在后期的时候最为艰难。
而我们小组在这方面确实是占了大便宜,我们整合的时候就是提交配置文件的主类,项目经理把这些配置整合到一起,然后代码都放在各个目录下,直接拷贝就能各尽其用,所以整合基本上没有花费什么时间,但是问题也很明显,我们每个人只负责自己的那个模块,其实很多模块之间还是有很多的关联,所以我们看起来功能实现了,但是完全解耦合,模块之间彼此没有任何的关联,也是前期的沟通和分工不合理导致的情况。如果再进一步来说,我们的这个系统只能查,完全不能用。第三个小组亮相的时候,也着实让我们刮目相看,他们实现了部分的功能,按照当时的分工和计划,他们完成了很少的一部分功能,演示的时候也显然弱化了这方面的缺点,因为大家都不关心里面的功能是否设计合理,只要能打开页面就感觉是一个基本的交代了。
    在下午之后,大家的分数基本持平,每个人都感觉像经历了一场战争,终于可以放松就好好喝喝酒,玩乐玩乐了。
    虽然老师也从优缺点的方面做了总结,但是现在来看,三个都是失败的半吊子项目,第一,项目的立足点就没有任何的需求,都是按照模板来完成,而且当时评判的一个标准就是页面是否能够显示出来,这一点现在想想简直是不敢想象。第二这个项目的分工大家都在选择回避,还是逃避了不少的潜在问题,在分工和沟通上还是不合理。第三这个项目就是个临时工程,大家写完的代码绝对不想再去看第二遍。
    当然在大学期间,我们不能要求太高,说得那么轻巧,落地实践不了还是白瞎。我们在后来也自发组织了几个同学准备也做个项目试试,在商量再三,决定做宿舍管理系统,有了上次的经验,我们这次的合作相对就会合理很多,但是最后也因为项目没有太多明细的计划最后一再搁浅。
    所以这些项目虽然看起来都是失败的,但是也着实给了我不少的宝贵经验,再到后来,做毕业设计的时候,大多数的同学都还是按照之前的项目的思路来做,其实项目怎么样,关键是论文的质量了,所以大家都在关注论文里面的引言,内容,然后找几张图片来嵌在文档中,这也算最后一个实战项目了,所以我想让自己做得能够有点谈资,于是乎我挑战了一个项目,电信性能监控系统,从当时的完成情况来看,完成了差不多50%的功能,而后来得知这个项目是哈工大的研究生项目,一个小组10多个人几个星期才能完成,所以也着实让我小小满足了一把。
   回过头来看看以前的日子,感觉时间真是一去不复返,那些当时看起来非常艰巨的任务现在来看是有落差,但是其中经历的一些事情也是难得的经验,从这些也可以一窥很多经验录,方法论。其实大学就是这样一个可以埋头做事情的大好时间,如果珍惜了,做好了,肯定会有不小的收获。
 
上一篇:四项投资推动制造业数字化转型


下一篇:物联网能源应用:从智能车辆到智能电表