2009年2月3日星期二

2008的过去-纪念科索的一年

想了很久,还是想写点东西留给已经过去一个月的2008年,这一年很多事情发生了,很多事情没有发生,总之有精彩也有失落,还是记个流水帐吧。

2008年实在老邓的算法考试中开始的,过了元旦便是考试,算是对研一上学期的总结。老实说这考试其实不难,如果好好准备再加上平时再认真点,应该不成问题。

鼠年的春节是在家里的仓库中度过的,第一次在这个“新家”过年啊,运气非常好,回到家第二天老天便开始下雪了,而且一下就没个停,2008年初的雪灾便开始了。在家浑浑噩噩地过了一个春节,终于回到了学校,开始了这一比较关键的学期,在这一学期里面将决定我的实习单位,而这一学期里确实发生了不少事情,不管从个人来讲还是从研究生会、班级来讲。

说到东南大学软件学院研究生会,不得不提到“科索”虚拟公司。这个科索,是英文“CoseSoft”的音译,也就是软件学院的Software的意思。这个虚拟公司也是对原来研究生会的改组,不再工商局注册,在学院注册,呵呵,注册资本为¥20,000整(这一点我非常感谢我们的老吴院长-吴介一同志,真的,对于我们这个较为冲动、不是很成熟的行动不仅有精神上的支持,更有物质上的支持,难能可贵,不愧是老院长,我们的楷模啊),目的并不是为了给软院创收,我们也暂时没这个能力,哈,单纯是为了大家能有一个比较好的学习实践的环境,不是简简单单的课程实践,而是很多实实在在的具体项目。

从上到下我说一下科索的组织架构,单说学生这一层面,不包括老师、学院的部分。“食物链”的最上端是个叫“主席”的人,呵呵,也就相当于学生会会长的职位,主要是对我们公司的日常工作进行总体把握,监督和督促各个部长的工作,总理公司日常的各种事务,包括初期的筹划、人员的招募、公司标志的确定、服务器的日常管理等等很多事务都是这位宋兄牵头的,可谓劳苦功高啊。“食物链”往下看,有五大支柱部分,简称“五柱”(这种说法好像很NB,怎么当初没想到,呵呵),分别是Web开发部(主打软件),嵌入式开发部(主打硬件),人力资源部,培训部,还有一个貌似可以叫做财务部。“食物链”的最下端便是众多的公司普通“员工”了,可以被剥削,被压迫的对象,呵呵,不过我们之间没有任何强制手段亦没有任何报酬,这种关系从建立起来便显得很脆弱。

财务部,主管的是一个叫波波的小男生(年纪貌似比我大一岁,呵呵),主要是对公司的日常支出进行统筹规划,下面还有一个日常辅助秘书(是我们这个“公司”唯一有“小秘”的人啊),不过我好像觉得平时支出几乎为零,主要的支出还是活动支出。2007年的最后,我们公司的年会由波波牵头组织的,我个人觉得还是比较成功的,虽然其中毛病不断,意外不断,呵呵。培训部头便是朱老大,培训部一年貌似也没有什么动静,说搞培训都雷声大雨点小或者没有,可能朱老大确实很忙吧,一笔带过。人力组员部头是位女士,叫狒狒(为什么叫狒狒,怎么叫狒狒,我这就不多说了),貌似也是公司刚建立招募人员的时候忙活了一整,之后也没什么大事,一笔带过。嵌入式开发部,管事的是个胖子,比较喜欢吃零食(他的桌子上一半是零食,一半是电路板、电线等等乱七八糟的元器件,我一直觉得他那的零食会不会有工业污染啊。。。),他们部门主要负责了外面公司接过来的一个项目,大体是一块板子的底层通信的问题。作为一个旁观者,整个实施、设计、进度管理的过程中确实暴露出了很多问题,我基本是在和我的项目进行对比,改进。最后这个项目无痛流产了,这其中有太多因素交织在一起了,不仅是技术的问题、领导者、甚至与老师之间的交流都存在问题,不多说了。

