您如何让新手开始使用现有项目?

时间:2009-05-07 10:31:36

标签: project-management

当您处于正在运行的项目中时,您如何让新手入门?在您看来,什么是让它们启动并运行的最快方法?如何让他们快速了解代码和项目文化,以便快速赶上?

你做什么的?给他们解决缺陷所以必须深入研究代码?你给他们的文件阅读(所以他们觉得无聊)?

我最近开始了一个项目,我被指定为缺陷作为起点。一如既往,我还没有访问SCM(但我有资源),我还没有邮件,人们没有太多时间去帮忙等等......所以这是另一个问题:

作为peon,你是如何开始一个项目的?你能做些什么来使它更有效?

16 个答案:

答案 0 :(得分:11)

其他人已经提到让新人(或gal)来修复bug。我认为这可能会适得其反,因为它可能涉及一些详细的产品知识,既可以找到又可以安全地解决问题。它也可以使某人失去动力。

在编码方面,一个小型,独立的子项目可能是最好的。它将为新的入门者提供进入项目其余部分的方法并产生有用的东西。

在管理方面,确保它们包含在所有相关会议中,并且从第1天开始就被视为团队的正式成员。分配指导者并安排项目及其历史的一些教程。在理解设计决策时,了解项目的来源非常重要。

答案 1 :(得分:9)

与现有开发人员之一进行快速会面,最好是一位尽可能“高级”的开发人员,这很有帮助。很高兴听到有人真正谈论这个项目,因为这可以为你提供很多关于哪些部分是有趣的,他们在做什么,与什么接口等等的线索。

获得新系统的“大局”可能需要很长时间,而我认为不可能作弊并且立即得到它,至少可以加快这个过程。

这样的会议不需要很长(一小时,也许?),我也认为对现有的开发人员来说也很有趣/有趣,因为谈论你通常熟悉的事情。 / p>

答案 2 :(得分:6)

帮助他们尽快进入。你只是通过做某事来学习: - )。

识别范围有限的小错误/新功能,并让它们继续下去。可能会给他们指导一个他们可以随时提问的导师。

提供正式的介绍谈话也是一个好主意,但大多数信息应该“按需”提供(否则它将很快被遗忘)。当然,你不仅要回答文字问题,还应该给出一些背景信息。

答案 3 :(得分:5)

在一些公司(特别是那些太忙而无法给你时间的公司)中,请求宽恕比要求许可更容易。

我的意思如下:在尝试修复问题之前,不要花太多时间来理解问题。它通常可以尝试某些东西,然后由知道它应该做了什么的人进行审查。如果你弄错了,他们会告诉你,如果你做对了,快速的周转时间会让你看起来很好。

这显然假设你的尝试至少是聪明的。你也不想成为团队的品牌。但是早些时候问一些愚蠢的问题。离开他们的时间越长,环境就越无情。

如果文档很划清,这显然不会成为问题。几年前我在埃森哲工作,实际上我在第3天(HR类型归纳的前2天)有效地创建了有用的代码。它也可能只是一个项目。但我从来没有经历过同样的事情。

答案 4 :(得分:3)

我认为最好的办法是将错误分配给新人,让他们解决。

作为新人,我会经常做一些事情来帮助我理解新的代码库。我将使用Sparx Enterprise Architect将代码反向工程为UML。与数据库相同。在这两种情况下,这使我能够搜索反向工程模型以查找类型和列名称之类的内容。我还可以基于逆向工程模型创建图表。图表可以关注我有兴趣学习的一个领域。

我还将使用ReSharper来测试代码区域的重构。这些将是积极的重构和重新格式化,以便我阅读代码;我不会将这些检查回源代码控制!

答案 5 :(得分:3)

了解事情如何完成的最快方法是看到它发生。

我会将新人与一个曾在该项目上工作过一段时间的人配对。很快,我们的新人将知道在哪里寻找解决方案,从而能够自己解决问题。

