我是如何输出编程知识体系的(文末附思维导图)

自1946年诞生了世界第一台电子计算机,到今天过去的74年里,计算机由简陋的真空管组成庞大笨重的计算机到今天精密小巧的微型计算机,中间积累了巨量的计算机知识,而且计算机知识正在按指数级的趋势爆发增长。虽然我们生活离不开手机,工作离不开计算机,以及后台的服务器,但面对这浩瀚海洋般的计算机知识,很多人往往会望而止步。即使很多科班出身的计算机专业从业人员,也没能很好的掌握好计算机的系统理论和实操技能。

我相信美好的事物往往也是简明扼要,简单易懂的,一直有这么一个想法,力求使用最少的篇幅,勾画出现代计算机理论体系和技能树的脉络,一步步抽丝剥茧的输出计算机体系涵盖的骨架脉络,以合理的层次分类结构化知识,阐述核心理论和技能,辅以每一张思维导图阐明计算机理论实践的核心概念。

先从基础理论开始夯实计算机必备的基础知识,在此基础上介绍国际顶级互联网企业领先的工程实践技能,同时结合业界标准,试图输出科学合理的工程建设指南。在充分掌握基础理论和熟练运用工程技能的基础上,开始介绍架构设计,我们会先挑选最具代表性的开源项目讲解源码,掌握优秀项目的理念和思想,进而介绍高阶的架构设计领域,分别从宏观的分布式到微观的高并发到实际的性能调优,再上升到方法论层面开始介绍软件工程方法论。最后则从软技能和技术延伸的视角引导探讨商业模式和岗位上下游的融合,从平面的技术范畴到立体的职业观感。

我记得周星驰有部电影《鹿鼎记》,其中有个桥段是他想让师傅陈近南教他绝世武功。镜头前面出现一大桌子的武功秘籍,当星爷说表示练完这堆武林秘籍需要十年八年的时候,师傅陈近南微微一笑说这堆只是目录。我想说的就是通过多年的实践经验,把计算机界的武林秘籍目录锤炼出精华版本,通过更加合理的方法让我们能够更加高效的练完绝世武功。

我是如何输出编程知识体系的(文末附思维导图)_第1张图片

我是如何输出编程知识体系的(文末附思维导图)_第2张图片

我是如何输出编程知识体系的(文末附思维导图)_第3张图片

俗话说没吃过猪肉还没见过猪跑,说明见过猪跑很重要,很多刚入门计算机编程领域的或者已经淫浸多年而未得其道的朋友,往往就是忽略了这个作用。我也试图提供了一个“看过猪跑”的视角,当我们知道优秀的程序员是怎么练就出来后,就会消除心中的距离感,从代入感中慢慢接近优秀。

构建知识体系的作用不在于做一个人肉电脑,是在脑海里面构造出一个框架,脑图,把所见所学的知识,信息,能存储到合适合理的位置,即是当时是不懂的,但是也不怕,因为我们知道需要放到哪个位置,这样有需要的时候我们知道从那个地方取出来,而不是脑子里一片浆糊,拿出来后再去巩固,这样将大大提升效率。

理论

有别于传统详细的铺陈枯燥的理论知识,我自己总结出计算机领域有一个很有用的归纳方法,就是把计算机分为理论,工程和设计三大核心,而技术之上则是对世界的思考。在我对技术领域的思考中,理论是一切工程和设计的根据,这个想法是在我毕业5年后想对所掌握的编程技能进行总结时,发现有点空中楼阁,不上不下的感觉如鲠在喉。那么我就试图从根源之处来探个究竟,起初我投入虚拟机的研究,后面发现光了解虚拟机指令集还不够,又尝试的学习CPU的指令集,而这个时候我又对CPU如何运作的产生了兴趣,进而我在脑海中使用灯泡和电线又模拟了一遍CPU的工作原理。我尝试囊括计算机的基础理论,最后决定介绍最核心的计算机根基模块知识板块,理论篇大概会分为10个系列来介绍编码原理,运算本质,程序语言,数据结构,算法基础,网络通信,操作系统,数据检索,软件安全,JVM内核。每一节通过自身的实际经验总结出最高效的学习方法和知识图谱,建立起深刻稳固的计算机理论体系。

工程

在夯实计算机理论的基础上,我会介绍顶级互联网大厂的先进工程经验。应对了实际工作环境需要经历的硬技能,毕竟理论需要从实际出发,有强大的理论指导,同时也需要丰富的实操经验,从最基本的版本控制到代码治理、基础运维、应用开发、构建部署、软件测试、发布管理、监控告警和系统维护深入浅出一一阐述。帮助我们建立起优秀的开发习惯和职业素养。掌握好基础的工程实操技能后,将上升到软件构建的方法论层次来。分别从开发模式、项目管理和领域驱动三个系列介绍了前人锤炼出来的方法论。我们碰到的多数问题都可以在前人总结的经验寻找方法,避免走了太多无效的弯路。至此我们已经从最简单入门的编码知识升级到软件设计的思想层面。

设计

在介绍完理论和工程后,最考验技术的就是设计能力了。设计虽难但也并非无章可循,好的设计体现在好的代码上面,我们首先要学习优秀的源码,我们挑最核心最具代表性的核心开源项目分析源码,培养起优秀的代码逻辑习惯,同时深刻理解开源项目的本质和思想。在建立了稳固扎实的计算机基础和良好的开源项目训练下,我们开始讲高阶的架构设计,在理论上描述了世界顶级互联网公司和优秀开源项目所构建的分布式知识体系,从宏观的分布式到微观的高并发,讲述了高并发的要求和并发模型,最后综合起来介绍实际的性能调优经验。在我们已经充分具备良好的软件理论基础和优秀的架构思维后,再介绍现在流行的云原生技术和趋势。

思想

花了大量的篇幅讲了如何在技术领域步步为营,层层突破,但是在越高的层次,技术对整体实物的发展往往趋向更小的比重,我觉得除了深化技术能力以外,周边的技能比如沟通,表达,演讲,写作等技能也是十分重要。而技术的延伸则是引导我们从更高的视角审视自身的位置,除了技术以外更多关注上下游的流程,比如对产品商业模式的分析,对企业财务报表的解读,对行业发展动向的思考,最后,认真生活,快乐工作。

关于我

最初的想法只是出于对自己知识体系的梳理,进而发现这是一项大工程,而且是自己非常感兴趣的事情。希望在梳理知识体系的同时,能够沉淀出结构化的知识系列篇章,也算是给后来者带来一些有价值的内容,而更多的是通过这种方式来自我鞭策。最后来一张草图,随着后续章节的完善还会不断完善整个知识体系,也希望各路朋友能够多提意见,一起打造出最完善合理的知识体系。

我是如何输出编程知识体系的(文末附思维导图)_第4张图片

工程实践:

代码三部曲,最全代码治理知识体系(上)

代码三部曲,最全代码治理知识体系(中)

代码三部曲,最全代码治理知识体系(下)

职业成长:

职业成长的逻辑模型

996下的最后一根稻草

架构设计:

JVM核心知识体系

高并发编程知识体系

分布式架构知识体系

源码分析:

spring容器的本质(上)

spring容器的本质(下)

通往区块链的最后一张船票

基础理论:

JVM虚拟机实现机制

计算机代码的本质

计算机运算的本质

关于计算机编码这篇就够了

关注公众号《编程原理》,升级你的编程知识体系

你可能感兴趣的:(我是如何输出编程知识体系的(文末附思维导图))