《软件工程》学习历程1
最近学生们经常找我聊天,希望能让我给他们指明方向,这个问题我不太里手,只是和他们说了说我的学习历程,说得多了,觉得有必要写下来。虽然历程比较平凡,但也许能让他们有所启发,对我而言,自然是记录成长。
大三时开始学习《软件工程》,清晰记得给我们上课的刚留美归国的博士,后来他成了学校的校级领导,当时他同时承担了我们的《离散数学》教学,对他个人印象深刻,但对他所授的课程,我只是记住了“瀑布模型”和他的全英文教学,甚至考试试卷也是英文的。
大三挂了大学期间第一门考试,于是,暑假留在学校,有点小沮丧,但感觉也特别幸运,学院竟然开始实行项目小组制,我顺利的利用这个时间参加对我影响很大的开发小组,遇到了对我影响深远的指导老师,他话不多,只是安排任务,检查任务,组织学习,当然,还有关心我们的成长。如今,我还有一个小本子记录着当时他的安排,他叮嘱我们找工作注意安全。由于我是小组中最早过英语四级的同学,很自然的就成为了组长,自然的承担更多的任务,同时开始学习如何给小组成员分派任务,收集反馈,检查结果,指导同学,我想这些给我后来成为一名教师奠定了基础。
当时,我们开发的项目是《湖大衡阳分校财务教学管理系统》,印象深刻的一幕是:老师从客户那回来后,拿出厚厚的一踏凭证类表格,于是,我们开始了漫长的绘制“数据窗口”的工作。当时使用的工具是Sybase公司的PowerBuild,而如今,PB已经成为了历史。
在这个项目中,我熟悉了“数据窗口”、“SQL语句”和用“messagebox”做调试,还独立承担了整个系统的帮助文档制作,个人认为工作还算不错,制作帮助文档这一部分,指导老师后续直接让我指导学弟学妹。指导老师给我定的毕业论文课题是关于“基于构件的软件复用”,当时,我主要负责“进度条”的复用,对,就是那个程序处理时间过长,防止用户关闭应用程序的进度条。现在,我几乎忘记了当时的毕业设计内容,但是我记住了“基于构件的软件复用”几个字,这时候,我依然不知道这和软件工程有什么太大的关系。
谈起真正开始对软工产生感觉,应该是在读研究生时,在导师的公司参与项目的过程。参加这个项目,一样很幸运,等待被分配的时间比较短,一开始就能跟着领域知识很丰富、项目开发经验很足的项目经理开始做需求调研,我们和用户方一起呆了两个月,用户是垄断企业,他们信息科的一位同事天天和我们工作在一起,但基本上是他玩游戏,顺便回答我们业务方面的问题和安排碰头会议,而我们却始终忙个不停歇。还记得,每天早上我总是第一个到办公室,一边整理前天的任务,一边等待大家,项目经理通常会在讨论十分钟股市行情和早间新闻后开始一天的工作,上午时刻基本上是大家一起讨论,作为项目唯一的女性,理解他们的讨论内容并记录的工作自然由我承担,当然我也乐于承担,这个工作让我对于条理性理解更加深刻,也让我对公司业务更加熟悉。中午午休期间,我开始整理上午的讨论,以方便下午大家可以按照我的整理开始分头工作,虽然很辛苦,但是很充实,很有意义,这样让我们不用因为午休而浪费大量的时间再重复讨论。两个月时间,我们在企业完成了所有原型的制作,参与了两次需求确认会议,从此我开始回忆起大学时学习到软工知识,我开始意识到:原来,大学里认真学习的内容,是会在脑海里留下印象的,只不过,它们在脑海里是一个一个的点,进行实际项目开发就是增加他们被提取、被组合的可能性,而一旦被提取、被组合,再次被提取的可能性将被极大的提高;原来我正在经历的的就是需求分析;原来,公司开发软件也有多种形式:当时公司是计划买个软件做个二次开发就给用户使用,谁知提篮子不容易,最后只能推倒重来,时间、成本和人力资源都有所浪费,好在及时止损了,于是我们出现了;原来,对企业业务流程的了解,对领域知识的熟悉,也是非常重要的,如果能够利用领域知识对企业信息化做流程重组也是非常好的;原来,我们画的所有图,就是用来和用户确认需求的,可以算是原型模型;原来,瀑布模型中提到的文档驱动,其实对于初学者来说是很有帮助的。
需求分析结束后,回到公司,项目经理带着我们完成了数据库的设计,并要求UI部门做好界面设计后,他的工作就移交给了工程经理,工程经理留给我的印象是:严谨、认真,具有程序员的典型形象。从他那儿,我看到了工作分解结构和甘特图,还有我们的进度计划安排,每天完成他安排的任务、checkin配置库、写好日报,就觉得异常充实了,我发现我没有时间思考其他任何问题,包括我是不是需要一份感情。从他那,我发现代码书写是有组内规范的,被他调整过的代码就是看着格外舒服,也就因为此,他对我们要求很高,项目组成员最害怕被他叫到名字,这意味着将是一顿臭骂。我身边的同门,一个男生,每次被叫到后,都会全身一抖,可越是抖,越是经常被叫到。幸好,我没有被骂过,虽然我也害怕,但我把害怕转化在了码代码的严谨上。
这个项目使用.net技术,开发历时近一年,到今天还在维护使用。当我因个人原因离开时,项目还没有完全做完,虽然项目组的成员流动很正常,但为了保证项目的工作,我提前一个月提出了申请,记录下所有我未完成的任务中存在的问题,交给工程经理,他很满意,也很轻松的放我离开。到如今,过去十年,他都还记得我,我想那份临走时的交接单应该起到了一点作用。
到此,我开始意识到软件工程是个系统工作,仿佛摸到了一点点边,又似乎没有。
不知不觉,写了很多,但还有很多没有写完,当然远未到写完的那天,这只是个开头,后续将继续记录……