原文连接html
摩尔定律对软件开发也是间接奏效的,每过18个月,就会有一半的知识会过时。我以前写的有些文章就已通过期了,今天咱们来聊一个不会那么容易过期的话题 —— 那些业界‘大佬’是怎么思考的? 一个结构化的知识体系是怎样的?程序员
不过要提早说明,本文没那么严肃,仅做抛砖引玉。若是你想要多了解这方面的知识,应该多读几本经典的书籍。面试
前些日子学习了 《10x程序员工做法》、《研发效率破局之道》,内容自己质量很高自没必要说,给我启发较大的是他们的内容组织方式。以 《10x程序员工做法》为例,它的内容是这样组织的:算法
这种设计可让咱们直观地把握课程的主要脉络。编程
思考框架是事物的出发点,用于审视目标、把握方向;基本原则是在思考框架下的核心指导思想;最后在基本原则指导下进行具体实践。后面会详细说明这三者的关系。设计模式
在我看来,这才是一种结构化的知识体系。这种方法能够帮助你创建一套本身的知识体系、认知模型,还能够用来指导你的行动实践。但愿本文也能够给你一些启发。markdown
最上层的思考框架每每是一些哲学问题,无非就是保安常常问你的那三个问题:框架
还有相似的 WWH:oop
《10x 程序员工做法》的思考框架是:学习
估计这个思考框架你从小学、幼儿园老师就会教你,不用多解释。那么问题来了,你们有没有造成这样的思考习惯呢?
这个思考框架,虽然简单,却能够受益终生。
它能够是任何行动的基础。好比我在 上一篇文章中“如何看待新技术章节” 也套用了这个模式:
再好比下次产品经理给你一个需求,套用这个框架,你能够问他:
若是产品回答不上来,那很差意思,回去等通知吧。
碰巧最近也招人(简历砸过来 Y2FybmV5NTIwQGhvdG1haWwuY29t),按照上面的套路,我可能会这样考察你的'要性'(阿里土话,道听途说):
OK,这里留一个思考题,若是你的老板在画大饼,你会怎么怼他呢?
接下来是在思考框架指导下的‘原则’。这些原则相比思考框架要具体一些,是针对特定领域的思想指导,在处理某个特定领域的问题时会更有用一些。
好比 《10x 程序员工做法》概括了四个原则:
由于是付费专栏,因此我也很少剧透,能够看它的导读。
能够举其余咱们比较熟悉的例子,好比面向对象设计的 SOLID 原则:
搞对象的人,看到这些原则就会如数家珍,刚入门的小白可能比较难以理解。他们是历代火影燃烧火的意志沉淀下来的宝贝,没有通过战场的洗礼理解可能不会那么深入。
说一个我编程生涯比较受用的原则,那就是 DRY(Don't repeat yourself),由于它相比SOLID原则、KISS原则,更好理解、或者说更有实践性。
DRY 原则简单说就是识别你的重复代码,思考,而后重构它。
若是你在编程时养成了这种习惯,你会发现你的代码天然而言会有比较良好的结构,同时也可能符合上述各类原则一些特征(实际上它们原本就是交叉和相通的)。
或者说,通过 DRY 原则下的刻意训练,你会造成一种编程品味( 敲黑板,这也是大厂考点)。
相似思想/原则还有不少,好比 Unix 哲学 、Windows 哲学,还有一些算法思想:
经典算法思想,来源zhuanlan.zhihu.com/p/73144439
Unix 哲学
上图有两个彩蛋:
一个是 Ken Thompson(Unix、Go 做者之一,真大神级人物) 很是实用的‘建议’: “拿不许就穷举”, 干就是了,干了再说。
Unix 哲学用一个词归纳就是 KISS(Keep It Simple, Stupid),在这个'面试造火箭,上班拧螺丝钉'内卷年代, 不少人容易走偏,把事情复杂化,写一些花里胡哨代码,作一些花里胡哨的功能。Unix 的远古哲学告诫咱们:简洁就是好,好就是简洁。
第二个是我本身写的,尽管大学时就看过这本书,当时只有盲目崇拜,时隔多年再看,这些原则个个是说到心尖上了,顿时感叹应该把这些'哲学'裱起来,日看夜看。这也是本文的灵感来源。
Windows 哲学
这些原则你说难吗?其实不难,几句话就能够说清楚。
若是你是多年的老鸟,可让你返璞归真。若是你是菜鸟,那你应该背诵下来(开玩笑),或者裱起来挂客厅、搞成壁纸、作成鼠标垫、印在保温瓶上...
再往下更具体,这是在原则指导下、通过实践总结出来的最佳实践/设计模式。能够用于指导解决具体的领域问题。
仍是以 《10x 程序员工做法》为例,它最终的知识结构以下:
举你们比较熟悉的例子,最典型的莫属于面向对象的《设计模式》,它就是属于这个层次的知识:
来源:my.oschina.net/u/4353432/b…
设计模式就是在 SOLID 原则指导下的具体实践。
并非说咱们只要学习思考框架和指导原则就好了,最佳实践也是要刻意学习的。三个层次相得益彰,这样造成的知识体系才是比较稳固的:
最佳实践是在思考框架和指导原则下造成的产物。若是只是掌握最佳实践,停留在皮毛,不去挖掘它的内在思想,则不能作到内化和升华。若是有幸,来到了一个新大陆,这里没有任何最佳实践和设计模式,要怎么办呢?
思想和原则不能脱离实践。
最佳实践一般是别人实践总结出来的, 能复用的就复用是吧?最佳实践、准则、对咱们来讲是站在巨人的肩膀上,是捷径,让咱们能够少走点弯路。
因为每一个人的场景千差万别,别人的实践并不必定适合你, 或者你走在世界前头,上层的思想则是创造最佳实践的有用指导。
另外实践也在深化咱们对上层思想的理解。
实践和思想是相互验证的关系。
后面你们看书、学习某些课程时,能够留意一下它们的组织结构,某种程度上能够折射出做者的水平。
一切都是套路,套了又套。
不要跟我扯什么自*、民*、和*...
来点实际的,软件开发领域选一句让你受益不浅的话,裱起来告诫本身/后人,你会选什么?
我举一些例子吧:
KISS
DRY
SOLID
SPOT
Unix 哲学 17 大原则
程序员的三大美德:懒惰、急躁、傲慢。
来源于Perl 做者 Larry Wall, 附带相关解释:
—— Larry Wall
不是开玩笑,这真是美德。若是身边多几个这样的程序员,就不用996了。
Stay hungry, Stay foolish —— Steve Jobs
Talk is cheap. Show me the code —— Linus Torvalds
...
本文说起 & 扩展阅读
《Unix 编程哲学》
《设计模式》