“每年至少学习一门新语言”是个糟糕的建议
学习一门新语言需要很长时间。除非你的工作(或对你来说很重要的个人项目)需要它,否则学习新语言是一项糟糕的投资。在这篇文章中,我将向你解释为什么“每年至少学习一门新语言”是一个糟糕的建议,以及你应该怎么做。
“每年至少学习一门新语言”从何而来?
据我所知,这个想法是由 Andrew Hunt 和 David Thomas 在他们的书《实用程序员》(顺便说一句,这是一本很棒的书)中推广的。
在关于投资知识的部分,他们写道:
每年至少学习一门新语言。不同的语言以不同的方式解决相同的问题。通过学习几种不同的方法,可以帮助你拓宽思维,避免陷入僵局。
引用的这段文字是程序员提升知识水平的推荐清单中的第一条。而且,从本书的语境来看,这条推荐也算合理。
然而,多年来,人们已经剥离了这一背景并将其变成了这样:“每年至少学习一门新语言,否则你就不是一个好的程序员。”
我在这篇文章中想讨论的就是这个扭曲的版本。
为什么这是糟糕的建议
程序员,尤其是初学者和初级开发人员,都把这条建议牢记在心。他们在网上四处寻找下一步该学哪种语言,并为自己掌握的语言不够多而感到压力。但这只会分散注意力,损害他人和成果。让我来告诉你原因。
它设定了不可能的期望
你不仅应该阅读博客、撰写自己的博文、为开源项目做贡献、与其他程序员交流、参与令人兴奋的个人业余项目、参加会议、阅读以了解最新的技术发展,以及做好自己的本职工作,还应该“每年至少学习一门新语言”。谁还需要睡眠或生活呢,对吧?
新开发人员几乎总是不知所措,他们需要基本方面的帮助。
他们是否了解自己正在从事的项目如何为企业创造价值?他们了解代码库吗?技术栈吗?他们能否做出有用的代码更改并通过代码审查?所有这些其他的职业发展期望都无助于新开发人员掌握基础知识。
有更简单的方法来拓展你的思维
亨特和托马斯写道,学习一门新语言有助于拓宽你的思维,这样你就不会陷入墨守成规。但我能想到一些更简单的方法来拓宽你的思维。你可以:
- 学习设计模式
- 研究建筑模式
- 查看开源项目
- 与其他程序员交流
- 在线观看视频讲座
如果您大量使用编程语言,您真正学到了多少?
我对这里的机制有点模糊。人们是如何“学习”这些语言的?是读书?学习语法?写个“hello world”程序?照搬语言教程?还是写个1000行的项目?
根据我的经验,学习一门语言的语法很容易。如果你想用该语言编写出高质量的代码,你还必须学习围绕该语言构建的工具。这可能意味着你必须学习一个新的 IDE。你很可能还需要学习该语言的框架和库。此外,你还需要学习编译器、构建系统、静态分析器、linters、获取帮助的途径以及如何将小块代码组装成更大的程序。测试工具等等。
这真是个大工程。真的有人会做这么多吗?我怀疑很多人在“hello world”和重复教程代码之间就停了下来。如果真是这样,学习一门新语言还有什么用呢?
但即使你确实用新语言创建了一个小项目,我仍然怀疑这是否是你时间的最佳利用方式。
特定语言的知识是易逝的
假设你投入了足够的时间去深入研究一门语言。如果你不经常使用这门语言,这些知识还能维持多久呢?
有四件事同时发生:
- 你对语言细节的记忆会随着你一天天不使用它而逐渐消退
- 语言在进化
- 工具、框架和库不断发展
- 计算机科学的最佳实践不断发展
我在大学学习了 Java 2,但在过去的 15 年里发生了很多事情,我不确定现在我甚至可以在多大程度上声称“我了解 Java”。
有一天你可能需要这门语言来从事新的工作或项目
如果你学了一门新语言,你可以把它写进简历里。这或许能帮你找到工作,对吧?恐怕不行。
简历中语言/技术膨胀现象十分普遍。
我很少招聘,但看到简历上写着这些,我就会直接忽略。我遇到过太多自称精通某种语言的人,面试的时候连一个简单的函数都写不出来。如果我都忽略了这些,你敢打赌,99% 的招聘经理也会忽略你简历上列出的语言。
我能相信学习一门你真正想要的工作所需的新语言是个好主意吗?也许吧。如果你把它描述成“展现主动性”,我可能会相信。但即便如此,你的时间难道不应该用来练习面试技巧吗?或者学习如何谈判更高的工资和更好的福利?
“学习一门语言是为了将来工作用得上”这种想法在我看来很低效。该如何选择合适的语言来学习?该如何防止你的语言技能随着时间的推移而退化?
继续阅读以了解更好的方法。
专注于具有较长半衰期的高杠杆技能是一种更优的策略
让我们来解开这个谜团。
如果一项技能能够对你追求的结果产生与你为之付出的努力不成比例的影响,那么它就具有高杠杆率。学习如何高效学习就是一种高杠杆率的技能。
如果一项技能能够长期发挥作用,那么它的半衰期就很长。领导力的半衰期可能长达数百年。但最新的 JavaScript 框架的半衰期可能只有几个月。
我鼓励您专注于学习那些最能帮助您和您的雇主取得优异成绩的知识,并优先学习半衰期较长的知识。
以下列出了一些你可能会发现比学习一门新语言更有价值的事情:
- 真正学习你的技术栈 - 获得超高效率
- 你的业务——哪些地方最有潜力发挥你的影响力?哪些问题最值得解决?
- 如何高效学习
- 效力
- 优先级排序——约束理论、延迟成本和CD3
- 项目管理
- 领导
- 沟通
- 时间管理
- 团队合作
- 商业技能——战略、招聘、谈判、会计、营销、金融、销售、统计等。
- 构建-测量-学习反馈循环,如Eric Ries在《精益创业》中所述
- 开发方法/技术
- 设计/建筑模式
如何决定下一步学习什么
找到对您或您的雇主最有帮助的杠杆,如果您还不知道的话,就去学习,然后利用这些知识来改善公司的业绩。
然后找到新的最高杠杆事物并重复。
这样做的人最终会拥有一份充满出色成绩的令人印象深刻的简历,而这正是雇主真正关心的。
在我的职业生涯中,有好几个阶段,对我来说最值得学习的东西都与编程无关。尤其是在需要身兼数职的小公司里。如果你也遇到同样的情况,也不要感到惊讶。投入其中,享受乐趣吧。除了编程,世界上还有无数有趣的东西值得学习。
总结
你不需要每年至少学习一门新的编程语言才能成为一名“优秀”的程序员。事实上,毫无理由地追求这样的目标是愚蠢的。
如果你想把学习编程语言当作一种爱好,那就去学习吧(我自己就这么做过)。但别指望它会对你的职业生涯产生巨大的影响。这是一个你可以验证的假设。问问你的雇主,如果你学习了某种新的编程语言,公司会给你加薪多少。如果答案是“不加薪”,那么你只是向雇主证明了这门语言的市场价值。
要点:人们雇佣程序员是为了帮助他们解决问题,而不是因为他们懂多少门语言。最优秀的程序员能够放眼全局,优先考虑他们所学的知识,从而交付最佳成果。结果永远是最重要的。
同意还是不同意?我很乐意在评论区听到你的想法。
鏂囩珷鏉yu簮锛�https://dev.to/bosepchuk/learn-at-least-one-new-language-every-year-is-bad-advice--207p