如何成为一名成功的学生导师
引言
在去年结束的编程之夏的活动中,本文的作者柯振旭带了两名同学不但顺利完成了暑期实习的任务获得优秀学生最具有潜力奖,还成功将这两名同学发展成为了Apache Skywalking的Committer,在活动结束之后同学们也都留在了社区并结合自己的课题方向不断做出自己的贡献。
本文适用的读者范围是那些想为自己的社区吸引更多长期学生贡献者的导师,不适合单纯为了奖金和只为了吸引一次性劳力的社区项目。
本文将按照暑期活动的三个主要阶段,介绍每个阶段中为了达到项目的最终成功,导师可以作出的努力。
出题阶段
一个导师在出项目题目的时候,很可能就已经确定了这个项目的生命周期,以及参与这个项目的学生的贡献周期。 以下是我从 2020 届暑期活动中,总结出来的我自己出题阶段遵循的几个参考指南。
不要出纯体力活的题目。
虽然活动组委会没有限制,但我个人强烈建议导师不要出一些“纯体力活”的题目,类似翻译文档,整理文档,整理 license,添加测试用例等。 这类题目几乎不存在与之对应的兴趣,缺乏兴趣的学生在完成暑期活动之后很难有持续为社区继续贡献的动力,甚至在项目中期就已经弃坑了。 社区参与暑期活动的目的是为了吸引更多学生开发者,而不是为了把枯燥无味的体力活承包给学生。
不要出难度过高的题目。
我们的目的是为了吸引更多学生关注和持续贡献开源项目,而不是在举办竞赛。 初次接触开源项目的学生,除了需要一些时间熟悉该项目本身的技术,还需要很多时间去熟悉开源社区的协作模式、工作流、搭建开发环境、测试方法等等。 同时学生也有一些学校的任务需要完成,难度过高的题目可能无法在活动时间内顺利完成。
导师要自己先评估题目。
目前(2021 年)组委会对于导师所提交的题目没有审核的阶段,但在我自己出题的时候,列出多个候选的题目后,在做最终投递的选择时,有几个自我评估的标准:
- 假如这个题目让我自己来做,我自己会不会感到有趣?指导学生完成项目有时候会很无聊,当你所指导的项目本身也很无聊的时候,项目长达四个月的指导过程可能会让学生和老师都无法坚持下来,导致项目草草结束甚至中途终止。
- 这个题目是否具有延续性?当暑期活动结束后,具有延续性的项目,能够扩展出相似的或进一步的工作,学生能够从自己已经熟悉的原项目的基础上,继续为社区做贡献,这时候即使没有活动奖金的激励,学生也能够比较轻松地完成后续的贡献。比如活动的题目是适配某一个配置中心,那么活动结束后可以引导学生继续适配另一些配置中心,或者增加/优化一些配置项。
指导阶段
要适当增大包容度。
项目开始初期,学生搭建开发环境,初次接触开源社区的工作方式,可能会有很多基本的问题,这些问题对于导师来说是小菜一碟,但是学生可能需要花费好几个小时甚至好几天去解决。对刚开始接触开源项目的学生来讲会产生非常大的挫败感。 对于初次接触开源项目的学生,适当增大包容度,及时给予一些帮助,以帮助学生快速进入到项目和社区。但也要注意应该只提供解决问题的方向,不应该直接帮助学生编写代码或调试代码。 比如说给学生提供完整的背景知识,递进式的解题思路,逐步引导学生自己一步一步找到解决方案,让学生在自己探索解决方案的过程中,也能有所成长。
要定期沟通项目进度。
导师们有自己的日常工作,学生们也有学校的任务和活动,缺乏沟通会导致项目进度停滞不前。 导师和学生之间应该建立定时沟通的机制,双方每周(或每两周)约定腾出一定的时间,建立音频会议或视频会议,同步项目的进度,学生提出遇到的问题,导师帮助解答。 对于社区有要求的(如 Apache),项目的讨论和进度还必须公开同步到邮件列表等公开渠道。
要当导师也要当朋友。
从学生角度,导师-学生关系容易产生距离感,特别是当导师是社区里面比较资深的"大佬"时。在学生遇到问题时,会顾虑这个问题对于导师来讲是否太简单了而不好意思提出,耽误了项目的进度。 我平时偶尔也会和学生聊一些他们学校和我自己生活中的趣事,在学生消除了距离感时,他们也会咨询一些活动项目之外的问题,比如职业规划,行业看法,邀请我参与他们的学术报告调研等等。 与学生建立长期稳定的联系之后,学生更愿意留在熟悉的社区持续贡献。
不要吝惜鼓励和赞美,要指出可以改进的地方。
当学生获得阶段性成果时,适当给予语言上的鼓励和赞赏,“后浪"们的能力有时确实超出我们的预期,应当鼓励学生除了完成项目范围内的工作,还可以自己提出对于社区项目的思考和意见,为社区注入新鲜的活力。 对于学生做得不好的地方,也要敢于提出可以改进的地方。“放养式"的指导会让学生没有任何成就感,也得不到成长。
完成阶段
关注学生成长,提供继续贡献的方向。
当学生顺利完成项目后,为了学生能够继续持续贡献,导师最好应当关注学生的专业和兴趣方向(这来自于指导阶段与学生建立的朋友关系,基于此来了解学生的专业方向和兴趣)。 作为比较熟悉项目和社区的先行者,导师可以继续帮助学生发现和挖掘项目中,与其兴趣匹配的任务,让学生能够继续持续贡献的同时,也对学生身的成长有所帮助,学生自然愿意继续留在社区。
适当后退,给学生独立负责的机会。
当学生开始熟悉社区项目和自己负责的领域之后,导师应当适当后退,给予学生独立负责这个领域的项目(或子项目)的机会。 当学生成长为某些项目 / 领域的 maintainer 时,出于责任心和被需要感,学生们当然愿意持续付出,甚至成为下一期暑期活动的导师,带领更多新的同学进入开源世界的大门。