我如何指导初级软件工程师
2021年,我偶然有机会指导一些软件工程师实习生。我总共指导了5名实习生,最多同时指导了3名实习生。这对我来说是一次很棒的经历,说实话,我在指导的过程中也学到了很多东西。所以今天,我想分享一些关于指导初级软件工程师的想法。
1. 保持学员小组规模较小
我承认,一开始我很高兴能同时指导三名实习生。这是我第一次在工作中正式实践导师制,所以我很高兴我的能力得到了上司的认可。然而,我发现自己太天真了。更多的学员意味着更大的责任,我需要从工作中抽出更多时间来指导他们。
为什么我要花这么多时间去指导学生?为什么不直接分配任务,然后等结果呢?
我想,刚加入的Mentee通常对团队文化和规范不太熟悉。他们需要一些指导,让他们明白什么该做,什么不该做。一开始,他们可能因为不知道该问什么而没有任何疑问。只有当他们真正开始工作时,才会发现问题无处不在。而作为Mentee,我自然会成为他们第一个想到并寻求帮助的人。为了让Mentee更好地适应工作,我需要花时间进行解释和指导。
我最多同时带了三名实习生,他们负责两个不同的工作领域:前端开发和数据仓库开发。在指导他们的同时,我也有自己的工作要做。所以最后我不得不加班。
因此,保持较小的学员规模有助于您更好地指导学员,并让自己处于更放松的状态。
2. 准备一份入职指南
为了节省时间,您可以准备一份入门指南来解释一些基本问题。准备指南可能需要几个小时,但它非常有用,因为它每次都可以重复使用!
我制作了一份入职指南,以下是指南中包含的内容:
- 如何设置开发机器,包括需要安装的软件和需要设置的环境变量。如果可能的话,最好也提供一种方法来验证软件是否正确安装。经常会发生一些奇怪的问题。最好提供一种验证方法,这样学员至少可以先检查一下自己的软件是否安装正确。
- 如何设置项目,包括依赖项的安装、如何运行项目以及如何设置环境变量。这绝对是必须要做的,否则,任何人都无法高效地工作。
- 如果遇到一般性问题,该向谁寻求帮助?新人通常不熟悉团队架构。遇到问题时,导师是他们首先想到的人。然而,有时导师可能对某些特定主题了解不多,他们仍然需要将问题转交给更熟悉的人。那么,为什么不直接在指南中指定人员图谱呢?在指南中,您可以指定最熟悉该模块的系统模块负责人,这样您的学员就可以自主地直接联系最了解该问题的人。
- 过往技术分享、教程或培训的视频录像列表。我们有时会举办内部培训和分享,这些视频可以录制下来。这些培训和分享通常与我们自己的项目或产品相关。这些链接可以让学员更好地了解项目,也让导师节省更多时间。
- 常见问题解答,快速参考各种奇葩问题。无论准备多么充分,总会遇到一些奇怪的问题。例如,Python 项目初始化时出现奇怪的错误信息,可能是由于新建的远程开发机器在创建过程中设置问题导致的。这些问题很少发生,在知识库中也找不到。所以最好把这个问题记录在常见问题解答中,以防再次发生,浪费调查时间。
3. 定期进行一对一会谈
导师可能会忙于自己的事务,有时甚至会忽略学员。解决这个问题的最佳方法是定期与学员安排会面。可以是每周一次,也可以是每两周一次(我每两周一次)。
一对一的会谈可以很短,比如 15 分钟,这样就不会给双方带来压力。
最重要的是,一对一咨询并非为了绩效评估。后者过于正式,容易让人紧张。一对一咨询虽然更轻松,但有时也像闲聊一样。一对一咨询的目的并非评判或评估,而是沟通和建议。
以下是我在一对一课程中经常讨论的几个话题:
- 最近怎么样?(热身问个一般性问题)
- 工作中遇到什么问题吗?
- 你解决了吗?如果解决了,是怎么解决的?如果没有,我该如何帮助你解决?
- 这份工作符合你的期望吗?如果没有,你还缺少什么?
让受训者畅所欲言非常重要,所以这些问题都是为了鼓励受训者分享他们的想法。导师可能在某些领域知识渊博,经验丰富,但在这种沟通中,每个人都是平等的,拥有相同的观点。这样,沟通才能有益且积极,分享真实的想法,从而揭示并解决真正的问题。
最后,导师也可以分享自己的观点,包括表扬学员做得好的地方,并指出学员可以改进的地方。谈到需要改进的地方时,最好直接指出需要改进的地方,并专注于事实本身,最好能提供方向,让学员知道如何开始改进。
总而言之,一对一辅导的目的是让导师和学员在平等、尊重的基础上,协调好彼此的期望,发现问题,解决问题。
4. 分配任务时考虑难度
在给学员分配任务时,导师也需要了解这些任务。有些任务可能很简单或很小,有些任务则可能很难或很大。根据学员的经验、能力和时间安排,为他们分配合适的任务至关重要。
我所做的是,
- 一开始可以布置一些简单的任务,比如逻辑修正、简单的单元测试、拼写错误修正等容易完成的任务,让学员先熟悉工作流程和代码库。
- 等学生逐渐熟悉之后,可以给他们分配一些小的功能,比如开发一个小表单、编写一个整合 API,或者一些不紧急的 bug 修复。对于 bug 修复,虽然导师经验更丰富,能够第一时间发现问题并找到解决方案,但导师不应该直接告诉学生答案,而应该鼓励学生自己阅读代码库,理解代码上下文,最终让学生自己解决问题。在这个过程中,可以适时提供建议和提示,因为有些代码上下文确实很难让学生自己理解(比如遗留系统中糟糕的逻辑设计,没有人知道它到底是怎么工作的 :x)。
- 当学员准备好后,你可以给他们分配一个非紧急的中型功能,比如一个小项目,这样他们就可以开始独立工作了。你可以给他们提供一个大概的想法,让他们尝试自己设计这个功能。之后,你可以审查设计并帮助他们改进。之后,学员就可以开始独立工作了。到了这个阶段,学员已经具备了独立工作的水平。我觉得这将是学员毕业的好时机 :D
概括
以上就是我过去一年导师生涯的感悟。说实话,作为一名导师,我还是个新手 :) 欢迎在下方留言分享你对导师制的看法,也希望我能够从中学习。加油~!
特色图片来自pexels的Pixabay @pixabay
文章来源:https://dev.to/zhiyueyi/how-i-mentor-junior-software-engineers-26l3