作为一名软件工程师,技术的道路上从来没有捷径,知识是成体系的,前面的知识不理解,后面的只能死记硬背
某些知识你必须要会,在这个知识共享的时代,很少有知识不能在网络上获取到。
如果你需要学习的知识已经深入到在网络上不会公开了,那么你的技术一定已经很强了。
1、算法和数据结构
如果你不会算法和数据结构,早晚都得补,从现在开始来吧。
比如:b+tree,hash,红黑树,栈和队列,
如果不熟悉树结构怎么去理解b+tree,如果不知道hash算法怎么去理解hash索引
不理解线性表怎么能理解LinkedList
不理解b+tree怎么理解dba从来不建议非整数类型作为主键
2、数学
数学也是必要的,至少是高等数学,线性代数,概率论与数理统计,不会算,记不住公式也要记得概念。不需要学以致用,至少知道一些原理。
数论,集合,映射,离散数学,都需要理解
3、计算机基础
计算机基础也是必要的,计算机体系结构,计算机网络,计算机组成原理,记不住也要知道个大概。
如果不熟悉计算机基础,怎么理解编码,怎么理解字符串对比,怎么理解排序规则,怎么理解cpu的寄存器,一级缓存,二级缓存、三级缓存及总线锁
4、永远不要偷懒
如果现在你用的一个技术不了解细节,你可以先熟悉应用,但之后一定要补上细节,否则就如镜花水月,遇到与内核相关的问题就束手无策。
5、生命不止奋斗不息
技术是不断更新的,所以不能抱着一个旧技术准备混到死。
如果你不能一直学习新的东西,趁早学学那些宣传35岁必须转行管理的技术路线上的失败者吧。
当你的知识体系比较牢固,经验比较丰富之后,改bug很多时候不需要精读代码,靠bug现象猜原因就能解决问题。