Answers:
这取决于。
我有一个倾向于只使用一种语言的朋友,所以如果您认为他是“程序员A”,那么他有1年的使用该语言的经验,有5次。
不同的语言可以让您做不同的事情。我特别喜欢的一篇文章被保罗·格雷厄姆(Paul Graham )称为“ 击败平均水平 ”。在其中,他试图说服人们学习Lisp,但是他也提出了一些非常有用的观点:
程序员非常喜欢他们喜欢的语言,我不想伤害任何人的感觉,因此为了解释这一点,我将使用一种称为Blub的假设语言。Blub恰好位于抽象连续性的中间。它不是最强大的语言,但是比Cobol或机器语言更强大。
实际上,我们假设的Blub程序员不会使用它们中的任何一个。当然,他不会用机器语言编程。这就是编译器的用途。至于Cobol,他不知道任何人能用它完成任何事情。它甚至没有x(您选择的Blub功能)。
只要我们假设的Blub程序员低头查看电源连续性,他就知道自己在低头。语言不如Blub强大,显然不那么强大,因为它们缺少了他惯用的某些功能。但是,当我们假想的Blub程序员朝着另一个方向看时,就可以看到整个能力,他并没有意识到自己在看。他看到的只是奇怪的语言。他可能认为它们的功能与Blub相当,但同时也引入了其他所有毛茸茸的东西。Blub对他来说足够好,因为他在Blub中思考。
但是,当我们从使用更高语言的任何一种语言切换到程序员的观点时,我们发现他反过来看不起Blub。如何在Blub中完成任何工作?它甚至没有y。
通常,我的建议是学习一种以上的语言,并了解什么是语言的优点和缺点。
当然,在一种语言上拥有多年经验的开发人员将对该语言的核心库和特质有更好的了解。如果这些语言包含相同的范例(命令式与功能式),那么除了学习该语言之外,他们应该再没有其他麻烦。
选择一种新语言的最大困难来自尝试从C#切换到Erlang,因为它不仅代表了一种新的语法,而且还代表了一种新的编程思维方式。
语言不是问题。您可以在几天之内学习整个语言。需要花费更多时间的是约定,API和各种第三方框架。当人们要求五年的X时,他们并不在乎语言,他们希望拥有在解决该语言和使用该语言方面有很多经验的人,这样他们就不必为学习上的任何费用付出代价。
专长和刻意的实践。
如果您不刻意练习,则不会获得专业知识。(您必须检查并纠正错误,练习自己的弱项,并让专家告诉您您在做什么错也有帮助。)
如果您不尝试改进,那么您可以永远成为新手!
经过一万小时的精心练习,您将获得专业知识。(来自教育/培训的发现遍布整个网络。)
如果您的程序员A没有刻意练习,他们永远不会变得更好。
如果您的程序员B没刻意练习,他们永远不会变得更好。
同一项研究的另一个发现:如果我有15000个小时,而你有10000个,并且我一直在练习,那么你也一样,你永远不会比我更好。
知道两种语言可能会使B成为更好的程序员(受实践规则约束)。
我同意语言是语言,概念是概念。
我的问题是,如今有大量的程序员,如果没有成熟的IDE,他们根本无法编程。他们实际上不是程序员,但实际上更像设计师。
我从个人经验中知道,很多人被笨拙的Microsoft开发环境所吸引。他们将文本框放到屏幕上,然后使用向导设置属性并从数据库图片中拖动数据,这不是错误的做法,但是如果他们所做的全部是设置基本的相等性测试,那么他们是否真的是任何语言的编码人员?
这些人永远都无法接受他们学到的概念并将其应用于另一种语言。
当我采访人们时,我对他们如何进行开发以及使用什么框架更加感兴趣。我喜欢问诸如“如何编写事件处理程序?”,“如何将数据准确地放入数据库中?”甚至“单击该按钮时如何将其变成紫色?”之类的问题。这将很快淘汰设计人员,并离开程序员。我发现用我选择的语言实际编程3年或4年就可以满足我的需求。
只是另一种意见,
塔尔
“ X语言/平台经验的年限”在很大程度上是一种招聘病理学。
它具有开放的解释能力,并且乍一看没有什么用处。如前所述,多年的经验神话是一本好书。
同样,至关重要的是,“经验年限”本身的度量可能非常不准确。这是我当前工作的一个示例:我的主要任务是开发和维护Java Web应用程序。但是,它运行在后端,即MFC / C ++ / SQL Server。因此,我几乎每天都在处理C ++代码。但是-这种C ++经验是相对肤浅且面向维护的,并且我不再真正在MFC / C ++中从头开始编写整个大型组件或程序(尽管我以前曾担任过角色)。
我是否仍可以将最近5年称为“ 5年C ++经验”?也许。也许不会。根据我想出售它以确保特定角色的方式,我可以毫不掩饰地轻易夸大它,或者我可以承认这并不是5年的“ C ++实际工作经验”。:)我敢肯定,有很多情况同样会出现这种“测量不准确”的问题。经验的深度会严重影响体验的质量。因此,“花费X花费在C ++上的时间”本身并没有多大意义。