作者回复: 其实你的理解存在一些误解。 首先,做业务2~3年就能把技能树点亮,原因不是做业务本身简单,而是业务没有发展,如果你的业务从10万增长到100万,从100万增长到千万,不同阶段需要的技能是不一样的。 其次,你认为做基础技术可以做的很深并因此可以建立自己的技术壁垒,这也是一个错误的认知。 目前国内有团队做基础技术的公司并不多,而且事实上大部分也都是基于开源方案二次开发。 除非你能负责基础技术的架构和设计,否则大部分的时候其实也是开发各种和业务功能类似的功能,并不会让你的技术越来越深。 第三,基础技术做的好不好并不是自己说了算,而是由基础技术的使用方也就是业务团队来评价的,正因为做的好不好没有明确标准,很多时候就看使用方的口碑, 有人的地方就有江湖,一般来说,除非你的做的特别好,否则基础技术团队永远都是被吐槽的对象。 其实,无论是做业务还是做基础技术,要想技术有提升,必须要面对越来越大的挑战,对于业务来说,就是业务规模在增长;对于基础技术来说,就是基础技术更强大; 而基础技术最后要体现价值,还是要依托业务来展现,你可能会认为自己的基础技术很牛逼,但是如果业务无法验证、市场无法验证,最后还是作用不大的。
作者回复: 分析的非常好,尤其是最后的“轻重缓急”,说明你已经充分理解了晋升原则中的“价值原则”。
作者回复: 第一个问题: 如果你完全都没学过某个技术,连它包含什么内容,涉及哪些概念,有什么应用场景都完全不清楚,是不可能看一眼就知道应该学到什么深度的。 要想自己不学就知道其深度,只有让别人来告诉你,即使别人来告诉你,你也只是知道了结果,不知道为什么有的是要深度学习,有的是要大概了解。 所以说学习不是一次性的,而是要逐步迭代深入的。以计算机网络为例,第一次学习你至少要系统的找本书或者资料系统学习一下,你就能够知道其内容涵盖DNS、TCP、IP、BGP、ARP、RARP、RIP、OSPF……这一大串技术,此时你已经知道每个技术点的大概含义和适应范围了,你再结合自己的工作来判断哪些是大概了解,那些是要深入学习的。 例如,你是做Java后台业务开发的,那DNS、TCP、IP是需要深入了解的,但是ARP、OSPF、BGP就不需要深入了解;但如果你是运维,这些基本都要深入理解。 第二个问题: 要么别人告诉你,要么自己带着问题去探索,然后找到对应的技术点,再深入学习。 例如,false sharing这个案例,一开始我也不知道,我是去查"multi-thread high performance"这个关键字,然后无意中发现的,发现后我就深入的去学习了一下,又了解了MESI等关联知识。
作者回复: 可以这么说,毕竟时间和精力有限,要考虑投入产出比
作者回复: 优先整理和工作相关的基础技术图谱,然后在此基础上找一些重点方向突破
作者回复: 都可以引入自己的业务了,为啥还说用不到呢?
作者回复: 总结的很全面
作者回复: 加油 :)
作者回复: 先把常用的,流行的,成熟的学会了,基本不用担心突然要用,因为可以说每个技术都有多个选择,即使突然要用,你积累多了,学起来也很快
作者回复: 很有见地 :) 主要是我们的时间和精力有限,如果什么都想学很深,是不现实的,而且投入产出比低。