导师计划 - 针对受训者
申请流程
申请通过各自的项目网站提交,例如 Google Summer of Code 和 LFX 导师计划 。
提案
Jaeger 导师计划项目收到了大量的申请(每个项目多达 150 个),因此我们要求申请者提交项目提案,这有助于我们找到最合适的候选人。即使某些项目的指导方针没有要求提交提案,也请将其包含在其他申请文件中,例如求职信(PDF 文档优于超链接)。
我们希望提案涵盖以下主题
- 关于你
- 为什么你对这个特定项目感兴趣?
- 你有哪些相关的经验或技能可以帮助你成功?
- (可选) 你有哪些开源经验?请链接一些突出的 Pull Request。
- 你在导师计划期间的时间承诺是什么?
- 关于项目
- 你如何理解在这个项目中需要做些什么?
- 你预见到哪些技术挑战,以及你建议如何解决这些挑战?
- 你计划如何开展项目(路线图、里程碑、时间安排)?
这并不意味着提案越长越好。重要的是质量,展示哪个候选人更能理解问题并掌握解决问题的方案。你不需要解释 Jaeger 的功能和工作原理。相反,请关注项目的具体问题,思考挑战和解决方案。
训练营
为了更好地理解项目并提出合理的解决方案,熟悉 Jaeger 及其代码库总是很有帮助的。我们强烈推荐以下步骤
- 学习一些 Jaeger 教程,例如 这篇博客文章 或 这个视频 。
- 自己运行 HotROD 演示 。博客和视频可能已过时,动手实践是最好的学习方法。
- 查看 Jaeger 架构 并了解各个组件。
- Fork 并克隆相应的仓库,以便能够 在本地构建和运行项目 。
- 学习使用最佳实践来进行贡献,包括如何 签署代码并进行贡献 。
- 尝试解决一些你可以找到的 Jaeger 仓库中的简单问题 。
评估标准
我们没有一个确切的清单来用于评估,但以下标准具有重大影响
- 候选人有多个 PR 合并到 Jaeger 中,证明了
- 他们对代码库的理解,
- 他们对我们开发流程的理解,
- 他们的编码和解决问题的能力。
- 高质量的提案,证明了
- 对问题的深刻理解,
- 进行了技术尽职调查,
- 解决问题的可行方法。
- 以前完成过高质量开发任务的证据,例如,在其他开源项目中。
导师计划
恭喜你被选为 Jaeger 受训者!在开始你的项目时,可能会让人不知所措,因此以下是一些指导,帮助你开始。
入职清单
- 请查看 CNCF 行为准则 。它提供了一个指南,导师和受训者都应该遵循,以确保安全的交流环境。
- 在 CNCF Slack 上创建一个账户,并使用照片/图像进行个性化,这有助于你脱颖而出。
- 将你的 Slack 账户名发送给你的导师,这样我们就可以把你添加到私人频道。我们将创建一个只包含你和你的导师的频道,以及另一个包含所有过去和新的受训者和导师的永久私人频道。
- 加入#jaeger 公共频道。在这里你可以从 Jaeger 社区获得帮助。
- 向你的导师、同伴以及 Jaeger 社区说声“你好”,如果你愿意,可以用几句话介绍一下自己。
- 阅读我们的贡献指南(#1 ,#2 ), 其中包含有关开发工作流程的说明。
- 熟悉Jaeger 文档 , 它提供了 Jaeger 的架构概述,所有 CLI 标志的完整列表等等。
- 仔细阅读 GitHub 问题,以清楚地了解需求。在该问题中发布任何澄清问题,确保为以后你自己、导师和社区参考留下持久记录。
保持进度日志
由于导师制是远程进行的,确保你稳步前进并让导师了解情况的最佳方式是定期保持进度日志。
- 在学期开始时,复制此Google 文档模板 并与你的导师分享(允许评论)。
- 在每周开始时,创建一个包含你想在本周实现的目标列表的该周部分。
- 在每天结束时,在相应的目标下添加一个日期日志条目,简要概述你所做的事情。
- 这可能只是一句话,例如:“阅读 XYZ 文档 {链接}”。
- 理想情况下,记录一些关于你所做的工作如何影响你的未来计划的结论/决定。
- 如果你在某天无法进行项目工作,也请记录下来,以确保透明度。
为什么日志很重要
- 日志使你的导师能够了解你的进度,并让他们可以进行路线修正。
- 如果你无法为一周写下你的目标,这表明存在误解,你的导师需要与你一起澄清需求和方法。
- 许多项目都需要研究/分析如何最好地解决特定问题。写下你的发现可以帮助你整理自己的理解,并及时获得导师的反馈。请记住,导师可能也不熟悉那个特定领域,他们依赖你进行研究、综合和展示影响项目的信息。
- 清晰的写作是软件工程师最重要的技能之一。你可能认为是编码技能,但随着你越来越资深,写作是你传达想法并与团队/社区达成一致的方式。利用这次导师制来磨练你的写作技巧。
- 将导师制项目视为一份工作,承担起取得进展和实现目标的责任。
提示
- 提出问题!一个好的经验法则是在你花了一个多小时无法在文档或代码中找到答案的情况下,不要犹豫向你的导师寻求提示。你也可以在#jaeger 和 #jaeger-mentorships Slack 频道中提问。
- 在开始进行一个相当大的更改之前,写一个关于你计划做什么、为什么要做以及潜在挑战或未知因素的计划。考虑将此记录为Jaeger 中的新问题 。
- 一次处理少量可交付成果,在进行的过程中进行小的改进。将大型任务分解成更小的部分可以帮助看似艰巨的任务变得易于管理。它还有助于减少审查人员的认知负担! 😀
- 在处理你的方法是否最终会奏效的不确定性的同时,分解问题可能非常具有挑战性。基本的概念验证提供了对最终结果的保证,可以帮助突出显示要分别解决的子问题,同时还可以让你有机会探索各种替代解决方案并确定最佳选择。
- 欢迎你加入每月 Jaeger 视频通话。
- 编写单元测试,如果适用,在本地运行实时集成测试。测试可以让你自己确信你所写的内容有效,将预期行为记录给代码的读者,并防止来自未来贡献的回归。
- 鼓励你审查其他人的 PR(例如,来自你的同伴的 PR),并提供友好和建设性的反馈。这是一个了解良好编码实践的好方法,同时也有助于你熟悉代码库。
- 随时提出改进建议!例如,如果你在开发工作流程中遇到了很多摩擦,我们是否可以通过更好的文档或自动化来改善开发人员体验?