由于你是这种情况下的新人,我认为缺陷是一个很好的起点:)。只要不断问问经验丰富的队友问题。

答案 6 :(得分:3)

第一件事对于一个人来说,开始一个项目,我建议,保持一个记录良好的项目。文档虽然很长,但仍然很乏味,应该保持简洁和重点,它可能是

我有一个python,java,C背景。而且我更喜欢python。那么让我把我的例子放在python中

我的python文档是这样的格式。选择一种严格遵循项目的风格。

"""
This program does so and so, a single line explanation

arg1 does so and so. arg2 acts on so and so. It returns a list of something

Detailed explanation of exceptions, process etc.

>>> code.samples
expected result
>>> code.samples.failed
traceback
...
SomeError
"""

任何有兴趣的人都会开始阅读一些示例代码,因此这将是一个很好的起点,它解释了函数,类或方法的作用。

接下来

维护一个wiki,那里有n个wiki引擎。对于python,你可以使用moin-moin。

<强>第三

对于一个新手来说,很难让他留下来,他肯定会感到无聊,而不是无聊的训练和所有,你可以让他与其中一位专家一起进行配对编程。这是极端编程中经过良好尝试的公式。见维基http://en.wikipedia.org/wiki/Pair_programming 任何新手都会学得更快,如果他亲自解释一些概念,而不是他从其他书面资料中读取东西。

<强>最后

给新手做一些工作要做,他可以开始为程序构建测试,如果你使用的是编译语言(C / C ++ / Java),他可以编译程序。让他在坚持单元测试的同时努力改变功能。

这将是我开始新手的两分钱。不要只是让他参加课程和培训,让他参与项目,即使他倾向于打破东西,让他自己复制。

再次,看到新手真的对编程很感兴趣,否则这一切都不适合他。我见过一些刚刚参与项目的人,只是为了满足他们的个人议程,有时只是危及项目。避免这样的人。

我所说的大部分内容,指的是开源项目或社区维护项目,可能不仅仅适用于企业或企业项目,这些项目遵守自己的规则。始终遵守规则。

答案 7 :(得分:2)

我喜欢快速浏览一下设计文档,然后浏览它们。我发现了解代码库的最佳方法是通过添加新功能或修复错误来修补它。

如果有人可以提出问题,这会有所帮助。

我被告知我已经被告知我认为在某处有一个线程安全问题,你能看到它是否能找到它,甚至没有被告知代码的意图。那不太有用。

我发现,当让其他人快速完成一个项目时,花一两个小时的时间向他们展示绳索并告诉他们不同的组件做什么以及我们使用什么外部工具可以节省时间问题。多数民众赞成我们如何处理我们4人团队一夜之间的开发人数增加一倍,我认为这有很大帮助。

答案 8 :(得分:2)

这实际上取决于新手在软件方面的经验,项目所涉及的领域(行业)/技术经验。

我做的第一件事就是为那个人指定一名教练,以照顾入职:

  • 向他解释这个项目(总体来说 的东西)
  • 设置文档目录 与项目有关的
  • 目前的建筑材料。

然后,根据经验,我可能会让这个人独立地解决新功能(不是关键功能,而是一些重要性较低的功能),或者让他在开始时与他的教练进行配对编程模式,然后让他参与“富有成效”的任务。

我通常不会使用错误修复来实施项目,因为在修复错误时引入副作用的风险远远高于已经在项目中的其他人。如果我别无选择,我会让他做出修正,但在提交之前,先让其他人审查他的修改。

答案 9 :(得分:2)

  • 开始熟悉项目文件结构
  • 阅读开发人员文档(如果有的话)
  • 分配一些基本问题,探索,修复,冲洗,重复;)
  • 找一个友好的人(唉,并非所有的开发人员都很友好)来引用问题
  • 一路上,开始检查数据库模式(如果有db后端)
  • 随着您的进步,尝试解决更复杂的问题
  • 开始参与公开讨论,表达你的想法

