聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

“掌握”一门编程语言,是不可能的

2023-04-17 11:44 浏览: 791627 次 我要评论(0 条) 字号:

总是会在招聘信息上看见一些要求:熟练掌握 Python,熟练掌握 Java,熟练掌握 C……但你是否想过,到底要怎样才算“掌握”?

原文链接:https://rodneylafuente.com/jekyll/update/2023/03/29/you-can%27t-know-a-programming-language.html

未经授权,禁止转载!

者 | Rodney Lafuente Mercado
译者 | 弯月    责编 | 郑丽媛
出品 | CSDN(ID:CSDNnews)

我看过很多招聘启事都将编程语言直接放在职位名称中,或将编程语言作为重要要求,放入职位描述的某个地方——为,这种做法是程序员与其开发能力之间关系的误解而导致的。

无论程序员在工作中将使用何种语言,都不应该有“Java 开发人员”或“React 开发人员”这样的说法,应该只有“软件开发人员”。程序员对编程语言的了解程度不能通过标签说明,我觉得我们根本不可能真正“掌握”一门编程语言。


这种想法不公平

从某种意义上说,编程语言之间没有严格的切分,并不足以给每种编程语言都设置一个职位。如果非要根据不同的编程工作区分技术,那么也应该从更高层面来考虑,或者应该根据程序员与硬件的关系来定义。例如底层系统开发、算机网发以及通脚本处理数据。

即使在更广泛的类别上,需要经验的想法也往往是在其他地方出现,因此很难说能胜任某个角色的人却无法胜任其他角色,比如算法复杂度问题(只要不是直接调用库),比如并发进程,以及大量人员同时开发系统所带来的问题(如版本控制)。这种编程工作的特点就是,无论如何定义职位,即使是完全无关的职位之间,也不会有太大差异。而这个特点在编程语言的底层划分上尤为明显。

对于这个看法,最常见的回应是,无论使用不同语言解决问题是否存在概念上的相似性,探索一种语言、甚至是一种语言的框架(例如 React)本身就很复杂也很耗时,招聘程序员的公司需要承担这笔费用。所以他们宁愿雇用一个曾在某个项目中使用过 Kotlin 的程序员,也不愿雇用一个更有能力但从未接触过这门语言的程序员。

这种想法对程序员不公平,对公司来说也不公平。虽然遇到不熟悉的语言,这些程序员需要花时间阅读代码和熟悉语言,但如果他们有更好的解决问题的能力,这部分时间完全能找补回来。因此,从长远来看,他们对公司的价值更高,而且这段时间也并不长,我估计最多一年。


在软件领域,所有问题都是创造性的而非描述性

其实,这种观点之所以如此流行,原因不难理解。人类解决软件问题的能力不像在物理世界中解决问题那样具有专业性,其专业程度就像是每家每户的家用电器与电力系统中每个部件之间的差别一样。

例如,医生需要花费数年时间专注研究人体内的一个特定器官,但这些角色解决的问题都是描述性的,而不是创造性的。医生最有价值的能力是他们对人体的掌握程序,就像汽车修理工对汽车工作原理的了解一样。他们面临的问题可以直接用这些知识来处理,他们解决问题的能力与他们拥有的该领域知识量直接成正比——然而,软件行业并不存在这种正比关系。

软件开发能力并不会与某种语言的熟悉程度直接挂钩,因为语言是一种工具,而不是他们正在努力解决的问题。程序员需要解决更大的问题,即在有限时间内只能获得有限的信息,以及怎样利用这些信息实现特定的结果。这不是遇到问题时仅凭记忆就能解决的。

当然,并非所有与物理世界打交道的职业都有相同的特征,即一个人所拥有的物理对象知识直接关系到解决问题的能力。比如,建筑师和艺术家了解建筑材料、环境和画布的一切,但不一定就能表现出更高的水准。这是因为他们面临的问题也是创造性的,而不是描述性的。

也就是说,为了实现想要完成的目标,他们不能参考已有的成果,而是需要参考宇宙设置的自然限制。他们解决问题不是通过理解出现问题的对象,而是理解可以采取行动的领域。在软件领域,所有问题都是创造性的而非描述性的,且这个领域是无限的。

问题本身就是自然,特别是在软件中,而自然就是数学,而非物理。


我知道编程语言,但我一个也没有“掌握”


经常有人问我“掌握”了哪门编程语言,我只能说所有语言我都知道,但我一个也没有掌握。

可能我只需要一些文档和一些时间,就可以像其他人一样“流利”地使用手头的语言。但编程语言不是自然语言,不能通过流利度来衡量。如果非要用流利度来衡量编程语言,那么应该指的是一个人达到可以熟练使用语言的复杂细节(例如语法)所需的时间。而这完全不同于自然语言:在自然口语中,流利度指的是对底层结构的理解,其变化范围远大于编程语言。从我们向计算机传达思想的方式来考虑,计算机的同质化远高于人类。

通过对某种语言的掌握程度来衡量程序员的人,往往对软件开发技术不太了解,但恰好他们就是许多组织中负责招聘程序员的人。让每个人都更加了解软件与其他类型工作的区别,这才是惠人惠己。

超越 ChatGPT ?AutoGPT 爆火,两周斩获 50k+ Star:无需人类插手,自主完成任务!
☞GPT-4 让 Python 程序实现自修复 Bug,国外小哥将工具命名为“金刚狼”,并开源!

优酷回应非会员收看3000秒广告;亚马逊推出Titan大语言模型;Android 14首个Beta版本释出 | 极客头条



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复