Awesome-Coder: 程序员的技术视野、知识管理与职业规划
博观而约取,厚积而薄发。
在这个知识爆炸与终身学习/碎片化学习为主的时代,我们面临的问题之一就是如何进行有效学习,不仅能有效平衡广度与深度,并且能真正的积淀下来,提升自己的研发效能。笔者个人浅论,技术能力的培养主要分为三个方面:知识广度,编程能力与知识深度。Awesome-Coder 系列即是致力于提升开发者的高效学习能力与实际研发效能,该系列由 Knowledge MindMap, RoadMap, Awesome Links, Awesome CheatSheet, Awesome CS Books Warehouse 以及 coding-snippets 这几个模块/部分组成。
所谓知识广度,即是为实际问题选择合适的解决方案的能力,广义来说也是眼界与格局的表现。它并不拘泥于某个技术方向或者行业领域,而需要对传统/流行的各类语言、工具、框架、库、服务等有一定的认识;能够明晰各个方案的优劣,并在较高的层次(High Level)描述相关原理。知识广度的拓展与保持需要建立在庞大的阅读量与知识沉淀能力上,笔者习惯利用碎片时间浏览 HN, Reddit, Medium, Twitter 来了解资讯文章,在维护 Frontend Weekly, 每周阅读清单与前端开发周报的过程中也不断强迫自己去阅读与探究。另一方面,笔者坚定地即认为,唯有建立符合自己认知方式的知识图谱,才能有效地沉淀知识,明晰知识边界并进行不断地探索。上车伊始,笔者即致力于构建自己的 MindMap, IT 技术图谱与知识架构,并在数年来不断维护与刷新;同时,笔者将日常阅读、学习与实践中发掘的优秀的资料,按照知识图谱中定义的各个领域的知识体系分门别类地存放在 Awesome Links : Guide to Galaxy 中,以方便快速地检索与查找。
知识广度的拓展也并非一蹴而就之事,需得循序渐进,从初窥门径,到登堂入室,最后融会贯通;笔者这几年技术视野与能力的变迁,亦可以参考仓库中的 TechRoad, 技术之路系列文章。另一方面,乱花渐欲迷人眼,太多的碎片化知识反而会使人迷失方向;此时便需要不断阅读 Awesome-CS-Books-Warehouse 中收录的优秀书籍/系列。
所谓编程能力,并不仅仅是编写代码(Write Code)的能力,而是包含了阅读、编写、理解、重构、抽象等多个方面,是所谓的代码管理/掌控。其外在表现之一即是能够随时随地用合适的语言无阻塞地实现某些功能需求,对于常见的语法,接口,算法,设计模式等能够做到心随意动,信手拈来。编程能力是提升研发效能的重要保障,于笔者而言也是毕生应该追求的目标与爱好之一。笔者的编程能力较弱,日常开发,特别是在多语言多框架并用的场景下,往往会需要不断地中断,查找以继续工作,也是令我颇为苦恼。笔者目前是致力于完善 Awesome Cheatsheet: 语法速览, 实践备忘,从零到一,上手即用,对于日常开发中用到的相关知识的备忘录/清单进行总结, 快速掌握或者回顾某个语言/框架/工具的语法或使用要点。同时将常用的,有借鉴或者锻炼价值的代码片,沉淀到 coding-snippets: Code Snippets, DataStructure, Algorithm and DesignPattern Implementations for Several Programming Language, Web, etc. 中。
所谓知识深度,即是能够对某个方面做到深入了解,并且达到融会贯通,洞若观火,可以随心所欲地加以扩展、优化、创新等改造或变换。这方面则更加的见仁见智,不同的领域与方向对于深度的定义与挖掘方向也是千差万别。笔者自知能力有限,也不敢妄加评判,根据自己浅薄的认知将常见的工程师成长路径总结在了 RoadMap, 成长路线图 中,此外若有兴趣可以前往笔者的 Github 笔记仓库浏览指正某些领域的浅薄探究。
知识深度则依赖于以下各个领域的专项文章/书籍, ✨ 友情链接:
-
ProgrammingLanguage Series: 编程语言语法基础与工程实践
由于笔者平日忙于工作,几乎所有线上的文档都是我夫人帮忙整理,在此特别致谢;同时也感谢我家的布丁安静的趴在脚边,不再那么粪发涂墙。
笔者所有文章遵循 知识共享 署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,欢迎转载,尊重版权。如果觉得本系列对你有所帮助,欢迎给我家布丁买点狗粮(支付宝扫码)~