高手和普通人的差距,不看不知道,一看吓一跳

用户头像
熊斌
关注
发布于: 2020 年 04 月 22 日
高手和普通人的差距,不看不知道,一看吓一跳

在极客大学算法训练营期间,leetcode-cn上面看N皇后问题的题解后,特别想写一篇以“高手与普通人区别”为主题的内容。



事先说明一下,我也是一名普通人,与高手相比,还有很大的差距。写这篇的目的完全是出于自我激励。



一个我自己的故事



先说个发生在我自己身上的故事吧,我在目前的项目呆了挺长时间了,从立项跟到了二期快要上线,开发过程中从框架搭建到单元模块的设计与核心模块的编码,都参与了。



前期为了追赶项目进度,我们只有相关的需求文档,设计文档写得相对比较简单,都是开发各自写各自模块的。



后来有一天,我上级的上级让我给他讲一下我们系统的设计,找我要相关的系统设计书,我发现没有能拿得出手的完整成果物。



在给他讲系统设计时,我画不出架构图,只是用简单的线框和箭头在白板上面画出了相关模块之间的联系。



讲完后,领导对我说,网络拓扑、系统架构、业务架构这三个图你必须会画,否则,你用的那些框框和线条会被高手耻笑,简直太low了!



说实话,为此,我郁闷了好几天。但后来想通了,我自己真的动手尝试去用这三种图来提炼我们系统最精华的部分。我发现,当时的我真办不到!



主要原因是,工具使用不熟练、业务理解不到位和技术能力也不强。我以实际行动证明了自己的能力不足,证明了自己的普通。



后来,我找来了公司别的项目的系统设计文档,一方面看文档中三张图是怎么呈现的,另一方方面在花时间深入研究现在项目涉及到的技术、业务模块、以及持续集成等诸多方面的知识。目前还在不断精进中。



愈发强烈的挫败感



言归正传,为什么在学习算法的过程中“高手与普通人”的差距感会愈发强烈呢?



因为,我在做题的过程中,刚开始一不小心就会掉进细节里面,然后在里面锁死自己,无法动弹。



回过头去看国际站的高票题解时恍然大悟,或者根本就看不懂,又有种被高智商的人摁在地上摩擦的感觉。



我该怎么办



之前在学刘润商业洞察课的时候,学到一句话“普通人改变结果,优秀的人改变原因,顶级高手改变模型”。通过这句话可以看出来,想要成为高手,需要从做事模型入手。



比如,学习算法看题解时,要有意识地去抽象概括同类型题目的求解模型,下次再拿到类似的题,首先套用模型,然后在这个模型框架内优化细节,就算错了,也错不到哪里去。



如果,一上来就掉到细节里出不来,头发薅掉了一把又一把,时间也花掉了一天又一天,最终取得的效果和高手完全不同。上来就扣细节的人往往无法做到触类旁通。



锻炼结构化思维的能力



平时可以强化自己的结构化思维,避免点状思维。拿到问题后,能从自己的大脑中调出一套完整的解决方案,只花少量的时间去优化细节。



如何练习呢?



做算法题时,看到高票的题解,就是一种练习方法。可以从两个大的方面去做训练:



题型归类



拿到题目时,要有意识地归类,比如可以用栈解决的、用分治和回溯解决的、二分查找的,每种类型的复杂度是什么样的。



方案提炼



在算法题里面,可以将方案理解为代码模版,比如递归、回溯的代码模版。它们是解这类题的固定套路,是框架,拿到题目后不用你发明创造,先套用,然后细化。



学会结构化自己的知识体系是非常重要的一件事儿,无论是对自己的表达还是对于解决问题,结构化的思维都能起到很大的作用,能更有效率得传递信息。



写到这里,我觉得高手和普通人的区别之一是,知识在高手脑海中是结构化的状态存在的,在普通人的脑海中是游离状态的存在。遇到问题、表达时,高手提取信息的复杂度优于普通人,更有效率,也更有魅力。



与所有像我一样的普通人共勉。

发布于: 2020 年 04 月 22 日 阅读数: 437
用户头像

熊斌

关注

坚持终身学习 2017.12.01 加入

参加过极客大学也参加过得到大学的程序员

评论 (3 条评论)

发布
用户头像
训练营对对你的算法方面最大的改进是什么?
2020 年 06 月 07 日 11:49
回复
用户头像
哪一期的训练营
2020 年 05 月 08 日 00:43
回复
5期2班
2020 年 05 月 08 日 11:46
回复
没有更多了
高手和普通人的差距,不看不知道,一看吓一跳