推特上, 有网友问我: ”我想了解一下您对于技术选型的见解, 对于年轻人在选择一门技术 dive in 方面有什么建议”。
先说结论哈, 真正的编程高手都是会十几门编程语言的, 技术学久了啥都融会贯通了, 无所谓哪个门派。
好, 切入正题。
心态要对
首先解答这个问题之前, 大家要抛弃几个偏见:
- 学技术千万不要为了装逼和同事争中午的意见领袖, 我这么多年看到很多顶级技术高手从来不和别人争对错
- 不要跟风学语言: 20 年前是 C++, 今天是 Rust, 感觉不学很丢人, 要提高认知, 光会技术不等于认知高
- 不要焦虑: 很多同学感觉没有学最新的东西就很焦虑, 人生主要是找到自我, 而不是模仿别人, 徒增焦虑
区分公司和个人
个人学习什么语言都无所谓的, 有用就多学, 没用也增长见识, 没有啥坏处。
但是公司的技术选项就要考虑成熟度、 性能、 能否持续招到人, 自己玩一个小众语言, 别人来看都看不懂, 产品急着上线, 那不是装逼砸到自己的脚了吗?
- 后端语言: 重视性能和生产力就首选 Golang, 性能无所谓果断上 Python 要啥有啥生产力第一, 千万不要为了装逼上 Rust 和 Lisp 语言
- 前端语言: 老老实实用流行框架 Vue/React 啊, 抄代码快哇, 前端不就是天下武功一大抄嘛
- 编成工具: 生产力就上 VSCode, 除非自己会十几门编程语言, 对手感和 10 倍编程有追求, 才去学习 Emacs/Vim, 学的时候不要抱怨慢, 值得
- 系统底层: 我觉得 C 依然是底层编程语言的王, 而不是 C++, 也不是 Rust, 但是你要问自己, 自己喜不喜欢硬件, 不喜欢硬件就别学内核了, 浪费时间
- 编程框架: 不管是 Web 框架、 深度学习框架、 还是编程框架, 尽量选大众选择的, 不会错哇
上面说的就是公司的要求去做技术选型哇, 其实就一点, 稳定持续生态好大于一切。
个人学习
回到个人学习, 个人学习我完全和公司选型持相反的态度, 个人选型主打一个花, 越偏门越好。
- 正统的: 正统的 Python/C++/Golang 都很好哇, 生产力器, 规范稳定
- 偏门的: 来一门 Lisp 语言, 虽然工作用不到, 但是函数式编程熟练了, 很多时候可以帮助工作中写更简洁的代码、 函数而不是逻辑没理清楚之前就写复杂的类关系
- Rust: Rust 可以学, 但是大多数应用场景和产品迭代的场景不适合, 学 Rust 可以学习到很多函数式思想, 也可以有效的降低自己不是大佬的焦虑, 反正学习过了, 哈哈哈哈
- 最小众的: 比如 Elixir, Clojure, Nim, Zig 这种, 可能生态还不行, 但是真的很独特, 学习这些语言的目的是开拓自己的编程视野, 视野大了人就变谦虚了
- 编程框架: 要啥编程框架啊, 手写一个哇, 成长最快
个人学习主要的目标是吸众家之所长, 增加视野, 培养自己的谦虚, 经验能力强了, 再加上谦虚, 就能成大才。
专注放轻松
其实我觉得人不要东想西想, 专心研究, 不管是为了技能混口饭吃的正统技术选型, 还是个人喜爱的都可以有时间学会, 最浪费时间的反而是犹豫不决和纠结。