成长经验系列之一-方法-成长分享

  来自https://www.bilibili.com/video/BV1C7411F7x3?from=search&seid=2133372842380459026

  这是左耳朵耗子(陈皓)在极客时间的一次直播分享。分为三个部分:认识焦虑、认识自我;打牢基础;找到做事的方法,事半功倍。这一篇分享,我在很多问题的看法上,跟大佬是一致的,但是还是有另外一些东西,是超出了我的认知的,在思维上完全是其它层面的东西,而且这些观点对我很有启发,所以很有必要记录一次。

——————————————————————

  【技术人员焦虑】

  来源:

加班多:上班时间太长,没有时间提升自己;
技术含量低:工作内容没有任何技术含量;
成长:瓶颈期,不知道该怎么升级,看不到未来的方向;
学习:知道要学,但是要学的东西太多,太多东西分散了精力,越来越困惑迷茫;
到最后完全没有了激情,好像只要给钱,让自己怎么干、干什么都行,一点都没有自己的方向了。

  破解:

  这种焦虑对于自身的成长是有好处的,这是一个积极的标志,接受它就好,每个人都会有焦虑。

  我们需要做的是,认识这个世界,认清这个行业,知道这个行业需要什么样的人,然后才能知道自己真正需要发力的方向,认知上调整好方向后,花时间花精力坚持下去就好了。

 

  【这个世界】

  只说技术,真实世界的发展规律是,不断地会有新的工具出现,降低一个技术的门槛,这是历史发展的大趋势。在行业内部,也只有极少数的人(不足万一),在做这种降低行业门槛的事情,这少部分人带着大部分跑,少部分人做好这件事之后,大量的人就会扑上去。

  这少部分人,做工具,这需要基础技术。更多的人,是在做项目,项目只需要解决问题就好,要的是这个结果,而不是说一定要懂工具背后的基础技术。对于真正的技术,极少数的人做好了工具,剩下的人使用这个技术去解决问题,绝大部分的人都是伸手党。

  A-劳动力,使用自己最舒服的技术来解决问题,少数人会尝试使用一些比较新的技术。B-特种工,在A类人员出问题的时候,能够解决技术上的问题,知道底层原理。C-设计与架构,为了重用、解耦、可扩展进行设计;架构是解决稳定、重用、性能等。D-找到出路,挣钱,场景,组织进度等。无论哪个方向,都会分为这些类别的人。

  Google评分卡:

0——对于相关的技术领域还不熟悉;
1——可以读懂这个领域的基础知识;
2——可以实现一些小的改动,清楚基本的原理,并能够在简单的指导下自己找到更多的细节。

3——基本精通这个技术领域,完全不需要别人的帮助
4——对这个技术领域非常的熟悉和舒适,可以应对和完成所有的日常工作
    对于软件领域—有能力开发中等规模的程序,能够熟练和掌握并使用所有的语言特性,而不是需要翻书,并且能够找到所有的冷知识;
对于系统领域—掌握网络和系统管理的很多基础知识,并能够掌握一些内核知识以运维一个小型的网络系统,包括恢复、调试和能解决一些不常见的故障。
5——对于该技术领域有非常底层的了解和深入的技能。

6——能够从零开发大规模的程序和系统,掌握底层和内在原理,能够设计和部署大规模的分布式系统架构。
7——理解并能利用高级技术,以及相关的内在原理,并可以从根本上自动化大量的系统管理和运维工作。
8——对于一些边角和晦涩的技术、协议和系统工作原理有很深入的理解和经验。能够设计、部署并负责非常关键以及规模很大的基础设施,并能够构建相应的自动化设施。

