
这篇文章旨在成为任何将要开始新项目的人的清单。 它涵盖了您应与即将离任的团队讨论的主题,以及为确保快速升职而可以做的实际事情。
我刚刚开始为一个大型组织工作,代码库和流程对我来说都是新的。 我在团队中的角色是技术负责人,其中涉及前一个团队的几个成员的职责。 这导致我需要从几个人处移交,以确保我(更重要的是我的团队)能够完成即将离任的团队以前执行的工作。
向即将离任的团队学习的事情
本节包含大量问题。 如果您现在正在执行切换,请通读所有内容。 否则,请节省一些时间,仅阅读标题。
- 开发过程
什么时候站起来,谁去? JIRA如何配置,您是否有权访问? 您预计的工作时间是多少? 什么是git分支策略? 谁拥有代码的所有权和质量? 还有其他团队在编写代码吗? 如果是这样,他们在做什么? 谁负责解决合并冲突? 谁在测试? 回归测试如何完成?
- 建筑规范
您如何获得代码? 您如何建立项目? 您如何在本地计算机上运行它? 它有什么要求(数据库,其他服务等)?
- 错误追踪
如果发现错误,应该怎么处理? 如果其他人在您的代码中发现错误,您将如何找到它?
- 发布代码
谁发布代码以测试环境? 谁将代码发布到生产环境? 如果这些过程中的任何一个存在问题,谁来处理? 我该怎么做才能确保已处理的代码进入所需的环境? 发布周期多长时间?
- 测试(单元/集成/功能/安全)
有哪些不同的测试套件? 它们如何运行? 是否还有其他团队需要就测试进行沟通? 是否有运行测试的自动化版本(例如Jenkins)? 测试多久运行一次? 运行测试是否有任何机器要求? 谁进行任何手动测试?
- 代码审查
代码审查谁? 它是强制性的吗? 对于所有更改? 使用什么审查工具? 我应该审核谁的工作?
- 测试环境
测试环境在哪里? 如何将我的代码连接到他们? 如何更改它们的测试数据? 他们多久更新一次? 如何确保我的更改最终落在他们身上?
- 设计与建筑
谁为新作品设计? 整个堆栈的总体情况如何? 我的特定组件的底层情况如何? 对于系统其他部分如何协同工作/如何配合使用的特定问题,我可以与谁联系? 哪些组件难以集成? 我组件的痛点是什么?
- 之前的工作
我的前任在最近的2/3版本(或2/3个月)中一直在做什么? 我是否了解他们的工作旨在解决的业务需求? 我了解他们编写的代码如何工作吗? 他们完成的工作有哪些痛点? 如果他们能再次做这项工作,他们会做些什么不同? 他们完成的所有工作都有书面设计吗? 正在进行的工作仍在进行哪些编码? 在尚未发布的代码上还有哪些工作?
- 即将进行的工作
您的前任接下来会从事哪些工作,您还没有到达吗? 是什么导致立即停止工作? 哪些外部因素在阻止该工作的完成? 谁是即将开展的工作的利益相关者?
- 表格/文件
哪些表格/文件必须填写? 表格需要发送给谁? 在什么情况下需要表格? 表格发送给谁? 您是否有该表格的副本,或者可以要求该表格的人?
快速彻底学习的方法
本部分旨在帮助您发现可能遗漏的内容(即使您可以回答上述所有问题)。 它们是帮助您获得更深入了解的技术。
- 做出一点零钱
尝试选择一个次要任务/错误/缺陷/重构,完成并部署(最好是实时运行)。 此过程将回答上一部分中的许多最重要的问题。 它还将发现项目上任何难以使用的过程域。 尽早知道这一点将使您能够在以后的工作中对它们进行补偿。
- 重播会话
一旦您认为您已经回答了上一节中的所有问题,请与某人(例如,项目经理)坐下来,与他们讨论您所学到的所有任务。 让他们问您有关工作的问题,以检查是否错过了任何事情。 在离任团队离开之前进行此操作,以便有时间找出所出现问题的答案。
- 设计一些东西
选择一个新任务并进行设计。 与已经在该项目上完成设计工作的现有团队成员进行交谈,以便他们可以就您可能遇到的陷阱向您提供建议,或就您可能尚未意识到的代码领域提供建议。
- 编写测试并重构
这是真正理解将要使用的代码的绝佳方法。 编写测试是防止代码库退化的绝妙方法,因此是增加价值的好方法。 它具有双重作用,它使重构更加安全。 重构还将使组件更小,功能更集中,从而为代码库增加价值。 如果不对代码的执行情况有一定的了解,就无法重构代码。