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