有没有人对如何指导初级程序员有什么建议?如果你曾指导某人,你是否遵循了任何流程,还是非常非正式的?
如果您过去曾被指导过什么样的事情,那么您认为哪些事情最有帮助?
答案 0 :(得分:44)
尝试每天留出30-60分钟来一起审核他们的代码。如果你不能这样做,那么除非它是非常基本的,否则每当他们进行代码提交时,都会尝试聚在一起审查他们的代码。让他们解释为什么他们选择他们采取的方法来代替其他人。这样的过程有助于建立良好的关系,并且真正激发学生自己思考并能够捍卫他们的决定。学生不仅最终会找到一个他们可以信任的人,而且你会发现他们的代码和逻辑质量几乎立即得到了提高。
编辑:另外,如果您无法花费这么多时间与您的大三学生共同审核,那么您可能不应该指导他们,而是看看是否有其他人有一个时间表会允许的。指导的全部意义在于积极地帮助学生的专业发展,如果没有给予他们适当的关注和指导,他们就不会学到很多东西。
答案 1 :(得分:18)
我有机会在一家小型软件公司担任实习生(两人之一),并有机会参与他们所拥有的“几乎全新”的项目。他们让我设置了所需的一切,并向我介绍了项目实际上是什么(基本的东西,如需求是什么等)。
起初我们做了一些小任务,比如研究对项目很重要的事情(他们给了我们一个主题列表)。我认为,这是为了看看我们能够处理多少事情,因为我们需要查看和研究的事情并不是那么微不足道,而且需要花费2周左右的时间(计算我们必须为它创建的基本演示) 。实际上,测试阶段确实没有太多“指导”。
然而,在那段时间之后,我们可以在实际项目本身上工作。这也是我们开始以pair programming的方式开始一起训练的那一刻,除了我们三个人(2个实习生和1个'教练')。
我们从他身上学到了很多东西,但这是以非正式的方式,而且他的行为并不像“无所不知 - 倾听我”。当我们提出建议时,他会倾听并与我们一起思考他们是否有任何好处。或者说出为什么不应该以这种方式完成一个想法...现在我想到了,他积极地鼓励我们提出建议,并考虑更好的做事方式,而不仅仅是坐在那里那些可能知道该怎么做比你好的人的命令。
简而言之:
答案 2 :(得分:13)
在一家拥有大量内部IT的大型公司实习期间,我与一名导师配对。这种做法无疑在技术技能和商业技能方面帮助了我的职业发展。以下是指导如此成功的一些原因:
答案 3 :(得分:6)
在我的第一个工作地点,有一个非常耐心的家伙,总能帮助我解决我当前的问题,然后教我一些重要的基本原则。我喜欢这个,因为他会教我如何成为一个更好的程序员,帮助我保持高效。
答案 4 :(得分:3)
我想成为大三学生,我想:)我认为我非常重视非正式的方法。它可能在很大程度上取决于你和你的被指导者的角色,但是如果你没有自负的话,我会说你学得最好。打破僵局,确保两个方向都有反馈。像代码审查(两种方式?)和偶尔的结对编程之类的东西都可以工作,如果有一个很好的匹配,它也可能很有趣!
答案 5 :(得分:3)
因为我必须在面试中解释为什么我想合作(除了需要钱),我的经理确保我的第一个项目允许我处理我认为弱的事情领域:Linux经验很少(我选择了一个只有Linux的研发团队,所以我不得不学习),不知道有用的文本编辑器(我真的想学习Vim),以及如何学习另一种编程语言(非常在学习编程时学习语言的方法不同。他告诉我,我有一段时间有学费。
我通过阅读书籍学到最好的东西,所以在对 Unix for Dummies 轻笑之后(是的!我不是唯一一个认为这有点晦涩难懂的人)我开始用 Unix在一个坚果壳和Sobell的 Linux命令实用指南。之后我打印出Vim文档并开始浏览它。然后我浏览了几本关于Python的书,这是我第一个项目的语言。我得到了所有的时间,我需要对这些事情感到舒服(这是真正的问题,正如我现在所理解的那样),然后开始为之前的合作项目添加功能。
我现在意识到,如同Kamikaze Mercenary所说,每天或每两天与某人会面以进行代码审查会非常棒。
答案 6 :(得分:2)
这是我的短名单:
结对编程 - 这对许多事情很有帮助,比如加强各种想法和实践。当你经常使用它时,习惯使用Resharper会更容易。
非正式聊天 - 这是我们去喝酒,去外面找人抽烟,一起吃午饭等等。在离开办公桌时,讨论可能与工作立即或它可能是抽象的哲学东西,可以帮助将某人的游戏提升一两个档次。谈论各种即将到来的技术或即将发生的变化可能会令人兴奋,并有助于形成联系。
反馈和建议 - 这是上述两种情况中发生的情况。 Dale Carnegie的“如何赢得朋友和影响人”等书籍可以帮助理解各种人际关系动态,虽然这听起来很技术性,但实际上只是关于如何以各种方式激励他人。这里的一个关键点是要知道如何留下一些面包屑来获取一些实践,比如在暗示某些事情之后给出提示而不仅仅是给出答案。我有各种各样的数学老师,因为我开发了一些这样的技能,所以有一个礼物。
因此,这部分仅仅是激励对方并试图引导他们,因为当有人为自己解决问题时,这可能是一种赋权和启发性的体验。 “我做到了!那是对的,莫伊,你的!”当它发生时,那种自我对话是相当不错的。
答案 7 :(得分:2)
根据我的经验,在指导某人时,受指导者真的想要了解更多信息是非常重要的。
永远不要用勺子喂它们。而是将它们指向有价值的东西,并让它们利用他们正在使用的项目中学习的新信息。如果不付诸实践,知识就毫无用处。所以鼓励你的被指导者编写代码,编码。
答案 8 :(得分:2)
询问他们接下来会尝试完成任务的内容。这可以让我们知道从“我不知道该做什么”到“嗯,我会尝试这个但是......”的类别是他们有自己的想法可能对起点有用
快速浏览一下他们想做什么并提供提示,以便他们找出问题所在。这不是给出答案,“只需取出这行代码,”建议他们看看那里有什么,这是必要的
答案 9 :(得分:1)
我建议您开始提供您拥有的部分真实作业,并尽一切努力使用他的代码。换句话说,训练他替代你自己。
通过这种方式,你将承诺分配时间与大三学生一起工作,他将能够看到“现实生活”。通过真正的作业和听取生动的反馈,他将能够快速获得速度。
这种方法的缺点是它可能会过于狭隘地关注您的特定项目。因此,请务必向受训者展示可能的替代方案,并鼓励权衡利弊分析,以拓宽他的专业视野。
答案 10 :(得分:1)
几年前,我在一家小公司工作,第一天我收到了一份完成小任务的清单 - 在代码中做一些小改动,找到并修复项目中的一个小错误。这真的帮助我向我的导师提出了正确的问题并熟悉了环境,代码库。这些任务很容易完成,所以在转向更大的任务之前,我有一点自信。
这种辅导方式对我很有帮助,所以我打算和我们的新同事一样。
答案 11 :(得分:0)
我曾经指导过几个初级人员。根据他们学习的方式,我的方法略有不同。
简而言之,我尽可能地为初级人员提供了小型,自成一体的项目,并给他们一个相对固定的时间来完成任务。任务完成后,我会检查他们的方法,代码和解决方案,并提出改进建议或更好的方法来处理问题。我认为这样他们就不会感到不知所措,成为一个更大的项目的一部分。
希望这有点帮助。