如何有效提升技术成为大Niu的两个方法
目录
如何有效提升技术[成为大Niu]的两个方法
1.应用场景
很多技术同学都关注自身成长的问题,比如如何成长为牛人、如何获得晋升、如何在繁忙的工作中持续学习等,甚至因为这些问题变得焦虑。 其实这是每一位同学成长过程中的必经之路,对于焦虑,要做的是接纳而不是过度担忧,并积极寻找问题的答案。每一个技术人,都应该立志成为技术大牛,持续学习和成长。 解决方法: 见上红色字 |
2.学习/操作
1. 文档 补充 2. 整理输出方法有二: 来自于资深技术 leader 曹乐 方法一: 寻找范式、刻意练习、及时反馈 近日,公众号“再成长一次”(ID:Read_Enjoy)整理了资深技术 leader 曹乐写给团队的一封信《如何成为技术大牛》,信中提到两个方法,其一是寻找范式、刻意练习、及时反馈;其二是垂直打透、横向迁移、深度复盘。以下为 原文内容 。 学习其实是有方法论的,那就是刻意练习。//其实不只是学习,很多事情都是有方法论的, 如果你认真学习过马克思哲学,里有讲到方法论. 所谓的 10000 小时成为大牛的理论是片面的,如果只是简单重复 10000 小时,是不可能成为大牛的。 刻意练习包含三个步骤:第一,找到你要学习的领域体系的范式(pattern);第二,针对每个范式刻意地反复学习和练习;第三,及时反馈。 我们在过往的工作和学习生活中,或多或少都在实践着刻意练习。 拿面临高考的中学生举 例子 :好的学生通常是把一门功课拆成了很多知识点(寻找范式),接着针对知识点以及它们的排列组合,有针对性地反复做各种难度的题(刻意练习),每次做完题都对照答案看看正确与否,如果错了就思考、记录、复盘(持续及时反馈)。这样的学习方法就是事半功倍的。//这种方法确实很好. 而事倍功半的学习方法,就是不分青红皂白拿起一本习题或卷子拼命做。这就是为什么有的同学非常勤奋,成绩却不好的原因。 正确的学习方法应该是快速梳理该领域的知识点,形成框架体系,方法可以参考以下三点。 寻找范式 。看一些该领域综述性或开创性的文章,比如论文。也可以看该领域综述性教科书的目录,因为一本好书的目录往往就是该领域的知识框架,内容倒不一定非要看下去。 刻意练习 。针对每个知识点,找到书中的相关章节,并深入学习,建立起自己对该知识点的理解。 及时反馈 。把知识点和现实的工作情况进行对照,从而建立起对一个知识点的深度理解,最后融会贯通,进而形成对一个领域的理解。 这样说可能有点抽象,拿我当年 学习分布式存储的过程为例。 首先,我结合自己的工作内容梳理出需要深入了解的知识点,如元信息组织、副本组织和管理、单机存储引擎、纠删码、一致性等等。同时,我看了很多综述性的材料,梳理出分布式存储的知识点,并不断迭代构建这些知识点。这是一个寻找范式的过程,也是最难的一个过程。 其次,我针对每一个知识点,找相关材料进行深度学习。例如,对于分布式一致性,需要阅读 CAP 理论、Paxos 的论文、Raft 的论文以及其他的相关材料。这是刻意练习的过程。 最后,我找到各种系统实现的论文和文章,比如 GFS、Dynamo、Spanner 等等,对比它们在一致性问题上是如何考虑和取舍的,当然,最重要的是结合自己工作中的反复实践和所学知识点进行比对。这就是一个及时反馈的过程。 以上三个阶段并不是割裂的,而是周而复始的。我们经常会在刻意练习和及时反馈的学习过程中,发现自己遗漏的知识点,或者发现自己梳理的两个知识点其实是重合的。通过这种交叉比对,以及在实践中不断检验的方式而建立起来的知识点是非常可落地的。 以上就是成为技术大牛的其中一个方法,即寻找范式、刻意练习、及时反馈。另一个方法将在下文继续分享,欢迎持续关注。 方法二: 垂直打透、横向迁移、深度复盘、在行动中思考 内容摘自原文。 对于学习,你可能会有一个疑问,就是工作本身已经如此繁忙了,哪里能抽出足够多的时间去学习? 其实工作和学习本身,是不应该被割裂的 。工作本就应该是学习的一部分,是学习中的实践和及时反馈的部分。 学习如果脱离了工作的实践,其实是非常低效的。//确实同意, 短时间的脱离工作的学习, 个人认为是没有问题的. 长时间定然不行. 因此每个同学应该对自己工作所在的技术和业务领域进行系统性的学习,并在工作中反复实践和验证。 不同的领域之间其实是融汇贯通的,当你对一个领域精通并总结出方法论以后,很容易就能上手别的领域 。因此花几年时间彻底研究透一个领域,对于刚工作几年的同学来说,是非常重要,甚至是必须的。也只有在一个领域垂直打透之后才谈得上跨领域迁移,去拓展自己的知识面。 但这里有一个常见的问题是,学习的内容和工作的领域没有太多直接的关系,不便于垂直打透。 例如 ,曾经有两年我用所有的空余时间去 读 Linux 内核的源代码以及相关知识//佩服作者, 不过我们也可以做到类似的事情 ,而这些知识在我那两年的工作中,几乎没有用处,最多只是一些“启发”,所以后来也忘得差不多了。 软件工程是一门实践科学,从书本上得到的知识如果没有在实践中应用和检验,基本上是没有用处的。 这时候,你可能会有另一个疑问,感觉日常工作非常琐碎,学不到什么东西,怎么办? 如果把学习分成从书本中学,和从工作中学这两种的话,那毫无疑问,工作中的“知识密度”比起书本的“知识密度”,肯定是要低很多。因为书本里的知识,都是从工作中抽象总结出来的。工作中每个点滴的琐事与平凡,都是可以抽象总结成为方法论的,更别说工作所在领域的博大精深了。如何从日常工作中学习呢?秘诀就是“从行动中思考”。 对于每一个软件工程师,最重要的两个能力,是写代码的能力和解决问题(Trouble Shooting)的能力。 并且,要成为优秀的架构师,出色的开发能力和追查问题的能力是一切的基础。 提高写代码能力的关键,首先在于坚持不断地写,但更重要的,在于每天、每周持续不断的 review 自己之前的代码。其次,要多 review 牛人写的代码.//很同意 一旦觉得自己之前的代码不够好,就立刻复盘、立刻重构。更重要的是,多思考坏代码和好代码之间的区别及区别背后的原因。//有时候立刻重构,并不是那么容易的事情,可能还是因为没有思考透彻, 请记住, 思考是一切问题解决的源泉. 特别要说明的是, 除了要知道代码规范是什么以外,还要重视思考每一个代码规范背后的原理。 而要提高解决问题的能力 ,关键在于深度复盘自己遇到的每一个问题,寻找每个问题、每次事故背后的根本原因,并且思考后续如何避免同类问题、如何更快的发现同类问题。 此外 , 要对团队内外遇到的所有问题都保持好奇心//好奇心很有用, 但是当我们事情缠身, 时间被压缩时,或者好奇心就只能先往后排, 但是如果想做,还是有办法的 。提高解决问题的能力是几乎无法从书本上获得的,其完全来源于对每一个问题的深度思考,以及对问题的广泛积累。 对于技术牛人来讲, 除了 需要更加优秀的代码能力和发现问题、解决问题的能力外, 还 需要对当前技术领域有相对完整的知识体系、体系化的思维能力和对 业务的深入理解 // 我还是我总觉得业务占了太多时间,对于我这种处于初中级开发者并不友好。 对于 完整的知识体系 可以通过寻找范式、刻意练习、及时反馈来构建,方法参照上一篇文章的内容。 对于体系化的思维能力 ,其来源于两个方面。 一方面 是在日常工作中,对每一个接口设计、子系统的拆分和组织方式、需求的技术方案、系统的顶层设计,都要反复思考和推敲,不断的复盘。 另一方面 ,需要广泛学习行业内相似系统的架构设计。 // 三人行必有我师焉 而对业务的理解能力,也非常重要。深入了解业务并不难,你要深入思考每个 需求背后的原因以及该需求能解决什么业务问题 , 有没有更好的方案等等//有利于把握全局, 避免陷入被动地步 ,遇到不明白的问题多和周边技术同学、产品、运营同学请教。 以上就是今天的内容,尽管我们通篇都在讲方法,但其实在成为技术大牛的路上,方法反而是没那么重要的。真正困难的,在于数十年如一日的坚持。 总体看下来, 个人思考的结果如下: 即, 构建完整的知识体系 [方法即寻找范式, 刻意练习, 及时反馈], 这里讲的是一个领域的知识体系, 结果就是垂直打通, 然后才是横向迁移[另外一领域], 深度复盘[站在更高的维度, 去审视不同领域之间的知识体系之间的异同,从而得到一种更高维度的思考结果] 构建体系化的思维能力, 伴随着构建完整的知识体系过程中,是一种思考方式. 最后, 我们做事情需要方法论,但是最重要的还是做事情, 即在行动, 并且在思考中行动,也在行动思考. 后续补充/调整 … |
3.问题/补充
1.至于如何做到坚持? 我想, 最简单的方法就是靠自制力, 当你想到以后可能出现的意外,你无能为力的时候,该多么的痛苦!,也许现在能多坚持一些. 2.TBD |
4.参考
后续补充…