转载

架构师成长之路(6)--技术深度和广度

一、技术的深度

说到技术深度,深到底多深才叫有深度,是不是技术钻研的越就显得越牛逼,那学一门技术要怎么学才叫有深度的学?

学任何的知识都要形成一个体系,才能学得深,记得牢。功利性地,走马观花似的学习,很快就会忘记。

1、学习层次认知

我们先看看加涅定义学习的层次:

陌生——辨别——概念——规则(方法,套路等)——高级规则(解决问题)。

对应到我们技术,在我们技术简历上面,经常出现的词汇:

了解——熟悉——掌握——精通——专家,这就是由浅入深的形象描述。

1、了解:入门,简单的认知和记忆,表示知道。是最低水平的认知学习结果。

2、熟悉:概念,了解概念得清楚,清楚地知道概念;(对某种技术或学问)侧重于知道得清楚,比了解更进一层。

2、掌握:规则、应用规则到实践,是在熟悉的基础上能充分加以运用。

3、精通:高级规则,深入底层。

4、专家:扩展创新

详细请看:架构师成长之路(5)--如何获取知识(学习境界)(方法)

2、技术深入程度

参考骨灰级大佬的观点(来自极客时间的《左耳听风》专栏):

1、了解:这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。 这个问题非常关键,也就是说,你在学习一个技术的时候,需要知道这个技术的成因和目标,也就是这个技术的灵魂。如果不知道这些的话,那么你会看不懂这个技术的一些设计理念。这个其实就是回答:“我是谁”,“从哪来?” “到哪去”的三个哲学问题。

2. 熟悉: 这个技术的优势和劣势分别是什么,或者说,这个技术的 trade-off 是什么。 任何技术都有其好坏,在解决一个问题的时候,也会带来新的问题。另外,一般来说,任何设计都有 trade-off(要什么和不要什么),所以,你要清楚这个技术的优势和劣势,以及带来的挑战。

3. 掌握:这个技术适用的场景并应用实践。 任何技术都有其适用的场景,离开了这个场景,这个技术可能会有很多槽点,所以学习技术不但要知道这个技术是什么,还要知道其适用的场景。没有任何一个技术是普适的。注意,所谓场景一般分别两个,一个是业务场景,一个是技术场景。

4. 掌握:技术的组成部分和关键点。 这是技术的核心思想和核心组件了,也是这个技术的灵魂所在了。学习技术的核心部分是快速掌握的关键。

5. 精通:技术的底层原理、关键实现、本质。 任何一个技术都有其底层的关键基础技术,这些关键技术很有可能也是其它技术的关键基础技术。所以,学习这些关键的基础底层技术,可以让你未来很快地掌握其它技术。

6.精通:已有的实现和它之间的对比。 一般来说,任何一个技术都会有不同的实现,不同的实现都会有不同的侧重。学习不同的实现,可以让你得到不同的想法和思路,对于开阔思维,深入细节是非常重要的。

7、专家: 扩张创新。

3、技术实践和从问题中深入学习

要真正的精通一门技术,最终还要通过实践来深入。游泳教练,必定游泳水平好,因为这些都是实践性很强的工作。书上学来终觉浅,绝知此事要躬行。

在实践中,遇到问题,不仅只解决问题,还要对问题刨根问底,深入挖掘问题发生的根本原因,这样可以系统性地修复问题,从而使其永久消失。从问题本身着手,沿着因果关系链条,顺藤摸瓜,穿越不同的抽象层面,直至找出原有问题的根本原因.

我们中国古代以来就有“打破沙锅问到底”的习惯;“打破沙锅问到底”是一句俗语,形象表达了锲而不舍、不断探索的精神,这是人们常挂在嘴边的一句口头禅。

我们遇到问题,从外到里,逐层分析:

1、问题表象是什么

2、直接原因是什么?

3、中间原因是什么?

4、根本原因是什么?

真正的解决问题必须找出问题的根本原因,如果只解决问题,而不深入问题背后的根本原因,这门技术也是不够深入。

比如:

问题:java应用出现超时抖动?

1)解决:Java应用出现FGC. (增大 -Xmx  -Xms 内存设置)

2)、直接原因:流量激增?  长时间运行? 代码问题导致占用内存对象不释放?。。。

3)、中间原因:流量没有做预警? 研发人员能力问题?

4)、根本原因:JVM虚拟机的基本原理?GC机制? JVM性能监控?。。。。

4、挖掘本质

什么是本质?

将世界万物理解为原子,将整个互联网理解成0和1,这倒的确是非常本质了,不过并不能解答任何问题。从问题看本质,实质上是一个从表层逐步深入的过程。

