程序员如何搭建自己的知识体系?

什么是知识体系?

所谓”知识体系”,指的是把大量的不同的零散的知识点,通过内化,存储,整理,等方式组合起来,以点成线,以线成面,形成系统的,有序的,清晰的脉络结构.

我们在解决问题和处理事情时,会使用自己的知识体系做出选择,不论是潜意识还是显性意识.每一次的抉择和行为都将迭代我们的知识体系,让其更加明确清晰,找到自己不足的地方,优化可以改进的地方,明确接下来的方向,提升自己的全局整体思维,强化当下的正在使用的技能等.

知识体系不是一蹴而就的,而是贯穿我们的生活经历和对事物的思考慢慢积累起来的,中间需要海量的知识支撑,不断改变,不断适应.

什么是个人的知识体系?

知识是无穷无尽的,没有必要什么都学,也不可能什么都能学会.

每个人都有一致的时间属性,同时又有不同的天赋和努力程度,人生万象,不同的人有不同的场景和结果.

所以,找到适合自己的知识,构架完全只属于自己的体系,才是在这场游戏中的最优选,你没有重来一次的机会,即使浪费了,也只能不断往前.

这注定是一个无可替代的过程,别人的知识体系你拿了也没有用,反而害处大于益处,我们只能参考,无法复制,别人也无法帮忙构建,一切遵从于你自己的内心和身体.

什么是程序员的知识体系?

个人的知识体系我们有一生的时间来慢慢完善,它主导人生的每一次选择和际遇.

但是它还是太笼统,太庞大了,主要的作用更偏向于内化,而我们需要的是当下的外向,也就是现在的生活和工作.

如果说吃和睡分别占据了人的各种三分之一,那么工作就占据了剩下的三分之一,它也是重要的经济来源和物质基础.

在互联网的发展中,技术迭代的速度远超人们的想象,面对不断变化的技术,在这个”终身学习”的时代,程序员需要积极应对.

据不完全统计,大多数程序员同学都有着自己的博客之类的,写着一些技术笔记或者生活日志,更多的是用github分享着自己的代码.

这些都只是程序员知识体系中的一小环,聚焦领域和带有职业属性的一个架构的才能构建一个完整的体系,下面一一描述.

如何构建知识体系?

总的来说,知识体系的构建主要有五个步骤,每个大的步骤,都包含很多小的步骤.

人生是有方向性的,就像时间不能逆流,体系的构建也是有顺序的,正确的按步骤执行,能够帮助我们快速搭建自己的知识体系.

不论是个人知识体系,还是程序员的知识体系,区别只是模块不同,总量大小的问题.

程序员体系属于个人体系的一个脉络分支,这意味着,我们可以复用个人体系的构建方法,只是重点是互联网的节点而已.

大量输入

没有输入,何来体系,输入是知识积累最为重要的方式.

知识体系最初是由很多的知识点组成,那么,这些知识点来源于什么地方?

作为一个程序员,请好好思考,你的知识点主要来源自哪些渠道?

信息输入

一般的信息来源于网络文章,书籍,视频教程,线下交流等方式.

对于程序员来说,视频教程是极为推荐的信息来源之一,它有着书一样完整的内容体系,也有实际操作的可视化演示,通常还附带着讲师的个人经验和优秀习惯,能够及时的跟上技术的步伐,实时的沟通和调整,而书籍通常要落后半年,甚至一两年.

但是书籍的阅读仍然是不可或缺的,如果说视频教程更偏向于实际操作,那么书籍就适合深层次的思考,越是经典的知识越是适合书籍承载和传递.当然,很多程序员都经历过<<21天学会XXX>><<XX从入门到精通>>,最终有没有放弃我不知道,付之一笑,不予置评.如何选择一本好书,也是一个门大学问.

和搜索引擎打交道最多的,程序员当属其中之一,一些碎片化的文章有助于我们解决某个特定的问题,了解某些小的知识点,这种输入比较零散,胜在量多,领域广泛,容易扩展思维的边界,碰撞出创意的火花,恰好不会让我们一直局限在某个地方,有的时候应当专注,有的时候也应当扩散.

线下的交流不必多说了,所行之处,处处皆是,工作中和同事的沟通,生活中和朋友的交流,技术细节也好,观点看法也好,属于人与人之间的信息交换.

简而言之,就是在诸如慕课,网易云课堂,极客时间等平台选择好的课程,在书城或者图书网站选择好书,多读书,在推酷,知乎,掘金等信息平台,多多阅读新闻资讯等,然后多多参加活动,演讲,多与人交流.打造属于你自己的信息渠道,多阅读,多学习,多交流.

实践输入

一般的实践输入为代码练习和项目开发.

每个大神都是从小白过来的,小白学习编程最初的姿势就是敲代码,一遍,两遍,三遍,直到把纸上的知识内化为自己的体会.

任何事物,都会有一个认知的阶段,也会有一个实践的阶段,以一个普通的例子来说,要学会炒一道菜,看一百遍菜谱也不会有什么进展,一字不漏的背完也不会有什么进步,唯有一次又一次的尝试,才能亲身体会,才能逐步学习,才能终有所成.

