我老是感受本身在盲目的学习一些看上去很火热的技术。好比 React Native,Flutter 等等。我家里堆了各类编程语言的入门书籍,有 Go 的,有 Erlang 的,有 c++ 的,还有 JavaScript 和 CSS。python
我到如今都搞不懂这个事情。我连主流的 Python 语言都没有掌握清楚为何要去看这么多语言的入门书呢?我在工做和生活中根本就用不到他们。只是由于在某一篇文章中看到 Go 语言是趋势,Erlang 的稳定性无人能敌,c++ 你永远都让不开等等。这些东西我都研究过,但是到如今为止尚未用他们写过一行有用的代码。linux
相信不少童鞋都有相似的状况。程序员学习新技术的想法是件大好事,总比不思进取的思想状态要好,可结果却并不必定比原地踏步强,由于不必定有用,会形成技术浪费。c++
浪费的事情咱们生活中作得不少。咱们想要买更贵的手机,由于 cpu 更强,但是不少人并不必定须要那么强的 cpu。原本只须要买个上网本看看电视却要买个工做站。咱们的理由天然也很充足:万一有一天要用到呢?万一有一天我须要玩游戏呢?万一有一天我要 3D 渲染呢?追求新技术的理由也一样:万一之后它火了,我就走在了时代的前面。程序员
这种状况确实有可能发生,前提是你能将这门新技术研究得很透彻,比别人更懂,不然那些基础更强的能用很短的时间就能超越你。web
我想在学习新技术以前应该作几件事情:算法
先了解本身的需求是什么?在将来 3-5 年内的主要工做是 python 开发,那就应该围绕这个需求来学习。首先是 Python 的高级特性和工程设计思想,这些都落实在具体的实践上,须要积累大量项目经验,能够本身选择一些 side project 练习。本身作的时候还应该参考优秀的开源框架,看看别人的设计思路和实现方式。docker
须要了解 web 原理。像 HTTP 协议、TCP/IP 协议都须要精通,这样才能站在更基础的层面来进行开发,不是在网上找几套解决方案就能作出一套好的系统。看完基本经典书籍之后,要学会用抓包工具来分析流量走向,定位问题的能力。编程
须要性能优化。要熟练掌握各类算法和数据结构,知道经常使用算法的应用场景和复杂度。学好算法基础就要去看 python 的各类内置函数实现他们的性能如何,你写出来的代码性能如何。windows
性能还须要涉猎并发和异步知识。这些东西每每是操做层面的,能够先熟悉多进程、多线程和协程等在 python 的应用,消息队列等各类异步操做的实现,可是早晚仍是要深刻研究操做系统是怎么去进行资源调度的,《深刻理解计算机系统》就该去看一看了。性能优化
在这个过程当中,还应该看一看《重构》《程序员修炼之道》这样的方法论书籍,争取能造成一套本身的编码和改进体系。
在工做中应该尽可能避免的问题是原地踏步、google 编程,此次搜索完一套方案下次仍是不知道,几年作的都是重复的事情。盲目追求新技术,拼命加班改 bug 都是技术领域尽力要避免的陷阱,看起来很是努力,其实是在原地不动。
学习应该是有目的的,不是看着哪一个火就去学哪一个。小时候都学过捡了芝麻丢了西瓜的课文,如今正是不停的在重蹈覆辙,学这个,学那个,最后本身的真正专业都没有作好了。一门技术的探究最终都会落到基础知识上,编译原理、操做系统、算法和数据结构。若是学好了一门技术真正落实到了基础上,去学另外一门技术不该该是很难的事情。
在肯定了方向之后把重心放在本身的方向上,平时能够花少许的时间来关注新技术,看看他们的应用领域和简单实现。喜欢玩手机并不表明每一个品牌的手机都要买回来每天使用,那是职业测评师干的事,咱们的思路是买一个牌子的当主力机,一个当备用机,其余的偶尔去专卖店感觉一下就能够了。
在项目的技术选型上也应该遵循以需求为重心的原则。若是不是高并发的项目为何要使用热门语言 Go 呢?用 python 快速实现行不行?如今的技术团队有几我的懂这门语言,外面招人好招吗?现有人员培训须要多久呢?必定要用微服务吗?必定要用docker吗?不少都没有必要的!只是本身给本身挖的一个一个陷阱,把整个团队推动去。
接下来是怎么实现的问题。若是要忽然去学很是枯燥和底层的操做系统原理,确定会两眼一抹黑。忽然从 windows 系统换到 linux 系统也会让人手足无措。一个可行性很高的方案就是渐进式改变。和菜头在一篇文章中写道:若是一家餐厅几十年的口味都不变,那确定逃不过关门的命运。那些说本身坚持不变的人或者产品每每在发生悄无声息的改变,他们的变化如此微小,以致于你根本察觉不到,多少年以来,微信添加了多少微小的功能,不少都隐藏在 UI 之下,咱们像寻宝同样一点点的发现,用习惯了之后就感受它们从一开始就被设计出来了同样。
要学好操做系统不必定要全心全意去攻克每个知识点,在工做中接触到了多线程,先看看线程消耗,锁机制和信号量行不行?一点一点来,天天进步一点。人每每会高估短时间能力而低估长期能力,这是思惟和眼光的局限性致使的。
学习是个很是讲究方法论的事情,盲目的学习是不行的。都是参加高考,为何那些看上去努力的学生大多成绩平平,每天打篮球、约会的就考上清华北大呢?智商是一方面,不过我到如今都不相信高考能到达人类平均智商的极限,估计方法是更加剧要的一面。
万维钢关于学习的话题我以为是颇有意思的,归纳几个要点是:按部就班、逃离温馨区、重复的基础训练。最重要的是要造成整个体系和思惟,否则学到的知识都不是本身的。