IT Consultant, Agile Coach, Business Analyst

敏捷团队中的角色

March 21, 2007 – 9:49 pm | by 冰云

ThoughtWorks一个典型的敏捷团队中,大致有四种不同角色:项目经理、业务分析师、开发工程师、测试工程师。同时,根据项目不同可能还需要:迭代经理,美术设计师、数据库工程师、系统工程师、交互设计师等不同人员。虽然在项目中不同的人需要确定一个角色,并担负相应的责任,但在ThoughtWorks内部,人与人之间是完全平等没有级别区分的。公司这种平等的文化,使得人与人之间的交流不会因为等级差距而丧失。同时,公司鼓励每个人向其感兴趣的其他领域发展,成为综合性人才。例如某个人现在是开发人员,但他也可以通过帮助项目经理做一些辅助工作,来学习项目管理方法,从而最终成为独当一面的项目经理。

以前公司同事写过一篇团队角色定义的文章:http://news.csdn.net/n/20060429/89961.html, 补完一些。

  • - Project Manager
    • 作为团队的精神支柱存在。与团队的每个人进行必要的沟通以保障项目成员的士气和稳定性。
    • 维持开发秩序,保障团队间交流的效率和效果,负责主持必要的活动
    • 消除外部干扰,负责与客户进行协调和协作。管理来自与客户的scope变更
    • 跟踪团队的开发效率,维持开发速率,进行适当调整以保证开发的顺利进行
    • 管理项目风险,维护项目风险日志,识别风险并采取措施防治风险
    • 负责最终的项目交付成功
  • - Business Aanlyst
    • 需求获取与管理,与客户持续交流获取新的需求,并保持良好的客户关系。管理需求的优先级。
    • 保障下一个迭代需要开发的需求能够预备到位。提前准备好需要的Story卡片,在Iteration Kickoff会议解释每个Story的具体需求给Developer
    • 主持必要的会议,例如Iteration Kickoff和需求的评估活动
    • 对需求进行初步的功能验收,保证功能的交付符合原始需求
  • - Developer/Architect:
    • 了解系统业务和需求,设计和演进系统整体架构,能够做出适当的技术决策
    • 编码,并对系统的每行代码负责,保持代码的干净,保持较高的测试覆盖率
    • 维护项目基础设施如持续集成服务器、版本控制服务器等
    • 评估需求,并在开发完成后演示开发的需求
  • - Quality Assurance
    • 负责了解需求并编写需求验收条件,负责制定测试计划
    • 负责测试开发人员完成的需求,并报告错误
    • 负责对软件进行性能、压力、容量、负载测试等,负责项目的手工功能测试和发布测试
  • - Iteration Manager - 小团队多由项目经理或分析师兼任
    • 负责项目过程的顺利进行,协调项目资源
    • 主持各种迭代会议,如Standup和Retrospective
    • 负责跟踪需求的状态
    • 负责项目的其他日常事务
  • - User Interaction Designer -多和分析师为同一人
    • 在项目初期参与前期需求的收集,提出可行的交互设计方案,保证软件的可用性
    • 建立和维护Lo-fi prototype,负责指导项目的界面开发原则
    • 进行用户测试,持续改进系统的可用性
  • - Database Administrator
    • 维护软件所需的数据库,定期进行数据备份
    • 了解数据库重构和演化方法,负责维持数据库的每一条更新脚本
  • - System Engineer/Webmaster
    • 维护软件所需的各种硬件和网络系统
    • 了解敏捷开发中的发布过程,保证每次迭代发布的实施
  • - Art Designer - 一般团队最缺少优秀的Art Designer,了解敏捷的Art Designer更甚
    • 了解项目的远景和规划,了解迭代方法,应用增量式美术设计方法
    • 了解软件的交互设计,能够设计出可用性良好的系统

有一类角色,在敏捷团队中至关重要,不得不重视起来的,就是Customer。

  • - Customer
    • 理解迭代开发的过程,与团队进行频繁和和谐的交流,参与团队的各种必要的活动如Showcase
    • 理解需求和排序需求的优先级
    • 验收需求,并及时的提出反馈

我经常说,分类学毫无用处,因为很多时候分类无法cover到所有的情况,尤其是两者皆有的时候。我在项目中曾经同时担任过BA/QA/IM,这些角色的职责都是我应该了解的。同时,有些职责,例如随时发现和识别项目中的风险,保证尽最大努力完成任务,主动交流,遇到难以完成的任务及时尽早告诉相关人员等,是每个角色都应当承担的。

为了项目的成功,尽可能多的做一些事情,对个人和对项目都是有利的。

Tags:

  1. 2 Responses to “敏捷团队中的角色”

  2. By adamNo Gravatar on Mar 22, 2007 | Reply

    多谢冰云对我的这个话题的回复,还专门写了一篇文章来陈述。

    很多人说ThoughtWorks是开发者极为想进入的公司,那种氛围几乎是所有的开发者梦寐以求的。
    果不其然,呵呵,我们每天都在喊的平等协作团结进步在这种环境中可以恰如其分的体现出来。

  3. By LovejadeNo Gravatar on Jun 23, 2007 | Reply

    应当说,ThoughtWorks是每一个真正热爱软件开发的人都极为想进入的公司。所谓真正热爱软件开发的人,不是那些刚编几年代码就想做管理的人,而是累于斯而乐于斯的人。很多人都向往团队精神,其实团队精神就是“为了项目的成功,尽可能多的做一些事情,对个人和对项目都是有利的”。我为人人,人人为我。参与团队工作中的每个人如果都常常惦记这句话,团队自然就是一个团结进步的团队。

Sorry, comments for this entry are closed at this time.