Project management 一个有经验的程序员需要多长时间才能精通一种新技术/语言?

Project management 一个有经验的程序员需要多长时间才能精通一种新技术/语言?,project-management,Project Management,我意识到这个问题可能会有很多“视情况而定”,但我还是很好奇。当你雇用一个新的(但有经验的)团队成员,而他们在你使用的技术方面没有专业知识,但知道类似的事情时,你会为他们“上网”安排多少时间 我说的是一些相当实质性的东西,比如一种语言,或者一个有很多做事方式的框架/产品。显然,许多库开始使用只需很少的时间 根据我自己的经验(10年的经验,包括相当数量的咨询,所以学习新技术是这门课程的标准),我需要大约三到六个月的经验才能精通一项新的技术。大约一年的时间,我感觉自己已经接近了专家水平,我对所有的基础

我意识到这个问题可能会有很多“视情况而定”,但我还是很好奇。当你雇用一个新的(但有经验的)团队成员,而他们在你使用的技术方面没有专业知识,但知道类似的事情时,你会为他们“上网”安排多少时间

我说的是一些相当实质性的东西,比如一种语言,或者一个有很多做事方式的框架/产品。显然,许多库开始使用只需很少的时间

根据我自己的经验(10年的经验,包括相当数量的咨询,所以学习新技术是这门课程的标准),我需要大约三到六个月的经验才能精通一项新的技术。大约一年的时间,我感觉自己已经接近了专家水平,我对所有的基础知识和中等难度的问题都了如指掌,还有一些领域我也非常了解


你在项目中做什么?你如何安排学习时间

您希望得到这个答案,但这完全取决于个人/程序员。我曾经遇到过这样一种情况,两个同样熟练的程序员必须学习一些新的东西,一个马上就学会了,而另一个花了一些时间。以前接触过其他技术也是一个因素

就我个人而言,对于一些新事物,我会安排时间,在每次有机会的时候学习它的一切。大约需要6个月才能完全舒适


希望这能有所帮助。

我不认为语言本身是个问题,而是它所包含的编程范式

e、 今年早些时候,我从Java的角度尝试了C#。这一切都很简单。不过,我现在正在尝试Scala。由于功能方面的原因,我希望在更长的时间内学习和磨练我的技能(你可以用命令式的方式编写Scala,但你不能利用它的优势来完成这项工作)


我怀疑当(比如)从关系数据库迁移到OO数据库,而不是MS-SQL/Oracle迁移时,同样的情况也会发生。

这主要取决于语言与他们已经知道的语言的相似程度,以及个人获取新事物的能力。类似C++语言、java语言和C语言之间的移动非常容易。类似地,从Win32到MFC再到.net也比从MFC到MacOS容易

从C到C++的迁移可能需要更长的时间,因为程序员必须学习面向对象的方法学。从C++到Perl或ML的移动可能要花费很多时间!p> 然而,你通常不需要知道太多就可以开始了。从C++到C语言的移动可以在几个小时内完成(主要区别),然后你就可以开始编写(或者修改现有的)代码。这是因为(a)您已经知道如何进行OO编程,(b)95%的语法是相同的

但主要取决于你对“精通”的定义。使用类似的语言,您将能够在几天内编写出好的代码(算法通常与failry语言无关),但通常需要数月或数年时间才能真正“精通”语言或大型库

因此,根据经验,我会说,在几周内“达到(合理的)速度”,但你可能会在他们的代码中看到愚蠢的“错误”或低效,持续数月/数年,直到他们学会了语言的所有小技巧

对于学习OO的人来说,通常需要几天的时间来获得基本概念,然后在大约2年的时候,一个顿悟的时刻出现了,程序员突然意识到他们真正“理解”了OO。(我猜这是当你的大脑开始流利地用OO进行思考,而不是试图按程序进行思考,然后将其转化为OO aproach时)

我说的是一些相当重要的东西,比如一种语言,或者一种框架/产品 这有很多方法。显然,许多库开始使用只需很少的时间

当你雇用一个新的(但有经验的)团队成员,而他们在技术方面没有你的专长时 正在使用,但知道一些类似的东西,你为他们“上网”预算了多少时间

二十三个工作日六小时四十三分钟十七点九秒

你在项目中做什么?你如何安排学习时间

我觉得这些问题更好

尝试在新技术中找到一个简单的项目,并让他们这样做。如果可能的话,让员工先修复bug,然后添加一些小功能


学习是渐进的。一个人可以在一生中继续学习细节,比如说C++语法。当一个人是某个主题的“专家”时,这仅仅意味着在该主题中学习更多知识所获得的收益越来越小。

这不仅仅取决于所涉及的个人——关键取决于具体的技术以及个人的背景;某些技术,特别是语言,更难进入。我见过世界级的java大师,以前接触C++的次数不多,需要六个月,比如说,大约是在C++中,完全是有生产力的。反之亦然(世界级的C++ Guru,以前接触java的零)我已经看到大约2-3个月;同样,对于以前没有接触过动态语言的经验丰富、技术娴熟的程序员来说,使用Python完全高效可能需要3-4周的时间。在每一种情况下,我都在谈论100%的全职参与相关技术,由一名在技能和经验方面排名世界前1%的程序员,在一个团队中,有其他几名具有这种能力的程序员,他们也是使用特定语言的大师

缩短时间的因素是先前接触“相似”语言/技术,例如C中的坚实背景使得C++学习速度稍快,背景可靠。