技术工作中怎么去提高基础
公众号:diting_dapeng,关注我领取更多学习资料
做技术,我们经常听到的一句话是:基础很重要,一定要打好基础啊。
我们都知道基础很重要,那么对于我们来说,什么是基础?突然有感,记录下自己现在对于基础的理解。
基础是什么
相信有的盆友和我一样,我记得以前在学校时,有的同学经常和我说–“基础就是底层啊,就是源码,所有源码都看过才算是打好基础”。也有老师上课时说,“基础就是抓住不变,数据结构、计组、网络必须扎实学会”。
这些说法对于学生来说没错,对于工作党而言,如果还按照学校的方式来去追求源码、把基础知识打扎实的方式来提高基础。会发现这种“基础能力”根本看不到提升效果,工作中也用不上,白白浪费了时间和精力。
提升技术的技巧,在于把有限的时间和精力用在更有价值的地方,从而实现投入产出效率的最大化。工作中的基础能力指的是工作任务相关的基础能力,而不是整个计算机技术的基础能力。比如内存寻址,对于嵌入式开发是基础,但是对于安卓开发或ios开发就可能不是基础了。
了解自己当前工作
因此,搞清怎么去提高基础,先要了解清楚自己的当前工作。
当前工作如果不需要去修改源码或者理解源码细节,那就不是工作要求的基础能力。比如linux源码是对虚拟机开发的基础,但是对于Java开发来说就不是必备的。
我以前有一个误区,就是觉得基础像是地基,不把这些所有计算机知识铺垫扎实,就不踏实。但是殊不知,建房子的地基也是不断变化的,农村以前用土,后来用石头,现在用钢筋水泥。而工入在打地基时,也不需要知道如何制造水泥等这样的基础知识。
拿安卓开发
举个例子:
安卓开发可以分为业务开发和框架开发。那么根据具体根据每块内容,基础能力要求是不同的:
- Java语言特性和API都是基础,但是对编译原理,业务开发不需要掌握,因为不需要去修改java语言。而框架则对于编译原理也是基础,因为动态框架可能要用到DSL
- 安卓的基本原理是基础。对于业务开发则不需要掌握源码,而框架开发需要掌握源码来修改android的一些代码从而实现动态化
- 业务开发需要掌握常见的库,框架开发则对库掌握的要求不多
- 框架开发需要掌握JavaScript,一些动态框架都是以基于JavaScript的;
分解技能
了解了自己所做的工作后,可以按工作相关原则来进行拆分,以大数据开发为例子:
- 工具:数据开发通常使用java或scala为主要语言。因此常用的工具有:IDEA、Maven、git、docker等;
- 生态: 系统运行时需要依赖哪些组件或系统。可以按存储、计算和中间件分为三类:存储常用HDFS、doris,计算Hive、Spark、Flink,中间件talos、Flume、Zookeeper;
- 容器:程序在哪里运行。Linux、服务器、跳板机、集群;
- 原理:需要掌握的原理知识,SQL 窗口函数、常用算法等。
分解行动
列好和工作相关的基础技术点后,接着要明确自己要学到这个点学到哪一层。我们的时间精力有限,如果你把时间浪费在这个地方,用来提升其他更有用的技术时间就没有了。
- 先明确一项技术可以分为哪些层。画出领域分层图,和细节分层图。尝试画图本身是一个梳理结构、强化认知的过程;
- 明确自己要学到哪一层。
- 明确每一层应该怎么学。总的原则是学会而非学精,在上层投入更多时间,更关注细节和熟练使用,在下层投入相对少得时间,对源码部分只需要掌握关键源码,即和设计原理和方案相关的源码。
我是精神抖擞王大鹏,不卑不亢,和蔼可亲~
计算机硕士,目前小米大数据开发。目标今年总结完20本技术书,80本非技术书,欢迎一起讨论~
公众号:diting_dapeng