上一篇文章 软体开发中的“无绪” 介绍了无绪的概念,讲的是软体开发的过程中,应该思考如何让程式的使用者可以无绪。
这篇则是延伸无绪的概念,讲解开发人员自学的时候,如何找出新技术背后的知识,并且堆叠知识。
正文开始
软体技术的发展都是基于无绪的,每个无绪的新技术中总会埋藏一些知识。如果每一项新技术都是新的知识,那我们就只能把每项技术都试过一遍,才能将技术转化成知识。这样的学习方法使我们没办法用过去的经验来学习新技术,导致较低的学习效率。
幸好人类的大脑有杰出的 抽象能力,也就是我们常说的推理、归纳、一般化、举一反三等等,意思都差不多。
学习一项新技术时,试着将技术抽象一下,排除不相关的细节,找出技术背后的知识。
通常可以透过下列三个问题来找出技术背后的知识:
技术的本质是什么?想解决什么问题?前置知识是什么?知识总是会和无关紧要的细节纠缠在一起,当知识和细节纠缠在一起时,知识只能被应用在狭窄的情境。若归纳出技术背后的知识,就会发现有许多技术的知识本质是相同的。这帮助你在学习新技术时,能够看透新技术无绪的表面,推理出新技术内部的原理。只要理解内部的原理,新技术也只剩下外面一层皮,学习速度自然加快许多。
学习新知识时也要尽量学习作者的思维。去了解作者为什么要这样设计,以及学习作者如何设计;学会这些思维层面的知识,会帮助「未来的你」进行思考。遇到新技术或问题时,会有更多推测与决策的能力。
重视知识的本质
对一个开发人员来说非常重要,海量的新技术总是不断的成长,让很多人感叹跟不上新技术。新技术数量的不断成长的对策,就是 抓住不变的知识。大量的新技术其实只是一层皮,支撑在背后的技术跟知识都是数十年来不变的东西。演算法及资料结构不会过时;程式设计理论不会过时[^1];开发论及方法论不会过时[^2];良好的编写程式习惯永远不会过时[^3];分析问题与决策的能力不会过时[^4]...
因此在学习新技术的同时,也别忘了阅读软体界大神们的 经典书籍 以及上述 不变的知识。因为这些和思维相关的知识,能够帮助我们进行更好的决策、学习、判断与知识堆叠。
文章内容整理自以下书籍并加以归纳与简化:
软件框架设计的艺术(Practical API Design)暗时间注脚
[^1]: 程式设计理论: OOP、OOAD
[^2]: 开发论及方法论: CI/CD、DDD、Clean Architecture、BBD、TDD、ATDD、Specification By Example
[^3]: 良好的编写程式习惯: Clean Code、易读程式之美学、单元测试
[^4]: 分析问题与决策: 重构、SOLID 原则、Design Pattern