9——能够在该技术领域出一本经典的书。并和标准委员会的人一起工作制定相关的技术标准和方法。
10——在该领域写过一本书,被业内尊为专家,并是该技术的发明人。

  【历史的轨迹】

  工业化革命、信息化革命。

  以前是自动化一些劳动密集型的行业,未来随着AI的发展,会自动化一些知识密集型的行业。

  我们这个时代是一个会将数字化进行到底的,目前还见不到这个底在哪里。进入这个行业,其实是很幸运的。

  【认识自己】

  找到即时再难也不会放弃的东西。既然已经进入行业了,那么我们要找到再难也能坚持下去的提升自己的方法,然后坚持做下去就好。

  【基础最重要】

  为什么:所有的技术原理和本质都在基础上。一通百通。

  基础技术才能让你上升到更高的层次。

  技术的世界,量变无法引起质变。--这个是最让我有感触的,如果只是重复同样的事情,确实无法在认知上向深入的地方跃迁。需要基础技术才能突破瓶颈。

  【哪些是重要的基础】

  程序语言:原理(Java的字节码,JVM,GC等等)、编程范式(命令式,面向对象,函数式,模板元--作者有专栏,可以查看)、设计模式、代码设计、类库......

  系统:计算机原理(作者有专栏--可以查看,深入理解计算机系统)、操作系统(Unix高级环境编程,Unix网络编程)、网络协议(Http,TcpIp)、数据库

  中间件:消息队列,缓存,代理,网关......--了解基本原理

  理论知识:算法与数据结构、分布式、系统架构......

  这些基础技术在作者的程序员练级攻略中有推荐的内容。

  【识别新技术】

  灵魂拷问:

  新技术到底是解决什么问题的?稳定性,降低技术门槛,提升开发效率...为什么要这么设计?

  提升了什么样的能力?计算更为复杂的计算,自动化更为复杂和更为困难的事情。每种技术都有合适的地方,了解它的长处,才能在合适的场景使用它。

  会成为主流吗?有大公司背书,有杀手级应用,有强大的社区。--所以真正新技术出来起码要五六年才能有可能成长为可能主流的备选。

  

  【方法】

  主动学习与被动学习:看视频看书看别人演示,都是被动的。

  

  在我们熟悉的工作场景中,其实顺其自然地学,能学到的并不多。大多数时间,是要自己去搭环境,才能有所收获。一个悖论就是,需要先学会开车,才能获得一份开车的工作,大部分环境下,是不允许我们一边学一边做的。

  学语言,有个办法,学的时候,用这个语言来实现我们主语言的API。比如拿GO抄一遍JAVA的主要的API,抄一遍基本上就学会了。这样的实践会比看书来得快。

  认识原理和本质。凡是要背的能查阅的基本没啥用,我们要找到的是一通百通的方法,可以自己推导出来,而不是靠记忆。

  打开认知,改善思维。

  第一手资料很重要。英文的源。

  我可以忘,但是我自己能徒手打造出来了。比如忘了消息队列这个怎么用了,怎么配置了,但是自己可以徒手打造一个出来。--其实这一点就能作为是否理解原理的一个标准。

  使用知识图系统来学习。

  使用多个维度,举一反三地学一个东西。比如学一个网络协议,可以试着用wireshark,可以用代码来试验,可以用周边的各种手段来实践。这样能够把一个点扩散开。

  总结归纳,形成自己的套路和方法论。--技术的套路,比如一个模型,一种解决方案,一个思路等等。

  实践,坚持。

  

  【看源码】

  先看文档,它解决了什么问题。只要理解了它解决的问题,这个代码其实是次要的。自己想想实现,跟框架对比一下就好。

  基础知识,代码结构。

  模块,接口,关键业务路径。

  代码逻辑,运行时调试。

  千万不要一开始就跳到细节里,画流程图,时序图等等。除非是调整bug。

  

  【枯燥和硬核的东西】

  找到应用场景和牛人。场景进行实践,牛人参考别人的学习路径。

  补充基础知识。

  使劲咬牙啃。

  

  把底层的东西搞通,看到尽头,把它了解的事无巨细,原理完完全全搞清楚。不论是否喜欢,这也是能解决焦虑问题的。喜欢就继续,不喜欢可以选择其它的路。

  【其它】

  不要记忆。

  信息压缩。

  经常犯错。记忆最深刻

  写blog。

  【自由职业之路】

  把上文提到的基础吃透。

  坚持写博客,输出。

  尽量看英文信息源。

  帮别人解决问题。

  弄绝大部分人不会的。

  

  

原文地址:https://www.cnblogs.com/bruceChan0018/p/14999226.html