研发团队协作最佳实践

2024-07-06 08:48:00
丁国栋
原创 335
摘要:本文介绍在一个敏捷组织里如何开展一些具体工作的方法和最佳实践。

产品开发流程

需求开发的生命周期大致是:需求、任务、开发、测试、发布。具体可分为:立项规划、提出需求、需求设计、拆分任务、方案设计、编写代码、单元测试、构建打包、功能测试、版本发布。

产品开发离不开必要的研发工具,例如项目管理工具(禅道、Atlassian JIRA等)、文档协作工具(禅道、Outline、Atlassian Confluence等)、聊天和消息通知(喧喧、微信、钉钉等)、代码管理工具、自动化测试、流水线、发布……。


总体原则

  1. 团队规模不宜过大,以小组为单位进行拆分,一个小组不多于10人;
  2. 每个小组有自己的产品经理、研发、测试,小组内轮流担任组长(Scrum Master)负责团队活动进行和监督;
  3. 团队成员之间相互信任、完全透明;

需求阶段

  1. 需求要合理,大家都认同;
  2. 需求规模不宜过大,需求能进行拆分;
  3. 需求有清晰的需求背景、面向的对象、要做成的事情、验收的标准等;在xxx背景下,作为xxx角色,为了达到xxx目标,要做xxx,这样可以xxx的好处。
  4. 产品经理给团队讲解需求,讲解完询问团队对需求的理解,看看大家对需求有没有问题,也可以随机请一个成员口述对需求的理解,确保大家对需求没有异议、没有理解偏差;
  5. 在需求阶段,对需求进行实例化,需求要做什么事如何验收,一条条的整理成测试用例;
  6. 针对需求编写设计文档,这个设计文档用于指导研发如何开发,是需求的具体实现,具体到界面设计、技术实现方案、代码设计、数据库设计、如何测试等等;
  7. 需求的安排不要太满,关注团队成员的负载情况,预留出一部分时间处理突发情况等迭代之外的事情;

任务和开发阶段

  1. 将具体需求转成研发任务,开发者认领任务;
  2. 开发者开发完成后进行自测,自测没有问题指派给另一个研发进行互测,互测没有问题,该任务可以由开发者标记为完成
  3. 研发任务完成后,指派给产品进行确认,产品确认无误后移交给测试进行专业测试;
  4. 任务的状态:任务开始、进行中、已自测、已互测、已确认、已测试、任务关闭;
  5. 鼓励使用结对编程的方式对复杂任务进行结对编写代码;
  6. 代码编写时遵循编写可读可维护代码的标准去编写,通过单元测试、通过代码扫描、通过代码评审;
  7. 代码评审可以通过Git的合并请求实现,由开发者提交评审,由互测进行代码评审或者集体代码评审;
  8. 如果一个任务超出了预估工时,需要及时的和团队沟通,请求更高能力的同学协助或者申请所需的资源、及时解决;

测试和发布阶段

  1. 开发者通过创建 Git tag的方式进行标记,标记触发流水线执行构建打包,产生制品和发布到测试环境,测试同学进行测试,验证通过后,制品从测试制品升级到可发制品;
  2. 完善的通知机制是团队成员协作的重要基础,每一个步骤的流转都需要通知来衔接,但团队间的沟通也不可少;
  3. 对于测试同学提出的bug需要经过研发确认、归因分析、解决方案确认、bug修复后进行复测并关闭;

在迭代完成后

  1. 通过任务和bug的进度以及燃尽图,查看迭代完成情况、完成质量(bug数量、bug产生的原因);
  2. 迭代的交付是团队的承诺,必须达成,如果没有达成需要分析原因;
  3. 找出迭代中做的好的和不好的,好的继续坚持,不好的要减少和摒弃;


发表评论
博客分类