本文是《Java特种兵》的样章,感谢博文视点和作者授权本站发布
1.4 功底概述
本节是本章的“道”第一次总结,胖哥会尽量简单说明。
1.4.1 什么是功底
古人有句话:“心有灵犀一点通”,形容相互之间的交流十分默契,而融洽的基础在于彼此十分了解对方。在专业领域上要做到这一点,就是要深深地了解技术以及它的内在。
武侠中有一种武学叫“九阳神功”,也有一种武学叫“易筋经”等,它们之所以很神奇,是因为它们都有一种不变的特征,就是学习了这些武功后,再学习任何武学都很快,而且可以比别人学得更好。同时,这些“武学秘籍”也有一个共同的思想,就是以内功修为为主,而不是以招式为主。
胖哥写的书自然不敢与这些“神”一样的“秘籍”相提并论,胖哥只是借此告诉大家内在修为将会决定你在技术这条路上能走多远。
胖哥无法帮助你成为“张无忌”一样的绝世高手,但是一个真正的老A,也同样需要有很深厚的内功修养;否则,当新的事物出现时,你会跟不上潮流,“out”了,正所谓:练武不练功,到老一场空。
在功底方面,我们还需要做到知其然并知其所以然,形成一种由知识引导思维,由思维引导答案,由结果印证理论,不断迭代的过程。在这个过程中,对问题的认识会越来越清晰,自然在见解上也会越来越有道理,同时也会对自己所在的领域充满自信。
1.4.2 功底有何用途
第1节讲解了String的故事,第2节讲解了关于一些算法的故事,第3节我们开始玩数字游戏,是否觉得自己用了很久的Java,好多东西还不知道?当然,如果你认为胖哥说得过于小儿科,那么就跳过去吧。
在前面的这些知识中,很多技术本质源于生活,很多意想不到的事情发生了,这一切在本书中才刚刚开始,或许后续章节中的一些内容会更加让你感觉出乎意料。这些原本认为是真理的内容,被彻底颠覆,在实际的场景中也许就在不经意之间,你会留下一个很难琢磨的Bug,或者根本不会认为是Bug的Bug,然后让别人来解决这个Bug。正所谓:我们不怕犯错,怕的是不知道什么是错,更怕的是我们一直坚信正确的事竟然是错的。
很多时候,印证了一个通过测试得到的经验并不那么靠谱,胖哥的例子也许已经令你感受到测试场景可能会决定许多不同的结果。在不知道本质的时候,仅仅通过某些特定的测试场景是不能作为真理来指导开发的,最多只能是指导同样场景下的开发。测试通常可以帮助我们去理解本质,以及在知道本质后它是一个印证的过程。
知道了内在,就像知道了String的编译优化、String的常量池、String的内存结构,知道了常规的算法,知道了生活中的对应方法,我们发现它并不是那么难,关键是你是否愿意去看它的本质。其实看本质对于许多程序员来讲是一件拥有快感的事情,因为生活的现实世界在自己的工作中找到了灵感,但是它又不像人性那么复杂,它比生活更加简单。
只是我们过于看中技术本身,过分仰望技术本身,“容易陷入深渊,而难以自拔”,甚至有人喜欢钻牛角尖,对于这样的同学来讲,胖哥只能说“苦海无涯”,你需放下才能找到新的方向,需解脱和放下才能超越自我。
总的来讲,胖哥认为:只有不断颠覆自我,找出本质,才能将一些问题连根拔起。而不是过分相信自己曾经做过的实验和别人说过的所谓真理,这些都仅仅作为参考而已。
1.4.3 如何磨练功底
功底并非天高,任何人只要愿意,能静心,就都行!
大多数初学者,对能做出一个例子,或做非常多的例子引以为傲,其实这并不是坏事,只是学习后一定要“落实于根本,回顾与总结”,切勿让“猴子掰玉米”的故事发生在你的身上。换句话说,浮躁的心态是“猴急”,什么都想要去学习,结果学了就丢了,没有自己知识的凝固,没有自己的总结和笔记。
首先,要能静心,静心才能落实,立足于当下,要知道学海无涯、浩瀚无边,并且社会在发展,知识在进步,我们的确需要不断学习,但是要从当下做起。
当我们静下心来,就可以开始总结了,总结啥呢?感想吗?也可以,不过老这么总结就不像IT从业者了,而像一个感情丰富的编辑。我们刚开始做总结有点像记笔记,就是将老师所讲,或自己所学记录下来,按照条目一条条地陈列。但是这不算总结,只能算是笔记,这些内 容在许多的书籍和网站上可以找到更好的内容,而总结应当包含自己的理解和感受,应当能阐述学习和理解过程中的痛苦。
在技术领域你可以总结思路,总结所学所用,总结所遇到的问题,总结为什么,总结解决问题的手段和方法,分析问题和定位问题的思路,总结在解决问题时所用的知识,总结技术点上是否还有相关的方案,以及对比相关知识的优缺点。
在业务上总结自己最近做过些什么,那些是大事还是小事,自己所做的事情和几个月前比提高没有,效率上提升没有,时间安排如何,如果加班太多能否不加班,自己的工作效率是否可以进一步提升,以及如何提升,通过技术完成某些自动化还是基于时间管理来更合理地安排自己,未来几个月准备或希望去做什么样的事情,是否有能力去参与更重要的职责。
当然,我们不是每天都要去做总结,那样会很浪费时间。
即使每天去做总结,也是一个小总结而已,如果我们非常忙,那就没必要这样做。但是当我们看到一篇比较好的文章时,可以先初步看看内容,把它记录下来,写到总结中表示想要去学习的内容,等到闲暇之余去看看,再进一步来总结或许会更好。
本节我们用一个简单String等值对,就能说出一大堆基础知识,也能说出类似的方法,相应的算法也能联想出来,你不觉得这样的由小的点入手引导相关知识的方法也是一种不错的学习方法吗?
工作与学习本身并不矛盾,工作本身就是一种学习,只是它更偏重于实践,基于工作驱动学习一个新东西会更快一些,不过大多在使用层面。当遇上了稀奇古怪的问题时,就想要去看看内在的原理了,此时去看看源码,你会更加有动力。这样的碎片化学习方式,其实也是一个积土成山的过程,达到一定程度自然是“量变发生质变”,那个时候再去看看“牛人的秘籍”,就是一种交流,一种知识梳理的过程。
也许刚开始我们无法做到很深入的细化与知识联想,尤其是某些相关技术点需要很大的知识面才能把它讲清楚,技术需要理论,理论又需要技术,这是一个死循环,我们便开始产生了“鸡与蛋”的纠结问题,许多人在长期的纠结中选择了原地踏步,也就是相当于放弃了。其实我们需要的还是立足于当下业务,尽自己所能去挖掘,通过业务细化驱动技术的发展,尽我们所能广泛联系知识,整个学习过程是一个迭代的过程,功底是逐步提升的,不要纠结于死循环的问题。
如果你希望自己从事技术这个领域,就要学会相信自己,拥有一定的自信,有信心不是说自负,而是有信心去面对困难。当你有一定成就的时候,不可狂傲,要知道天外有天,人外有人,世界上没有最高,只有更高,即使是今天的最高,明天也会有更高出现。而我们的功底将支撑自己的这座山峰,我们更加愿意去追求自己的极限,追求自己理想的巅峰。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/125938.html