在《技术的本质》这本书中,著名的经济学家布莱恩阐明了技术的本质及其进化机制,其主要表达了以下三个核心观点:

1.几乎所有技术都来自于此前已经存在的技术,就好比C、Java语言就是调动了多个功能最终实现一个功能。

2.技术都是由技术形成的,这句话可能有点难以理解。举例来说,火车的发明其实包含了多种技术,比如蒸汽技术,但蒸汽技术又可以被分解为燃料技术、动力技术等等。

3.技术和生物一样都会进化,但是生物的进化多来自变异,而技术的进化则来自不同技术组合所发生的变化。

布兰恩强调,技术并不会凭空发生。关于计算机技术,无论从前端还是后端,无论是过时还是被炒得很热,无论是云计算还是SAAS等,其本质技术都来自于此前已经存在的技术,都要求具备良好的算法和数据结构,在此基础上不断衍生出许多新技术。

如果是IT技术人,能深入学好基础知识《计算机组成原理》、《操作系统》、《数据结构》、《计算机网络》,其他技术都很快学好。

二、技术的广度

一般来说,我们都希望自己的技术既有广度又有深度,但事实上,鱼与熊掌不可兼得,我们人的一生其实很短暂,在这有限的时间和精力里,我们不可能掌握所有的技术,而且技术的更新速度很快,就如同浩瀚的大海一样。全栈的工程师相对来说比较少一点,如果掌握的广度上宽一点,可能深度上就相对会浅一点。

1、我们的纠结?

1) 、随着社会分工日趋细致,技术日新月异,我们发现技术在广度和深度上越来越难以平衡?

2) 、想深度发展自己的技术成为某领域专家,心里却不甘心亦或担心自己技术会被淘汰?

3)、想广度发展自己的技术让视野变大,却常常感觉精疲力尽,热门技术都懂一点却又不深入,感觉啥都会又啥也不会。

会不会成为什么都懂,但什么都不精的人?

2、技术广度

1、创业公司或者初创公司,是比较喜欢既有广度的技术人才,因为这个可以面面俱到。

2、而大公司一般都是要求技术深度的人才,因为大公司只要求一个螺丝钉。

三、 如何权衡技术的广度和深度?

在快节奏的时代,不进则退,技术人员需要不停地吸纳新知识。到底选择技术广度学习,还是选择垂直深度?

俗话说,技多不压身。对于一个想在事业上有所发展的人来说,你还应放眼未来,多学几门技艺,不把希望只押在一个地方,这才是明智的选择。如同犹太人有一个不把鸡蛋都放在同一个篮子里的道理,就是用此来分摊现实风险。

下面具体来说说要如何权衡自己的广度和深度:

1.广度为辅,深度为主。人生、时间有限,我们不可能精通所有的技术,但我们可以努力地精通工作相关的、有前景的、感兴趣的技术。

2.基础扎实,深入底层。只是解决工作上的问题是远远不够的,应该在工作之余去学习更底层的技术,所谓知其然还得知其所以然。比如说我们使用java做开发,仅仅会使用是不够的,我们还得再理解JVM的原理等,多多思考:为什么要这样用?怎么实现的?还有更好的办法去实现吗?

3.触类旁通,适度学习。学任何的知识都要形成一个体系,才能学得深,记得牢。

四、 如何正确的做一个技术 T 型人才?

衡技术的广度和深度,更需要有一个正确的学习方式,端正的态度,而目标是做一个技术 T 型人才。

架构师成长之路(6)--技术深度和广度

什么是T型人才呢?

T型人才是指按知识结构区分出来的一种新型人才类型。用字母“T”来表示他们的知识结构特点。“—”表示有广博的知识面,“|”表示知识的深度。两者的结合,既有较深的专业知识,又有广博的知识面,这类集深与博于一身的人才。

如何成为一个T型人才,大家常用的一种方式就是轮岗。轮岗的意思是,当你成为某一方面的专家后,跳出自己的舒适区,转而到一个新的技术领域从头学起。轮岗的意思绝不是在一个技术方向上三心二意,每一次转换技术方向,都应该是对前一个技术方向至少做到熟练掌握的程度才行,而我自己觉得,不经过1-2年的实践,很难称作熟练掌握。所以,轮岗的行为是低频的。

如何正确的做一个技术 T 型人才,这儿有一些建议:

1.制定自己的职业发展路线;

2.技术和兴趣结合;

3.选择热门、成熟的技术。

原文  https://blog.csdn.net/hguisu/article/details/91185666
正文到此结束
Loading...