How to mentor a junior programmer有没有人对如何指导初级程序员有任何建议? 如果您曾指导过某人,您是否遵循了任何程序? 如果您过去曾接受过指导,那么您觉得哪种方法最有帮助? 尝试每天搁置30至60分钟,以便一起检查他们的代码。如果您无法做到这一点,那么只要他们提交代码,就尝试聚在一起检查他们的代码,除非这是非常基本的。让他们解释为什么选择替代他人的方法。这样的过程有助于建立良好的关系,并真正激发学生独立思考并能够捍卫自己的决定。学生不仅结识了一个值得信赖的平易近人,而且您几乎会立即注意到他们的代码和逻辑质量得到改善。 编辑:另外,如果您不能花那么多时间与下级进行共同审核,那么您可能不应该指导他们,而要看看其他人是否有允许这样做的时间表。指导的全部目的是积极地帮助学生的专业发展,如果没有给予他们适当的关注和指导,他们就不会学到很多东西。 我有机会在一家小型软件公司中担任实习生(两个)之一,并有机会从事他们拥有的"几乎是新的"项目。他们让我设置了所需的一切,并向我介绍了项目的实际含义(诸如需求等基本内容)。 最初,我们要做一些次要的任务,例如研究与项目有关的事物(它们为我们提供了主题列表)。我认为,这是为了看看我们能应付多少事情,因为我们需要查找和研究的东西并不那么琐碎,并且花费了大约2周的时间(算上我们必须为此创建的基本演示) 。该测试阶段实际上是在没有太多"指导"的情况下完成的。 但是,在那之后,我们可以进行实际项目本身。这也是我们开始结对教练的那一刻,采用与结对编程类似的方式,除了我们三个人(两名实习生和一名"教练")。 我们从他那里学到了很多东西,但这是非正式的,他的举止不像"全知听我"这个家伙。当我们有建议时,他会倾听并与我们一起思考它们是否有好处。或就为什么不应该以这种方式提出想法。...现在我想到了,他积极鼓励我们提出建议,并思考做事的更好方法,而不仅仅是坐在那里订单"来自某个可能比您更好的人。 简而言之:
在一个有大量内部IT的大公司实习期间,我与一位导师结为一对。无论从技术技能还是业务技能上,这种实践无疑对我的职业发展都有帮助。以下是指导如此出色的一些原因:
在我的第一份工作中,有一个真正耐心的家伙,总是会帮助我解决眼前的问题,然后教给我一些重要的基本原理。我之所以喜欢它,是因为他会帮助我保持生产力,同时教会我如何成为一个更好的程序员。 因为我不得不在面试中解释为什么我要合作(除了需要钱),所以经理确保我的第一个项目允许我从事我认为是薄弱的领域的工作:很少有Linux经验(我选择了一个仅限Linux的研发团队,因此我将不得不学习),不知道有用的文本编辑器(我真的很想学习Vim),以及如何学习另一种编程语言(与学习编程语言不同的方法) 。他告诉我,我得到了一段时间的学习报酬。 我通过阅读书籍学得最好,所以在为Dummies笑了Unix之后(是的!我不是唯一一个有时认为它晦涩难懂的人),我首先从Unix和Sobell的Linux命令实用指南着手。之后,我打印了Vim文档并开始阅读。然后,我浏览了几本关于Python的书籍,这是我的第一个项目的语言。一直以来,我总是需要对这些事情感到满意(据我所了解,这是个真正的问题),然后开始为以前的合作社项目添加功能。 正如Kamikaze Mercenary所说,我现在意识到每天或每两天与某人见面进行代码审查真是太棒了。 我想我会是大三学生:)我认为我很看重非正式的方法。这可能在很大程度上取决于您和您的受训者的性格,但是我想说,如果您没有自负的话,您将学得最好。破冰,确保双向都有反馈。诸如代码审查(两种方式都可以)和偶尔的配对编程之类的工作可能会起作用,而且如果匹配得当,它也可能会很有趣! 问他们接下来将如何尝试完成任务。从"我不知道该怎么做"到"好吧,我会尝试一下,但是..."这一类可以给出一个概念,使他们认为自己的想法可能对起点有用。 快速查看他们想要做什么并提供提示,以便他们找出问题所在。这不是给出"仅删除这一行代码"的答案,而是建议他们查看其中存在的内容以及所有必要的内容 根据我的经验,在指导某人时,让受训者真正想要了解更多信息非常重要。 永远不要用勺子喂它们。而是将他们指向有价值的事物,并让他们在正在使用的项目中利用他们正在学习的新信息。如果不付诸实践,知识是无用的。因此,鼓励您的受训者编写代码,代码,代码。 这是我的简短列表: 结对编程-这对很多事情都很有帮助,例如增强各种想法和实践。当您与经常使用Resharper的人结对时,适应它会容易得多。 非正式聊天-在这里,我们可以去喝酒,到外面让别人抽烟,一起吃午饭等。在离开办公桌的同时,讨论可能与立即完成工作有关,或者可能是可以帮助某人的游戏提升一两个等级的抽象哲学知识。谈论即将到来的各种技术或即将发生的变化可能会令人兴奋,也有助于形成纽带。 反馈和建议-这是在上述两种情况下都发生的情况。戴尔·卡耐基(Dale Carnegie)的著作《如何赢得朋友并影响人们》可帮助理解各种人际关系动态,虽然听起来很技术性,但实际上只是关于如何以各种方式激励他人。这里的关键点是要知道如何留下面包屑来学习一些实践,例如在提示某事后提示而不是仅仅给出答案。我有很多数学老师因我如何发展这种技能而对此有天赋。 因此,其中的一部分仅仅是激励他人,并试图引导他们,因为当某人自己解决某件事时,这可能是一种赋权和启发性的体验。 ,"我做到了!没错,莫伊,您的确是真的!"发生这种情况时,自言自语非常好。 几年前,我在一家小型公司工作,在第一天,我得到一份要完成的小任务清单-对代码进行一些小的更改,查找并修复项目中的一个小错误。它确实帮助我向导师提出正确的问题,并使自己熟悉环境和代码库。这些任务很容易完成,因此在转向更大的任务之前,我有一点自信。 这种指导方式确实对我非常有效,因此我打算与我们的新同事一起做。 我建议开始提供您所拥有的部分实际作业,并尽一切可能使用他的代码。换句话说,训练他替代自己。 这样,您将致力于分配时间与小学生一起工作,他将能够看到"现实生活"。通过处理实际的作业并听到生动的反馈,他将能够使p更快地提高速度。 这种方法的缺点是,它可能对您的特定项目过于狭narrow。因此,一定要向受训者展示可能的替代方案,并鼓励进行权衡分析以扩大其专业视野。 我以前曾指导过我下面的几个下辈子。我的方法因人而异,略有不同,取决于他们的学习方式。 简而言之,我会尽可能地给下属小型的,独立的项目,并给他们一个相对固定的时间来完成任务。任务完成后,我将回顾他们的方法,代码和解决方案,并提出改进建议或更好的解决问题的方法。我认为通过这种方式,他们不会感到不知所措,无法参与更大的项目。 希望这个对你有帮助。 |