摘要
1) 一句话总结 领导要求开发人员主动领取任务是合理的,但前提是管理层必须提供科学的任务管理工具和清晰的迭代开发流程(如Scrum)作为支撑。
2) 关键要点
- 工具支撑:必须使用任务管理工具(如 Jira、GitHub Projects)来收集、记录并跟踪所有任务的全生命周期。
- 任务规范:每个任务必须具备清晰的属性,包括标题、详细内容、类型、优先级、负责人、状态以及预估时间(打分)。
- 流程规范:推荐采用基于 Scrum 的迭代(Sprint)开发流程,确保每个阶段目标明确。
- Sprint计划:从 Backlog 中按优先级选取任务,开发人员需参与任务打分,分数过高的复杂任务必须拆分为小任务。
- 需求对齐:在 Sprint 开始前,需安排会议与产品经理对齐复杂任务的详细需求和设计规范。
- 主动认领与状态流转:开发人员按优先级主动从系统中拉取“待处理(TODO)”任务,状态随进展在“进行中”、“测试”和“完成”之间流转。
- 发布机制:发布时仅打包验收通过的任务并进行回归测试,未完成的任务滚动至下一个 Sprint。
- 演示与复盘:项目发布后应组织开发人员演示成果以获得肯定,并进行事后总结复盘以持续完善。
- 管理者责任:管理者在要求下属主动前,需确保已提供工具、明确了计划细节,并负责帮助下属移除工作中的所有障碍。
3) 风险与缺口
- 效率风险:开发人员如果天天被动等待主管下发任务,会导致极低的工作效率。
- 进度失控风险:若缺乏每日例会等日常定时沟通机制,存在直到截止时间才发现进度严重滞后的风险。
- 管理缺口:如果管理者没有用工具管理好任务、没有制定清晰的计划或未向执行者同步任务细节,开发人员将无法知道该去哪里拿任务以及优先做哪项任务。
正文
问:
领导说:“你们开发人员做了这么多年还等着主管给你们下发任务?”,领导这么说是不是不太符合软件工程管理?#软工好问题#
领导这么说没问题,天天等着主管下发任务,那效率多低呀!
但是,但是,一定要配合相应的工具和流程才科学。
那么什么样的工具和流程才比较科学呢?
首先需要用一个任务管理工具来将所有任务管理跟踪起来,这样的工具有很多,比如 Jira、GitHub Projects 等。
这些工具的重要特点是:可以收集记录每一个任务,跟踪管理任务的整个生命周期。 而对于其中的每一个任务,要有清晰的:
- 标题:概要性的说明任务
- 内容:任务的详细内容
- 类型:Bug、需求、调研等
- 重要性/优先级:重要性和紧急程度
- 负责人:任务谁来负责
- 状态:当前任务的进展:等待处理、进行中、测试验收、完成 等
- 打分:这个任务大概需要多少时间完成
只有用工具把所有任务都跟踪管理起来,开发人员才能清楚的知道自己该去哪里拿任务,该优先做哪一项任务。对于管理者也一样,只有用工具管理起来,才能清楚的知道每个开发人员在做的事情,进展如何,长期看还能知道每个开发者的产出多少。
然后需要一个清晰的工作流程
现在比较流行的工作流程是基于 Scrum 的开发流程,一个 Sprint(开发周期)一个 Sprint 的迭代开发,每一个阶段都有明确要做的事情。
-
Sprint 计划 Backlog 里面有多少高优先级的任务,根据优先级从高到低选取任务 每个任务打分多少?需要开发人员参与对每个任务进行打分,分数过高的任务应该进一步拆分成多个小任务。 接下来这个 Sprint 大致能完成多少分?上个 Sprint 还有多少遗留的任务?要留多少 buffer?
-
任务说明、需求说明 有些任务比较复杂,需要单独安排会议,让产品经理一起参与介绍清楚任务的详细内容,需求文档,设计规范等等
在新的 Sprint 开始前就要把这些工作做好,这样开发人员才可以正常的开始任务。
-
开发和测试 当 Sprint 开始后,开发人员就可以从任务管理系统里面去按照优先级选取高优先级的 TODO(待开发的)任务了。 当一个任务开始了,状态就要变成 In Progress(进行中),开发完成后,借助 CI 部署到测试环境,就可以让任务进入 Testing(测试)。 任务在测试的时候,如果测试通过,就可以将状态标记为 Done(完成),如果测试不通过,那么就需要将状态重新标记为 TODO,再进入 In Progress,然后 Testing,知道测试通过后变成 Done。
-
发布 当快到了发布的时间,就需要将所有验收通过的任务一起打包发布,再完整的回归测试,没完成的就滚动到下一个 Sprint。
-
演示和总结 项目发布后,让开发演示一下自己的作品,既可以让大家都知道我们发布了什么,又可以让开发得到一定的肯定和鼓励 事后总结复盘可以让以后做的更好
-
每日例会 每天简短的沟通一下,看每个人的昨天做的事情、今天要做的事情、有没有任何障碍,这样遇到问题可以及时沟通,避免最后时间到了才发现差一大截。
并非说一定要 Scrum,但基本流程都是类似的,也是必须的:
- 每个版本的计划,要发布哪些任务
- 让开发和测试清楚的知道每一个任务的详细内容
- 要跟踪任务的状态,从 TODO 到 DONE 有个清晰的流程
- 要日常定时沟通,及时发现问题及时调整
- 事后总结,不断完善
所以以后领导自己说下属应该自己主动去选择任务要任务,先自己想想: 有没有用任务管理工具把任务都管理好? 有没有清晰的计划让大家都知道接下来要做哪些任务? 有没有让负责任务的人知道任务的细节? 下属在完成任务时有没有任何障碍?有没有帮助下属移除所有的障碍?