编程也是一样,学习一个知识点就是反复的去练习,反复的去使用,从实践中去理解它的意义所在.

代码片段的反复练习就如同备菜,番茄切片,鸡蛋拌匀,两个操作重复一千遍,也成不了一碗番茄鸡蛋,项目开发就是知识点的融合和使用.

一个完整的项目有助于从结果导向促使我们构建一个完整的知识体系,学习是为了什么?是为了用吖,工作为了什么,就是为了完成项目.

入职之前,什么都得学,什么都要会一点,因为你不知道什么样的内容会命中Hr,入职之后,一切都清晰明了,专注于眼前的事物即可.

梳理脉络

回忆一下你看过的书籍目录,每次选书的时候是不是窥一页而知大概?

想象一颗大树的枝叶结构纹理,一张小小的蜘蛛网,又或者是浩瀚无限的星空.

这些都是脉络的表现形式,点与点之间互相串联,线条与线条之间又延伸不同的方向.

不妨来做一个小实验,不带思考的随口说出任何形式的几个关键词,如书籍,地理,老虎,小猫,水果,开发,学习,下雨…等

它们来源于你的知识点,有的可以归为同一类,有的不存在什么强的关联,有的带有层级关系.

我们需要通过适当的梳理,让它们成为一张网,一颗树,一本书,一片星空.

如前端开发,一般的职业规划是要么深入前端领域,精通某些行业技术,纵向扩展,要么学习一些后端内容,往全栈工程师方向发展,有助于从整体产品提升开发过程的沟通效率和产品质量,还可以选择先学习设计,学习产品,学习测试,以技术的关联度横向扩展.

但是若你非要研究航空母舰,天文地理之类的也没人拦着你,出于兴趣还好说,若是选错方向,很可能会与现有的知识体系脱节.

换言之,就是把知识点分门别类,同时制定好方向和目标,始终保持知识圈定在一点的范围里,结合实际的情况纵向或者横向发展.

推荐使用思维导图工具,诸如xMind,MindManager等软件,稍稍学习一下导图相关知识,使用它梳理脉络,用的多了,自然就明白了.

布置一个小任务,用导图列出你的职业发展方向如高级开发,全栈开发,架构师等或者接下来你将要学习的领域和具体内容,如java,ui设计,区块链等

笔记整理

大脑的容量有限,我们必须使用工具把知识给存储下来,按照之前整理的脉络结构.

整理的知识为两种,一种是公共的或则别人的知识,一个是内化为自己内容的知识.

常见的如网上的经验教程,理论知识,代码片段,都可以复制粘贴待笔记里面.

书中的实用知识,核心内容,也可以选择性的摘抄出来,图片,视频等富文本也可以一一保存.

读书笔记,开发过程的操作步骤,都可以实时记录下来,自己的心得,经验和体会.

主要推荐笔记类软件,如印象笔记,为知笔记等,最好能多端同步,易于检索,呈现结构体系.

思考优化

优化这个词字面上的意思大家都懂,看起来很简单,但是如何优化,优化什么才是重点.

对于程序员来说,最为重要的是开发效率提升,其次是开发质量提升,最后是其他软技能提升.

不妨多问自己几个问题:

开发过程过程中有什么错误的地方,导致速度慢的原因有哪些,为什么?

还有哪些技巧和工具可以让开发流程更快,更好,具体如何操作?

诸如此类,不断的对事物进行分析,对自己进行反思,总结,然后改进.

实践反馈

其他的就不多说了,程序员最常见的实践方式就是写博客,录教程,开发产品.

在大量输入中我们提到书籍,教程和练习代码等方式,属于吸收的角度.

但是,知识体系极为重要的一环就是输出,输出是快速将知识内化为自己知识体系的方式之一.

有一点不得不提到,在应试教育中,学生几乎很少体验一下老师的视角,哪怕只是几分钟.

他们把时间花费在教室里,培训班,作业上,从来只是听讲,而不是演讲,从来只是写题,而不是出题.

终生学习意味着终生的社会大学,互联网学生,不能只是一味的输入和执行,而是应该输出.

写博客,既是写给自己,也同时写给观众,如何让他们更好的理解和内容本身一样重要.内容要经受得住读者的考验就得纠正自己的错误,确保内容传达的准确和简易性,读者也会从不同角度给与建议,一次阅读或者一个赞就是一个正反馈.

录教程,更加要具备专业性,会用和会教完全是两回事,如果你想要讲述一个道理或者描述一个操作,通常需要系统化的,引述更多的论点,补充更多的细节,以合适的表现形式才能达到预期的效果,在教的过程,前提是你得会,其次是你得讲的明白,这是一个极其考验知识深度的事情,你随时面临各种各样的问题.

我们在工作中开发产品是别人的产品,充其量算是其中的一个小小的螺丝钉,没有主动权也无意加入太多的想法.

但是自有产品完全依据你个人主观意愿而构思,依据你拥有的技术而构建,一个产品就是一个小的技术体系,在实现的过程中,不会什么就去学,学完就去做,最终你会参与到许许多多你从未接触的环节,当然,有些地方可以考虑外包或者合伙,或者其他替代,重要大部分都有了解或者参与即可.