总有在校的学生问我现在 X,Y,Z... 技术很火热,应该学哪个? 我看他列出的那些准备学习的选项中,其实前景和热门程度都差不多。 这让他陷入了选择焦虑症,不管做什么决定都怕「一失足成千古恨」。
对技术发展趋势关心是好事,就像之前那篇「不要总是选择困难模式」里面说的那样。 但是其实在「不要总是选择困难模式」里面忽略了很重要的一点,就是你个人的兴趣。 比如有的人对苹果的东西有天生的热爱,所以选择「iOS开发」对他来说就更容易做好。 尽可能选择会让自己 Enjoy 的技术方向,路还很长,不享受过程的话容易半途而废。
『太用力的人跑不远』
有阶段的自己,会用蛮力去学习一些东西,就是这东西不管是否适合目前自己的知识体系, 觉得学了之后会更牛逼就去学,但是这样的东西往往学了记不住。 学习的过程越用力反而显得越吃力, 太吃力的事情,自然就无法有恒心, 这就是很多人会觉得自己做事总是无法持之以恒的原因。
记得之前本科的时候喜欢和舍友一起打Dota,打Dota开局之前一般要等人齐, 等人的这段时间我有时候会切出来写写代码,叫舍友开局了告诉我一声。 然后别人看到我在打Dota间隙都在写代码,就觉得我有多努力多努力,给人了一种非常「刻苦」的印象。 以至于上次和一个本科同学吃饭他还说起这个事情,觉得我能做到这样非常「牛逼」。
但是其实这样的事情,如果对于真的对写代码有经历过热爱的人,是不会觉得有多么刻苦的事情。 这是自然而然的事情,甚至其实有些代码,那种满足好奇心的快感,是比打游戏有意思的多, 是件很Enjoy的事情,而不是所谓的「刻苦」。
就像跑步,「太用力的人跑不远」。
『不要用蛮力去学编程』
记得当年初学 C++ 的同学,听别人说 C++ 很基础也很重要的一个知识点就是STL, 然后听说要学好 STL 就应该去看看侯捷的「STL源码剖析」。 然后就买了书硬啃,然后没啃几天就放弃了,觉得太讳莫如深了没法理解。
但是如果换个学习的方式, 先假设现在没有STL这个标准库, 让你用已有的C++语法知识去自己写一个仿造STL标准库的功能, 哪怕是最最简单的 vector 。 你在编写的时候就会自然而然得体会到内存动态扩展的一些缺点和潜在的坑。 会知道为什么适当使用 reserve 和 swap 能非常明显的提高性能。
然后在自己思考的过程中会提出很多相关的疑惑, 带着疑惑再去翻看「STL源码剖析」, 就会让你对一个个数据结构恍然大悟知根知底。 自然而然你的看书体验会非常的 Enjoy, 而不是觉得苦涩难咽。
编程和求知本身是一件愉悦身心的事情, 如果只是为了高薪,而用蛮力去写代码,只会让自己疲惫不堪。
『最后』
希望对在学习编程的路上很挣扎的朋友有所帮助。 毕竟工作是生活的很大一部分, 如果工作不开心,生活怎么办。