Fast-track to a new language for an experienced programmer

2025-06-07

帮助经验丰富的程序员快速掌握一门新语言

好的,所以你是一名软件开发人员/工程师/程序员,不管你怎么称呼自己,你在源源不断的任务之间有一些沉思的停顿……

“是的,我可以写一些相当不错的 Java/Python/……(填写你最喜欢的)但那又怎样?这些东西越来越无聊了!我需要一些挑战!我得学一些新技术!”

或许你正在网上搜索“20XX 年最值得学习的编程语言”,查看 TIOBE 指数,比较这些语言的薪资水平等等。你也经历过这些,也都经历过。我不会打击你,恰恰相反,我会给你一些建议,引导你走这条路。


动机

首先,确保你清楚自己为什么要这么做。是为了满足你的好奇心吗?还是你觉得自己的技能已经过时了?你真的非常非常想尝试一下函数式编程?或许你甚至是一个实用主义者,只想拥有最适合自己工作的工具 :)

无论你的理由是什么,记住它们,或者把它们写在便签或其他东西上。你需要它们来指引你,应对未来纷繁复杂的选择。比如,你可能会遇到一个最新的酷炫项目,它能做到 C++ 的所有功能,甚至更好,带来许多新功能,解决各种各样的问题。他们也可能恰好忘记提及它会带来的各种问题(你知道……你不知道自己不知道什么)。

各种有趣的语言和技术乍一看可能非常诱人,但要做好准备,记住你最初的动机是什么。要么坚持下去,要么就更新一下(毕竟我们不是敏捷的吗?)。一定要有一个大致的方向并坚持下去,否则你学习新语言的崇高旅程可能会像那个失败的项目一样以失败告终。如果你在任何规模的公司工作过一段时间,你就会明白我的意思。

选择正确的一个

这与您的原因和期望密切相关。快速浏览一下您感兴趣的几个项目。查看它们的主页。浏览入门教程/快速入门指南。如果您想查看实际数据,请查看它们在 Google Trends 和 TIOBE 上的受欢迎程度。在 StackOverflow 和 GitHub 上筛选它们,了解社区的现状和发展动力。

经过快速研究后,理想情况下,你最终会确定下一步要学习的语言。我们都知道这不会是最后一门语言,所以如果你拿不定主意,那就掷骰子吧。

好的,明白了,下一步是什么?

通过观察学习

实际操作请遵循快速入门指南或教程。观看 YouTube 上的视频。对于某些语言,例如Go,您无需安装任何东西即可快速试用。您可以在浏览器中在线操作,也可以访问语言创建者或第三方提供的网站(例如编程挑战、教程网站等)。

至此,你应该对这门语言的学习体验有所了解,并与你之前使用过的语言进行比较。如有任何疑问,请随时回顾之前的步骤,以确保符合你的理由和期望,并且你确实喜欢自己的选择。

通过实践学习

显然,不实际操作就无法学会用一门语言编程。以下是一些入门技巧。

  • 使用编程挑战网站,例如CodilityHackerRank或类似的网站。这有两个好处。首先,你有一个在线环境可以练习(无需投入时间设置合适的本地环境)。其次,你有实际的问题需要解决,这些问题有合适的规范、已经定义好的测试等等。这是一个巨大的好处,因为你不仅可以将语法一点一点地融入你的“肌肉记忆”中,还可以训练和更新你的算法思维(这永远不会有坏处)。是的,有些在线编辑器不太好(尽管我每次检查它们都在进步),如果这对你来说是一个障碍,只需设置你的开发环境,使用ProjectEuler并自己为每个问题搭建脚手架。

  • 创造一些东西,无论有用还是无用,都无关紧要。编程挑战赛没有涵盖很多东西——数据库、API、套接字以及你每天处理的其他现实世界的东西。所以,在你的算法思维达到一定水平后,你应该尝试在一些实际项目中使用该语言。一些能让你持续投入并为你提供急需的练习和经验的项目。

  • 用你刚学到的语言参与开源项目,回馈社区。总有人需要帮助,所以如果你实在想不出自己能做什么,何不写一些 PR,让世界变得更美好?看看这份开源项目列表(按语言分类),看看它们正在寻求外部帮助。

专业使用

这才是真正的关键。除非你在一个(最好是更大的)项目中使用了这门语言一段时间,否则你无法真正理解它的复杂性和精髓。因此,一旦你感到适应了,或者如果你是一个完美主义者,那就更早一些,尝试将你辛苦学到的知识运用到任何有意义的地方。但请确保你不是那种拿着大锤子,把所有东西都看成钉子的人 :)


似曾相识

时间流逝,几个月、一年甚至更久……你已经用这门新语言完成了一个或几个项目。你知道它运行得如何,也知道自己喜欢什么,不喜欢什么……

如果您和我一样是个好奇的人,那么您一定会问出与本文相同的问题。

下一步是什么?

文章来源:https://dev.to/ivan/fast-track-to-a-new-language-for-an-experienced-programmer-5h1l
PREV
在代码中隐藏 API 密钥
NEXT
在 React 项目中设置 Jest 和 React 测试库 | 分步指南