学生开发团队建设的研究
来源:用户上传
作者: 王艺璇
摘要:当今的大学生有各种机会参与到软件开发当中,然而作为学生开发团队,他们面临着很多困难。文章对建设学生团队的一些指导原则进行了论述,围绕目前的学生开发团队所存在的问题展开讨论,提出了一系列解决方案,并在实践应用中收到了良好的效果。
关键词:大学生 开发团队 敏捷开发
A Study on building student development team
Yixuan Wang
Computer Science and Technology department Zhuhai College of Jilin University, Guangdong China 519041
Abstract: While the increasing opportunity for university students involving in software development, problems have been exposed working as a team. This paper presents a series of principles to solve these problems and have been proved effective.
Key Word: University student, development team, Agile Development
引言
面对日益扩大的市场需求,高校计算机专业教育日趋注重培养学生的动手能力以适应以后的工作岗位。因此很多学校在理论教学的基础上加开了实验课,课程设计以及兴趣小组以及举办各类的学科竞赛来帮助同学们提高编程水平尤其是项目设计和开发的能力。这些举措确实收到了很大成效,但是这些学生“开发团队”往往存在诸多问题,例如:缺乏组织领导,个人主义,总是存在“滥竽充数”者,无法进行团队合作,目标不一致等等。这样的问题严重制约了学生能力的提高,使得学生原本很好的实践机会收效甚微,甚至应付了事。本文就如何建立学生开发团队,提高学生的主观能动性提出来了一些指导原则和实践经验,理论结合实践,对解决当前问题提供了一套切实可行的方案,并受到了良好的效果。本文将从目标和远景、优秀的领袖、及时有效的沟通环境、分工与协作、发挥学生主动性、指导教师发挥的作用以及运用工具来帮助管理几个方面进行论述。
目标和远景
团队即是因着一个共同的目标而聚集的一个群体,换言之,目标乃是一个团队成立的基础。大多数学生团队的目标可能是完成某课程作业(小组项目),或者参加某个比赛,这样的目标非常模糊,且不具有可评估性,很难成为一个小组的方向和核心价值。一个好的目标必须得到每一个组员的认可,这样的目标可以提高团队的凝聚力,并且调动每个队员的积极性。这里不是说完成课程作业,或者参加比赛不能成为目标,其实正相反,只要加上细节描述,他们就可以成为很好的目标。在制订目标的过程中需要明确的细节有:
1. 我们要开发的是什么――例如完成一个具有查询、借还功能的图书管理系统
2. 开发出来要达到一个什么效果――你的设计有什么特色可以吸引到别人
3. 我们的作业或者比赛要得到一个什么评价
4. 小组成员在本次开发中要有哪些收获――例如掌握某项技术。
这些目标具有一个共同的特点,就是他们都是可评估的。在开发完成时,队员可以很明确的知道有哪些目标完成了,哪些还没有达到。
除了有以上清晰和明确的目标,团队还需要对未来有一个远景。目标常常是针对目前的任务所制订,而远景则是一个未来发展规划。目前的学生团队中比较缺乏这种观念,对未来的发展方向没有一致的看法或者完全没有这方面的考虑,这样的状况使得一些优秀的团队最后无法继续下去,只能走上分裂的道路。远景不是在一个团队第一次合作时就有的,很可能是在多次的合作,共同几次达成目标后慢慢形成的一种共同认识。作为指导教师,应该对这些团队进行积极地引导,让学生可以有意识的进行探讨和规划,甚至他们就可以成为明天的创业团队,IT行业的领头人。
优秀的领袖
领袖的作用是显而易见的,无论是一般性的行政管理还是软件开发团队,领袖都起着至关重要的作用。好的领袖可以充分发挥每一个队员的特长,调动大家的积极性。 要成为一个领袖,不只需要编程能力,更需要的是沟通技巧、分析决策能力和群众基础,而这些往往是指导教师所忽略的。我们假设每一个参与团队的成员都是因为兴趣而积极愿意投入的个体,且认同并愿意实践团队的共同目标。一个优秀的领袖可以通过制定具体的实施计划,为每一个成员分配任务和角色,以及组织切实有效地沟通来带领团队顺利完成既定目标。相反,同样一群人,如果缺乏上述组织和领导,就很可能陷入无休止的讨论、矛盾中。在现实小组讨论中,我们常常看到的就是这种状况:每个人都按照自己的想法做事情,彼此都不发表看法,却对彼此的工作有着很大的意见; 或者大家都发表自己的看法,为的是得到别人的认同,却从来不能达成一个明确的共识。计算机专业的学生往往不会主动关注和学习管理方面的知识,因此需要指导教师在这方面加以引导和提醒。
及时有效沟通环境
目前,无论理论上还是实践上,人们都达成一个共识:最有效地的沟通方式就是面对面地进行沟通。因此我们尽可能的提供实验室或者教室作为团队开发期间的工作、学习及讨论的场所,提供及时有效的沟通环境。每一个人都应该及时地与团队其他成员进行沟通,无论是技术上遇到难题或者寻求更优的设计方案,或者是对团队成员有什么意见和看法。下面是团队开发中的几个场景:
场景一:站立会议
每天的站立会议。你要说出昨天做了些什么,今天会做些什么,遇到了什么困难是否需要别人的帮助。站立会议要求每个人说出事实。如果开发中遇到困难就大胆的向你最值得信任的同伴来寻求帮助,没有人会嘲笑你,也没有人会冷漠的不去理睬你的困境。一个自组织的团队,应当是一个温馨而又和谐的集体。每个人都会努力的帮助其他的人,帮他解决他的问题并从中积累更多的经验。
场景二:纸和白板
在项目中,必不可缺的交流工具是白板和纸。再没有比这更廉价和更好用的工具了。两个开发人员遇到了分歧,两人走到白板前写写画画,很快,一副清晰的系统脉络就出现在两人面前。分歧达成了一致,开发继续进行,而图像留在白板上,任何过路的程序员都可以驻足观看,如果感兴趣还可以问一问作者,更深入的探讨。在开发的过程中,随时遇到问题或需要记录的,都可以立即写在手头的白纸上,一些简单的算法草稿,也都是用白纸完成。
分工与协作――明确责任与角色
在企业的研发过程中,会涉及很多的角色,例如项目经理、项目助理、系统分析、产品经理、leader,主程、辅程、测试、美工,DBA等。作为学生开发团队,我们虽然不需要如此明确的职责划分,但需要明确的分工与协作。如果没有明确的角色,也需要把整个项目划分成一些小任务分到每一个人身上。领袖需要控制整个项目的进度,分配工作任务,进行项目中日常事务调配,人员配置。系统分析的责任人通常需要一个技术全面熟练的人,主要负责系统进行构架设计、技术评估、开发环境,编写设计文档,对各类技术点进行分析,在各种环境下,给出最佳的解决方案。分工与协作是建立在良好的沟通的前提上的,学生都知道软件开发过程中分工与团队合作很重要,问题在于他们不懂得如何去协作。一个切实可行的方式就是从一个一个的小任务开始,把项目整体分析之后,分成一个一个的小任务,分配给队员。在团队刚开始建立的阶段,这些任务必须小而明确,并且是可以评估的,每一个任务都有截止时间。当团队相对成熟以后,可以尝试把一些比较大块的任务分下去,让负责人自行调研,寻求最佳解决方案,进行设计。
发挥学生主动性
学生作为开发的中心和主体,必须最大的发挥学生自身主动性。大学生无论从知识上或者创造性上都应该是最活跃的一个群体。他们最关心市场的走向,知道眼下最热门的产品,关注国家与社会的发展,也常常有创新的想法,正是由于这些特性,使得大学生有巨大的潜能和创造性。因此,作为学校和教师,应该给他们充分发挥的空间,他们可能会创造一个新的世界,让我们都为之震撼。最大程度上让学生按照自己的想法做事情可以调动他们的积极性,让他们用一个“主人”的心态去对待他们的作品,而不是为了完成一个作业或者参加一次比赛。我们之前假设,每一个团队成员都是积极主动的个体,因为对编程的热爱而聚集在一起。然而,这个个体是需要鼓励和推动才能成为“积极主动的个体”的。作为团队的领导者或者知道老师,应该定时组织一下技术研讨、头脑风暴等活动,让每个人都积极的参与到团队中来,以团队“主人”的心态来对待每一件事。
指导教师发挥的作用
在以上的论述中,已经提及指导教师的角色,及其工作的一些内容,下面我们会具体的论述一下知道教师在团队中的作用和应尽的职责。首先,指导教师不是团队领袖,甚至不是技术指导。有很多老师在指导项目的时候变成帮学生解决编码错误或者技术问题,这些只是指导教师的工作中最细枝末节的部分。作为指导教师,最重要的工作是提供资源和指引。例如,某一个技术难道或者一个管理上的问题,老师可以提供一些思路,并指引大家去阅读相关书籍文章等。其次,作为指导教师,需要密切关注团队的工作,指出目前存在或潜在的问题。
运用工具来帮助管理
在现代软件工程中已经出现很多优秀的工具帮助我们来管理我们的项目。首先是大家都比较属性的项目管理软件及平台,例如VSS,CVS等。其次,源码管理工具,用于版本控制和多人同时在一份代码上进行编程,例如SVN,GIT。此外还有一些工具。使用这些工具的目的有两个:其一,帮助项目管理和团队协助;其二,与现实公司中的软件开发方式接轨,使学生与公司实现无缝连接。
总结
本文提出了一些建立学生开发团队的指导原则和实践经验,针对大学生开发团队中容易出现的问题提出了解决方案,在实际应用中收到了很好的效果。
参考文献
[1] James Shore, Shane Warden. Agile Development敏捷开发的艺术[M]. 北京:机械工业出版社 2009.
[2] 陈翠松. 计算机软件专业项目化教学改革[J]. 温州职业技术学院学报. 2010
王艺璇 女 生于1985年
吉林大学 计算机科学与技术系 学士学位
澳大利亚 阿德雷德大学 计算机科学 硕士学位
研究生期间主要从事无线传感器网络通信协议的研究
现在吉林大学珠海学院 计算机科学与技术学院担任教师 助教职称
主要研究方向是嵌入式、物联网领域
曾多次参与智能手机软件项目的开发和设计
多次担任学生竞赛指导老师,并组织校内学科竞赛
广东省珠海市金湾区草堂 吉林大学珠海学院 实验楼228 王艺璇 邮编519041
转载注明来源:https://www.xzbu.com/8/view-44088.htm