2010-01-29 147 views
11

下周开始实习。他拥有计算机科学学位,但在.NET或SQL Server中没有真正的开发经验。我们希望让他达到在C#和SQL Server中至少是半生产率的地步。关于如何最好地在C#和SQL Server中开始培训他,您可能会有什么建议,经历过这些?我想为他和我们创造一个良好的体验。实习生培训 - 最佳方法?

+4

社区Wiki? – 2010-01-29 15:22:41

回答

10

我从这两方面得到的一些最好的体验是两种方法。

第一次 - 产品培训。向新开发人员展示他将从事的产品是什么以及从最终用户的角度出发。它有助于为背后的代码构建上下文。这是一件通常被忽视的东西;然而,它非常有帮助,因为它还可以帮助新开发人员更加自信地测试他或她正在处理的代码,而不是绊倒代码。

二 - 结对编程/阴影/辅导。让开发人员与一位更有经验的人一起工作,在一对轻松的指导方面进行编程。这将有助于衡量开发者的真实技能,并及早为团队的习惯提供纠正措施。它还为他们学习提供了一种方式,而不用担心用问题打断退伍军人,而不是那样。

一旦完成,开始喂养新人更小的任务或更容易的错误,并从那里建立起来。

+0

完成这些事情绝对是一个好主意,因为这让实习生感到他与团队的其他成员有牵连。但是,只有当他具有C#和SQL的一些基本知识时,这才会起作用,根据问题他似乎没有这方面的知识。否则,他不会完全理解配对/代码评审期间向他显示的代码。所以在我看来,首先让他加快一个宠物项目,然后使用你的方法。 – 2010-01-29 15:28:49

+0

@tomlog这是真的;然而,很难完全假定实习生在问题中的知识范围。我见过的大多数CS学位都有基本的编程和sql类,所以我假设他有一些基础知识,在这些知识中,辅导/配对不仅可以帮助他获得知识,还可以将他塑造成团队标准。如果实习生有0门编程知识,那么我会严重质疑当时的CS学位。 – JamesEggers 2010-01-29 15:38:41

3

说到有人谁是实习了两个不同的公司,最好的方式之一,让他加快速度是给他的导师一个小宠物的项目来监督他的进步。这将使他开始熟悉他将与之合作的技术,而导师可以引导他以教他公司惯例和程序的方式。

后他得到足够熟悉C#和SQL Server,你就可以开始让他做真正的开发工作。在轻微的错误修复之后,让他从小处着手,然后提高难度,直到你可以称他为一名成熟的开发人员。幸运的是,你甚至不会在一两个月内给他打电话给实习生。

1

如果您有任何“宠物”类型的项目(你的公司永远无法真正证明上花费时间,但将是有益的和非常简单的项目),我把那个给他们。

这将是一个开始学习材料的好方法,因为它是实际的工作(学习东西总是很难,记住材料,如果它只是一个示例程序而不是真正有用的东西)。学习如何在问题/教程中使用谷歌以及通过提问来与您的团队建立关系将是一个良好开端。从那里开始,他们应该有足够的背景来开始处理实际应用。

如果宠物项目足够小,您可能希望让他们再次访问该应用程序向实习结束时重新写/提高应用程序。他们很可能是在他们已经在实习

1

启动的过程中捡起什么感到惊讶识别容易一些领域中的复杂性和清楚地确定每个任务的目标是什么。给他们一个商业/领域的感觉,让他们了解如何融合在一起。一旦任务完成,让他与全职开发人员一起审查它,以确保它符合要求并找出可以使用更好实践的任何薄弱环节(这提供了指导/教育机会)。

你不想要的是将它们发送给一堆事物,然后发现代码不符合标准。至于数据库,要小心。限制权限(即woops,我并不是指DELETE/DROP那!),或者希望你有一个专门的开发环境,在这个环境中,严重的事情不会从破坏中恢复过来。也许是一个带有样本数据库的副项目,在将工作结合到实际环境中之前进行测试。

0

我们在我们的团队中有一个实习生约6个月。我雇用他,这真的是良好的经验。当我采访他时,你的答案完全是CS问题,但是当他开始与我们合作时,它是可怕的所有最坏的做法 - 提交破损的代码,锁定svn文件,copypasting每个地方和所有内容,命名空间,长长方法与巨大的箭头头反模式内。我见过 终于最好的C#代码:

bool b = DoSomeThing(); 
switch(b) 
{ 
case true: 
    Do(); 
    break; 
case false: 
    DonotDo(); 
    break; 
default: //!!! 
} 

我唯一的建议是控制他

+1

ahahahhahaahahhaahhaah – 2011-01-13 22:53:11

+0

+1对于DonotDo! – abhilash 2011-04-17 09:47:05

1

已经有一些很好的建议,但我会补充一点,让他坐在其他开发者的代码评论上。他可以从倾听他人代码的过程中学到很多东西。

除了从您的生产数据库中选择以外,不要授予他执行任何操作的权利。让他做脚本中的所有sql编码和更改,并让他将它们添加到源代码管理中。确保代码审查他所做的一切。

虽然可能最重要的是给他一个或多个真正的任务来完成(同时确保花费大量的时间来监视他正在做的事情,以防止他在错误的道路上走得太远)。当你知道你已经完成了一项任务繁重的任务,而且没有人打算实际执行任务时,你的学习就不会太多。

如果您一直想要转移到您有更多自动化测试但尚未能找到时间为现有代码编写测试的环境,那么您可以设置它来完成其中的一部分。这是一个有用的做法,风险相对较低,当真实代码在他的一次测试中死亡,并且他发现一个没有人知道的错误时,会产生真正意义上的帮助。这也要求他开始了解业务需求,以及如何阅读现有的代码和测试以及其他许多概念。

对于一名实习生来说,学习使用源代码控制,测试和与他人合作是学习的关键技能。

2
  • 小项目,以帮助他睡觉。
  • 让他审查其他开发人员的代码项目
  • 点他到内部维基(如果使用)
  • 在线培训或2-5天的微软培训课程(预算申请中)
  • 外的IT部门,确保他建立了自己的业务如何运作/功能知识
  • 确保他获得一些好的书籍,以及互联网资源
  • 让他感觉工作环境舒适,所以,如果他得到卡住了他会问别人的帮助。 (IT开发人员可能非常低调,有时需要帮助)
+0

好想法 - 谢谢。 – 2010-01-29 20:19:16

+1

“床在”对不起? – 2011-01-13 22:51:14

1

对于初级开发人员,我希望尽快让他们参与组合。我把我的初级开发人员变成了我们团队的配置和服务器设置主管。他是让我们的应用程序启动并运行的最佳人选。

一个我们跟他做的最好的事情是让他确切地证明了如何让开发环境和运行。他必须学习所有关于它的文件,现在我们在新人加入团队时使用他的文档。

也许我们只是幸运,但我已经取得了巨大的成功,只是让他进入代码。我们根本没有真正溺爱他。实践使得完美。这和频繁的代码审查等:)

0

让他创建UML静态结构图对于你现有的中等规模的项目之一的代码库。这将(1)迫使他对至少一个项目有一个高层次的结构性理解,并且(2)让他阅读别人的代码,这是实习生以前从未做过的事情。

+0

这是这里最好的答案 – 2011-01-13 22:53:42