技术开发 频道

NMHU敏捷开发学习班体验报告

 

    师资团队

    在每个学期,我们举行两次授职仪式,因为学生已经到达新水平,衬衫和名片可以更换了,其行为准则(Code of Conduct)也需要做相应调整。图4即授职仪式现场,因为学校规定,图中没有出现学生肖像。

图4

图5

    授职期间,每个人都有在3-7天内与大师分享专业知识的机会。其中一些人在业界可是赫赫大名,如:
    Linda Rising,例理结合,教授敏捷回顾(Agile Retrospectives)和写作知识。他不仅使用Java和Squeak教授极限编程实践,还会指导那些在痛苦中挣扎的团队如何走出困境。
    Charlie Poole,教授TDD、FIT(一个集成测试框架),以及结对编程。
    其他一些在明尼苏达州当地也是享有盛名的,比如:
    Dion Stewart,帮助我们搭建了此教学计划所需的编程和服务器全套环境。
    Jeff Goodman,精力旺盛者的典范,体验式教育(Experiential Education)的推崇者。
    TDD的好处直接从教室扩散到了我们的用户——新墨西哥州政府办事处、本地一个小型非营利机构和拉斯维加斯城里的一个校区。州工程处办公室可利用我们的客户管理工具直接给我们传递开发相关材料,共同参与任务。这样,通过Scrum和TDD在此项目中的实施,用户不再需要向以前那样耐着性子,在漫长的发布周期内默默等待。

    日常学术和项目活动

    我们日常工作重点主要放在学习班上,每周召开一次计划会议,介绍本周的课程情况,并对上周情况作一次回顾。
团队内部的日常会议,不定期举行,因为每个学生也有自己的安排。像eWaters组曾规定每天12:30举行例会,但因为实际中很少人能参加,白板就逐渐成了主要的信息源。图6展示的是开发中心建设项目——安装BEA WebLogic、Informix,确保整个脚本能在Eclipse中执行,且服务器能访问数据库——的进展过程。图6中白板的内容包括每个学生需要完成的任务,还有我们wiki的URL地址(学生们在这里可以记录他们每天的进展情况)。

图6

    学术讨论会是了解学生本周对所学内容掌握情况的极好方式——从学生的学习计划来看,每周安排两次为宜。上图中的白板描述了一次典型的学术讨论会的情况,包括Java小应用和Java应用开发、向文件和数据库写入数据等内容,展示了应用程序迭代式和递增式的实现过程。讨论会特别注重体验,通常由两或多个学生坐在一起展开。我们发现,一些带有探索性的、非确定性的任务,最好由两个学生先独立学习,直到他们觉得事情有了大致眉目再坐到一起。而确定性的活动和工作讨论会,则最好由两个学生结对完成,特别是其中一个学生比另一个经验丰富的时候。从我们的实践来看,鼓励学生与不同的人结对学习,势在必行;否则,一个学生可能越学越有动力,而另一个越来越被动。在我们的学习班中,尤其在一个是男同学,另一个是经验更少的女同学时,这种情况特别明显。
    当然,结对并不仅限于学生,教师结对工作时,也可以像学生结对那样实现师生交流——直率地指出问题,同时也要能提出建设性意见;可以激烈争论,但常常也可以用点小幽默化解大家的情绪。
    实践证明,与客户配合是所有结对方式中最为困难的(和学校管理人员结对除外)。最为成功的是维护本地校区计算机实验室PC的工作,因为其中的任务是彼此独立的,可以由多个小组在不同学校同步进行,而且任务的要求清楚,几乎所有学生都力所能及。另一个比较成功的项目是为位于60公里外圣达菲的州工程处办公室更新JSP代码,任务独立且难度不高。我们在这个项目上一个优势是学生开发组在本地搭建了用户的开发环境,因此我们需要安装应用服务器软件、配置连接池、做好版本控制、用异常复杂的ANT脚本实现代码编译和发布, 并做好需求整理工作。
    第三个项目周期为三年,要求SDA为某非营利企业开发一个财务和市场活动管理系统。此项目要求按照企业资源管理计划,实现订单、库存、网站以及帐目管理。开发小组成员会在每天下午5:00一起讨论项目进度,评估剩下任务所需的开发时间。在这个项目中,我们遇到了很多困难,比如用户参与少、新手对行业概念理解的难度大、项目组内部压力大,以及平台、过程、角色和责任等任何商业开发组织都会面临的决策问题。但是,项目组成员在这个过程中收获了很多东西,如项目管理、社会交往和用户关系等从来不可能在非真实用户和非真实项目中得到的知识。

0
相关文章