关于学习基础知识的自我思考
https://coolshell.cn/articles/20977.html
工作这么多年 其实一直忌讳去学习基础知识 如网络 linux 底层 数据库 算法与数据结构一是因为当代社会浮躁或者说急功近利的氛围二是自己急躁的心态 不安的心态导致内心抗拒 以及觉得这些不实用.第三点是 学这些确实枯燥 没法和实际场景联系在一起
这几年 从不同大佬口中 总结了这个共同认知: 基础很重要 具体拿耗子叔的 list
程序语言:语言的原理,类库的实现,编程技术(并发、异步等),编程范式,设计模式……
系统原理:计算机系统,操作系统,网络协议,数据库原理……
中间件:消息队列,缓存系统,网关代理,调度系统 ……
理论知识:算法和数据结构,数据库范式,网络七层模型,分布式系统……
所以脑中一直有这样的疑问: 为什么基础很重要 如果我不把基础学好 会有什么影响? 我只要掌握工作中开发业务需要的技术栈和中间件 不就可以往上走了吗?如果从第三者视角来分析目前我的工作的话, 有几点需要突出
每家公司都是业务驱动 所以 做好的产品 哪怕底层就是一个 springboot 项目 也能升职加薪 这是我们公司的氛围以及价值所在 在我心目中 确实觉得可惜 --也有我的思维局限: 想要搞个好的产品 一般要用到多个中间件以及好的设计 这里就需要很深入的掌握 所以大型项目 仍然脱不开对技术的原理掌握 也就是下面 #3 提到的
确实可以这么做 但是从长远角度, 自己内核不够稳固的话 自己作为技术人 技术成长 也就是自己的根 没有发展 会遇到很多困难 尤其是年龄大了之后 要进一步追求高效的勤奋, 而非低效的勤奋
真正在部门/公司的做的更好的人 会同时掌握底层原理和所用的中间件组合 然后实现业务价值 这样的人 更容易往上走
所以目前我学习到的不能不学基础的理由如下
能走的更远更高 解决的问题更是另一个 level
不变应万变, 学习新技术的速度 如 RPC 调用 在 kafka, spark, netty, xxl-job 里的运用 是共通的 原型掌握之后 确实没啥新的东西
google 招人要考察这些基础 必然有其道理
当你学会 C、C++要学 Java 和 GO 都很快。还有如微积分解万物
后续: 我打算怎么去接触这些基础知识 计划是怎样 结果怎么 check
评论