Web开发部,其实这个部门的名字就存在问题,两个项目中之后一个项目涉及Web,另一个压根不是,当初为什么叫Web开发部,这个名字不是太好。我这个部长也是稀里糊涂的混到了,也是“部长级人物”里面唯一参加过人员招募所谓的“面试”的人了,呵呵,荣幸之至啊,起初没有“掺和”研究生会的事情,是因为我的另外一个头衔,不过怎么又“掺和”了,着实让人摸不着头脑。开发部内主要有两个项目,一个是学院的校友录系统,这个主要由小华负责;一个是组织部的党校考试系统,这个由我负责。

说到这个考试系统,着实让我捶胸顿足,仰天长啸,好不痛苦啊。技术水平只能算一般,在同学们当中还算说得过去,头一次带人一起做项目,我可是想了很久,可是真正实践起来可又是另一番景象。
  1. 首先是如何计划、如何安排进度、如何管理队员。以前学过了软件工程,了解了面向对象的分析与开发过程,但都是一知半解,谈不上缺乏经验,是没有经验可谈!这个项目实施过程几乎是一边摸索、一边前进、一边修正的不停循环。
  2. 需求,是我和组织部的老师商量后确定了的,然后由我再统一向各个组员转述,分工任务。第一个环节就出现了问题,一下子上来了整个考试系统,功能较为繁杂,且需要在N多台机器上进行部署。对于主要功能的剥离基本上还算成功,但是需求的细节却是经过了反复确认。由于经验不足,在主题框架与细节功能剥离过程中并没有做到完全的面向对象、比较好的解耦合,使得后期需求的变更让整个开发付出了比较大的代价,而且在部署期间出现了些并发症!
  3. 对于开发工作和技术的选择,选择了C#+SQL Server2000。为什么C#?起初客户需要对MS Office文档进行操作,自然而然采用了Visual Studio平台,开发人员主要是大二的同学组成,C++作为基础大一已经学过,C#已经开始学习了;而我对于C#没有经验,很多技术细节把握不了。当初选择这个语言,也是想自我挑战一下,可是开发到后期依然出现了危机。当习惯了Java平台,即使在困难的问题,网上找不到答案的问题,把底层的代码翻出来,看看是怎么实现的,几乎不存在解决不了的问题。而MS的平台,尤其是其.Net Framework优秀的封装性,底层代码无法得知,在服务器与客户端异步通信时经常会发生一些“概率性”的BUG,很难捕捉问题在哪里,这也几乎成了我们这个系统最大的不安定因素和测试失败的最大原因。
  4. 对于任务的分配,依然存在不少问题。开始是让研究生组完成系统的设计,然后交由本科生开发完成。主要是考虑研究生大多数并不是本专业出生,技术能力层次不齐,过于薄弱,且不想少数本科生那样比较好“使唤”,呵呵。而本科生其实真正做事情的没有几个,想想自己本科的时候什么样子就知道了,呵呵。在设计阶段,由于对技术把握的不是很好以及需求的反复确认,使得详细设计几乎与开发过程断开了,唯一起到作用的大概还是数据库的详细设计。而在开发过程中,完全交由本科生开发,而我统合代码。我是在本科生的基础上整合代码的,可以说基本框架是出自他们之手。没有经验的开发导致了我们这个项目的结构比较混乱,而且缺少注释,使得开发、需求变更、BUG修改都会要付出很大的代价。以至于后来个人忙于寻找实习单位,只是完成了一个初始版本,将这个系统交给了本科生们。
  5. 过程控制,事先缺少比较详细的计划安排,导致了开发过程中的进度控制不太好。这一点不完全是主观原因,处于学校的环境中,还是要以上课为主,只能用少量的课余时间在完成了其他一些琐事之后再来管这个项目的事情。
  6. 在测试过程中,对于真实的运行环境估计不足,是导致数次系统出问题的首要原因。
  7. 。。。。。。
这么多的问题其实还是用经验不足就可以概括了,一回生,二回熟,如果回头再重新做这个项目,我应该会管理、控制的更好的。不过最后把所有的文档、代码顺利移交给本科的同学了,据说开发到现在已经快顺利部署了,恭喜他们了,呵呵。

科索,拜了。在这里我学到了不少东西,永远不会忘记我的第一个“项目”。


没有评论:

我的简介