答案 10 :(得分:2)

在将它们引入到体系结构和文档之后,为新手提供一些项目。在以下主题下选择项目:

  • 项目应小而合理
  • 项目应该为“大局”做出贡献
  • 项目应该处理主项目的问题

通过这种方式,人们可以与您的主项目取得联系,并且必须学习基础(例如使用框架XYZ)。新人获得了成功的动力,这非常重要。因此,他们得到激励而不是无聊。有动力的工人是好工人; - )

答案 11 :(得分:2)

我刚开始一份新工作并跳进了一个新项目。对我来说最有帮助的是给予低调的水果任务。这些是熟悉系统的人可以在几分钟内完成的事情。它们并不难编程,但它们迫使我对系统更加熟悉。好的想法是与项目结构相关的任何事情,如自动化流程或导入数据。

答案 12 :(得分:2)

你实际上在这里提出了两个不同的问题:“团队可以做些什么来帮助新成员?”和“新成员可以做些什么来帮助团队?”

在回答前者时,我们会对编程进行配对。从一开始,新人正在和其他人一样工作(好吧,好吧,选择项目,但仍然是真正的迭代工作),但是与团队中经验丰富的成员合作。而且不是一直都是同一个人;我们经常尝试交换配对。

它让经验丰富的开发人员放慢了一段时间(不得不提供背景,绘制图表,让新人拥有键盘并犯错误),但是没有更快的方法让新人加快速度成熟的团队成员,能够在任何需要的地方进行筹码。

答案 13 :(得分:2)

  

问:当你在一个正在运行的项目中,如何   你有没有新人......要知道   代码和项目文化很快   他们能快速赶上来吗?

我们为新员工设定了两个目标。

  1. 建立熟悉度:新人在第一天参加2次代码审核。他们会见开发人员,查看项目代码,并可以提出问题。继续将它们包括在代码审查中,直到他们选择停止。

  2. 构建群组尊重:如果新人博客,使用StackOverflow或贡献公共项目,请链接到他们的个人资料或工作。如果您有项目维基,请向他们展示如何发布问题以及何时可以获得答案。

  3. 前三天,两个人(通常是1个经理和1个开发人员)与他们共进午餐。这使得外向的人可以获得他们的体验,并让保留的人吸收一些文化,而不必强迫他们进行一对一的对话。

      问:作为一个笨蛋,你是如何开始的?   一个专案?你能做些什么呢?   更有效?

    如果可能的话,我会开始在午餐室,会议室或其他公共场所工作。我在桌子上放了一些不寻常的东西,所以人们会问这个问题。谈话激发了包容性,这是在新工作中尽早实现的难题。一旦你对人们有所了解,技术方面就会变得更容易。

答案 14 :(得分:1)

首先了解环境,了解团队的任务处理方法以及解决问题的方法,这将告诉您如何对现有代码进行反向工程以修复缺陷。有文件作为参考只有当你被困住,或者找到你正在寻找的代码时,我肯定会建议你在开始之前了解架构和业务规则,如果你有足够的开发经验,你如果您知道自己在做什么,将能够更快地获取代码并修复缺陷。

希望这会有所帮助。

此致

答案 15 :(得分:1)

在IT部门,总是有可能在需要时将新人添加到正在运行的项目中。

  1. 从所有可用来源收集关于项目的详细信息
  2. 尽力让现有人解释业务需求。并试图让他成为一名导师。
  3. 既然您已经掌握了源代码,那么您可以深入了解它所使用的所有技术。
  4. 花费(额外)时间学习你觉得困难的必要技术(例如:Ajax,jquery等)。
  5. 不要阅读整个源代码,而是快速启动您应该使用的模块。
  6. 在您需要时学习其余代码。
  7. 最初的日子肯定会很难。但是一旦你开始,事情就会变得稳定。