我们下周开始实习生。他拥有计算机科学学位,但在.NET或SQL Server方面没有真正的开发经验。我们想让他达到他在C#和SQL Server中至少半生产力的程度。对于如何最好地开始在C#和SQL Server中培训他,你们中谁可能有什么建议?我想为他和我们做一个很好的经历。
答案 0 :(得分:10)
我对此有一些最佳体验(从两个角度来看)是一种双重方法。
首先 - 产品培训。向新开发人员展示他将要处理的产品是什么以及从最终用户的角度来看它的作用。它有助于为代码内置的代码构建上下文。这是一件经常被忽视的事情;但是,它有很大帮助,因为它还有助于新开发人员更有信心测试他或她正在处理的代码,而不仅仅是绊倒代码。
第二 - 结对编程/阴影/指导。让开发人员在一对编程情况下与一个更有经验的人一起工作,并带有轻微的指导方面。这将有助于衡量开发人员的真实技能,并尽早为团队的习惯提供纠正措施。它还为他们提供了一种学习的方式,而不用担心有问题而且不是那种方式打断退伍军人。
完成后,开始为新人提供较小的任务或更容易的错误并从那里建立起来。
答案 1 :(得分:3)
作为为两家不同公司实习的人说,让他加快速度的最佳方法之一就是给他一个小型宠物项目,由导师监督他的进展。这将使他开始熟悉他将与之合作的技术,而导师可以指导他的方式来教他公司的实践和程序。
在他熟悉C#和SQL Server之后,你可以开始让他做真正的开发工作了。通过轻微的错误修复启动他,然后提高难度,直到你可以称他为一个成熟的开发人员。运气好的话,你甚至不会在一两个月内称他为实习生。
答案 2 :(得分:2)
答案 3 :(得分:1)
如果您有任何“宠物”类型的项目(您的公司无法真正证明花时间参与的项目,但会有所帮助且相当简单),我会将它们交给他们。
这是开始学习材料的一种好方法,因为它是实际工作(学习某些东西总是更难,并且记住材料,如果它只是一个示例程序而不是实际有用的东西)。学习如何使用谷歌搜索问题/教程,并通过提问来建立与团队的关系,这将是一个良好的开端。从那里开始,他们应该有足够的背景来开始实际应用。
如果宠物项目足够小,您可能希望让他们在实习结束时重新访问应用程序以重新编写/改进应用程序。他们可能会对他们在实习期间所获得的内容感到惊讶
答案 4 :(得分:1)
首先确定一些易于中等复杂性的领域,并清楚地确定每项任务的目标是什么。让他们了解业务/领域,让他们了解事物如何融合在一起。任务完成后,让他与全职开发人员一起审核,以确保其符合要求,并确定可以使用更好实践的任何薄弱环节(这提供了指导/教育机会)。
你不想要的是将它们编码给一堆东西,然后发现代码不符合标准。至于数据库,要小心。限制权限(即woops,我并不是指DELETE
/ DROP
那个!)或者希望你有一个专门的开发者环境,在这种情况下,糟糕的事情并不是灾难性的恢复。在将工作重新纳入实际环境之前,可能是一个带有示例数据库的侧面项目。
答案 5 :(得分:1)
已经提出了一些很好的建议,但我要补充一点,让他参与其他开发人员的代码审查。他可以通过倾听来学习很多人通过他们的代码互相学习。
除了从您的生产数据库中选择之外,不要授予他做任何事情的权利。让他做所有sql编码和脚本更改,并让他将它们添加到您的源代码管理。确保编码审查他所做的一切。
可能最重要的是给他一个或多个真正的任务来完成(同时确保花费大量时间监视他正在做的事情,以防止他走错路径太远)。当你知道自己被赋予了一项繁忙工作而没有人打算实际执行的任务时,你就不会学到太多东西。
如果你想要转移到一个环境,你有更多的自动化测试但是没有时间为现有代码编写测试,那么你可以让他设置其中一些。这样做是有用的,风险相对较低,当真正的代码在他的一个测试中死亡并且他发现了一个其他人都不知道的错误时,会有一种真正意义上的共同感觉。这也需要他开始考虑业务需求以及如何阅读现有代码和测试以及许多其他概念。
对于实习生来说,学习使用源代码控制并进行测试并与他人合作是学习的关键技能。
答案 6 :(得分:1)
对于初级开发人员,我希望尽快让他们融入其中。我把我的初级开发人员变成了我们团队的配置和服务器设置大师。他是让我们的应用程序启动并运行的最佳人选。
我们对他做的最好的事情之一是让他准确记录如何启动和运行开发环境。他必须学习所有这些来记录它,现在我们在新人加入团队时使用他的文件。
也许我们只是幸运,但我已经取得了巨大成功,让他进入代码。我们根本不会溺爱他。实践是完美的。那和频繁的代码审查等:))
答案 7 :(得分:0)
我们团队实习约6个月。我雇用他,这是真正的良好的体验。当我采访他时你完全回答所有的CS问题,但当他开始与我们合作时,它是可怕的所有最糟糕的做法 - 提交破解的代码,锁定svn文件,复制每个地方和所有内容,命名空间名称喜欢 Classes ,长非常长的方法,里面有巨大的箭头反模式。 最后我见过最好的c#代码:
bool b = DoSomeThing();
switch(b)
{
case true:
Do();
break;
case false:
DonotDo();
break;
default: //!!!
}
我唯一的建议是 控制他 。
答案 8 :(得分:0)
让他为您现有的中等规模项目的代码库创建一个UML静态结构图。这将(1)迫使他对至少一个项目有一个高层次的结构性理解,(2)让他阅读别人的代码,这是实习生以前从未做过的事情。