1/ 抽象,有人把它定义为对客观世界单纯提取某些特性加以认识的思维活动。抽象思维,可以理解为一种信息压缩的过程。
2/ 抽象的艺术,在于受个体的资源限制下,能够始终抓住事物的最主要的特征和矛盾,用高效节能的方式和外界环境发生交互;并且能够根据环境的迅速变化,灵活调整适合新环境的抽象模型。这里的关键词是:主要矛盾,高效节能,外界环境,灵活调整。
3/ 抽象的艺术 (art of abstraction) 和抽象艺术 (abstract art) 是两个完全不同的东西,但前者比后者要重要千万倍。人和人之间的鸡同鸭讲,可以看成是彼此对世界理解的抽象出来的模型不一样不匹配而已, 虽然他们的模型在特定时刻对于各自所处的局部环境都有其合理性。
4/ 另一种情况,即使是一个类似的抽象模型,大家如果完全是在不同层面在讨论,也可能毫无交集。同样是上网浏览,普通人看到的是网页的信息,软件工程师看到是背后的 html 和 javascript 代码,网络工程师看的是路由器如何传输数据,硬件工程师思考的是CPU 芯片如何高效读取数据。
5/ 如果你在前人设计的抽象模型和语境里思考分析,一开始你就把自己限定了,很难比前人有突破有超越。所有的抽象模型,都是对现实的一种简化的设定。技术进步,会不断把各种简化设定给打破,创造新的抽象模型。这也是机会所在。打破的越彻底,机会就越多。
6/ 范式,可以理解为一类抽象模型。范式转移,就是抽象模型的大变迁。
7/ 最悲剧的是在某个抽象模型中的一个模块,辛辛苦苦做了很多事,一旦经济的抽象模型变了,老的模块和相关的知识体系不需要无用了,瞬间就会价值归零甚至是负的。
8/ 大学里设定的各种专业,可以看成是旧知识体系里抽象出来的人为的概念。专业过窄,和外界应用的接口过少,出来谋生的选择就越窄。做销售的可以看成是万金油,好的销售可以和任何新的应用接口,(至少目前还)不会被新技术抛弃,但是这么重要的知识,大学里居然缺乏系统性的课程来培训。
9/ 能够灵活和低成本地迁移到各种新的应用场景的抽象模型,是强大的抽象模型。
10/ 面向对象的编程 (object oriented programming), 就是一种典型的抽象的艺术。只需要知道调用对象 (object) 的方法 (method),无需理解对象底层功能如何实现。场景变化时,只需要(别人)增加新的底层方法的代码,而(自己的)软件抽象架构无须改动。
11/ 面向对象编程的 polymorphism 就是指 object 的方法可以灵活应对多种应用场景。 比如一个“开”字,可以开车,开飞机,开船,还有开窍。不管技术如何变化,老司机 (抽象化者)只需要调用“开”字,底层方法的代码实现自有别人 (被抽象化者)代劳实现,成本极低。
12/ 拙劣的项目经理,为了图省事不去要求程序员建立长期有拓展性的抽象架构,面对新的应用场景时则往往被迫要把程序完全推倒重写,成本代价极高。
13/ 拙劣的人生规划者,不经深度思考随便学了个专业找了个工作,面对新浮现的经济技术版图时,要被迫推倒重来,再学新的技能和二十多岁的大学毕业生在一个起跑线上竞争.
14/ 被抽象化,可以理解为被外界限定了输入和输出,然后自己就按照这种设定的输入和输出来做事。找工作,本质上都是找的都是被别人抽象化出来的任务。被抽象化,长期看会导致利润微薄,因为第一你最终会有很多竞争者,第二因为输入和输出被限定,你就无法发挥创造力,发掘自身潜力和价值。这也是为什么硬件公司利润长期看远低于平台级软件公司的原因之一。
15/ 从抽象者的角度看,定义好输入和输出之后,其思考角度就会聚焦在不断限制压缩被抽象化的模块的成本上。这是被抽象化者的宿命。
16/ 智者要顺应时代的经济技术趋势,发挥自己的创意,重新抽象化这个世界,定义新的输入和输出。这需要长期持续的投入摸索和一些运气,但其自由愉悦的境界是甘于被抽象化者所无法理解的。
17/ 借用古话:抽象者劳心,被抽象化者劳力。
18/ 所谓软件吞噬世界,本质上是“软件的抽象化 + 零边际成本 + 规模效应” 吞噬世界。
19/ 话语权和叙事 (narrative) ,可以理解为不同的抽象模型的竞争。这是战略层面的竞争。在这个层面放弃努力,而甘于在他人抽象化的旧模型里奋斗,再怎么跳也出不了如来佛的手掌。
(未完待续)
0
推荐