3

我的处境是,我要担任当前项目的新开发人员的导师。

什么是您快速进入项目的最佳方式——无论是技术上、特定领域的项目还是社交上。

我读过很多赞成 TDD 的人谈论结对编程,从经验丰富的团队成员编写测试开始,然后是新人实现实际代码 - 然后再切换。

什么最适合你?

4

9 回答 9

5

啤酒!

从社交的角度来看,当有新人出现时,我总是喜欢整个团队出去喝杯啤酒。或者,如果您不是啤酒爱好者,那么保龄球或摇滚乐队之类的。

在你们都放松一点之后,他们会更自在地提出问题并融入其中。

于 2009-02-27T11:43:03.087 回答
5

有多种技术组合:

首先,他们需要了解应用程序的功能。我知道这听起来很陈词滥调,但我曾在交易应用程序中工作过,人们可能需要很长时间才能了解做市商所做的事情,因为这是建立在关于金融市场如何运作以及什么方面的大量知识之上他们是这样。像“传播”这样的术语已经内置了各种假设的知识。

这应该以交互方式完成,而不是交给某人教程或用户手册。此外,这非常重要,用户用户应该驾驶. 使用鼠标和键盘而不是观看是建立肌肉记忆和根深蒂固的反应的方法。这样,您将获得更好的保留率。此外,与其说“现在点击这里”,不如让他们当场问他们“你会在这里做什么”。

您通常可以通过这种方式获得对应用程序可用性的有用洞察,因为新人不会受到您和您现有团队拥有的所有历史的影响。

你不能教给别人所有东西,但要向他们展示足够多的东西,让他们可以在应用程序中导航并完成简单的任务。

其次,给他们一个架构概述。如果这需要超过一两个小时,那么您将进入太多细节。他们只会忘记它。我发现实际上将其作为面对面的谈话而不是交给他们一份建筑设计文件(这通常只会让人目瞪口呆)更好。

最后,给他们一些小的、相对容易的、时间不紧迫的错误来修复。这将使他们熟悉检查代码、构建代码、部署代码、运行代码等的基础知识。重要的是它很简单,因为新代码总是出错。您可能需要设置正确的环境变量才能正确构建代码或其他内容。给他们一个复杂的问题,如果出现问题,他们会迷失在弄清楚环境是否是因为他们做错了什么等等。

不言而喻,你不能把它们放在角落里来解决这个问题。有人需要密切关注他们,以确保他们不会陷入困境。这也将使您对他们的性格有一个很好的了解:当他们被卡住时会发生什么?他们会结冰吗?他们寻求帮助吗?他们会尝试解决问题吗?他们是不是太容易放弃了?

与此同时,他们正在学习代码。

于 2009-02-27T11:48:05.537 回答
4

让新手修复代码中的错误。

这是双赢的。你可以让他们在角落里按照自己的节奏工作。他们有一个目标。您可以在 5 分钟内完成一项任务。

于 2009-02-27T11:36:39.387 回答
4

自然的倾向是开始广泛并深入研究,这导致了很多冗长的介绍性谈话。新来的人几乎不会记得任何事情。不要把时间浪费在项目的历史、高级架构等上。

将他们与有经验的人配对,共同解决一个问题。及时解释正在开展的工作的背景。当你这样做时,通过向他们展示在哪里可以找到历史/背景信息来教他们钓鱼。当人们从内核中建立理解时,他们学得最好。人们不会保留太多前期的“脚手架”信息。

于 2009-02-27T11:52:18.897 回答
2

我喜欢做以下事情:

  • 给个系统demo
  • 提供高级概述,并附有流程图/设计
  • 给开发者一个特定领域的更详细的解释。
  • 在那个领域给他们一些工作(轻松的工作)。
    修复一些错误是一个很好的方法。

一旦他们熟悉了那个领域,你就可以扩展它,并开始给他们一些小功能等。

所有这一切的重点是让他们熟悉产品和环境。

于 2009-02-27T11:42:02.743 回答
2

我刚刚在 12 月开始了一份新工作,所以这个过程在我的脑海中仍然很新鲜 :)。

以下是我遇到的问题:

这东西 有什么作用?

  • 我正在处理的应用程序的目的是什么?
  • 谁是它的目标用户,它为他们解决了什么问题?
  • 我该如何使用它?

我该如何做我的工作?

  • 我们用什么来进行源代码控制?
  • 我们用什么来跟踪错误?
  • 我将每天与谁互动?(其他开发人员、QA、文档等)
  • 我还需要了解其他工具或流程吗?

我该如何构建它?

  • 在源代码管理中哪里可以找到我需要的源代码?
  • 我需要采取哪些步骤来构建这个东西?(理想情况下,它应该是一步,但几乎从来都不是!)

这都是什么东西?

  • 系统架构的高级概述是什么?(没什么太详细的,只是对主要玩家的一个非常基本的描述)
  • 源代码的目录结构是如何设置的?什么去哪里?

回答完所有这些问题后,我就可以开始工作了!

快速掌握新代码库的最佳方法是处理定义明确、隔离的任务,这些任务的结构方式使我逐渐接触到越来越多的组件。此外,如果我遇到困难或需要更多信息,让人们随时回答我的问题也很重要。

到目前为止,我在这里的经历非常棒,这是我所做的事情的顺序:

  1. 修复几个小错误
  2. 重新设计两个设计糟糕的不同对话框
  3. 编写示例代码以与产品的 COM API 交互
  4. 从头开始编写一个全新的模块,然后将其集成到产品中
于 2009-02-27T15:04:44.503 回答
0

是否有使用与主项目相同的平台创建的内部工具?如果是这样的话,对平台的一个很好的介绍就是让新人对你想要一段时间的工具进行一些改进。

于 2009-02-27T11:35:28.377 回答
0

当我开始一个现有的项目时,我发现在以下情况下更容易进入它:

  • 有人向我展示了应用程序的工作,解释了它应该做什么,做了什么,并回答了我最初的问题。

  • 我得到了很好的文档,所以我可以自己找出项目的基础知识。

  • 我有人可以回答我的任何问题。

于 2009-02-27T11:35:33.883 回答
0
  • 给他们一两天所需的 KT。
  • 获取反向演示
  • 要求他们修复错误
    几天。

或者

将新加入者作为模块的备份资源。逐渐根据他表现出的信心,让他开始主要的核心工作。

于 2009-02-27T11:46:53.530 回答