一、人类具有相同或相似的大脑,别人能想到(理解)你也能想到
这个观点来自知名UP主“底层原理/底层原理1988”的一期视频,我在考研那段时间我觉得是最宝贵的一个收获。
这个思维在开发领域也是一个有力的神器。 在调库开发的时候,我们常常见到“符合直觉”这个词。但其实我们会发现在一些比较火爆的库的使用中即便没写“符合直觉”,但用起来感觉还是会“符合直觉”,这并不是巧合,而是对这个思维的又一次认证。所以没必要畏惧任何复杂的库,都是人写的,都是人用的,库作者的理解甚至可能不如你。(看似废话)同理,如果你是编写库或者软件的那个人…
除了库,还有对开源项目复杂性的畏惧。开源项目其实五花八门的,也不一定是完全符合规范的,毕竟都是世界各地思维方式不用的网友贡献的。其实常见的问题就是俩,一个是跑起来(如果你想用还没发行版),一个是了解行文逻辑(你想改造)。不管哪方面,其实都需要相当大量的经验,可以说你的经验越多,顺利进行的概率就越大。主要是你积累这些经验的过程,而这个过程又是这个观点的利用…
如果你进入一个新的领域(或者是你牵头的领域),而又找不到一种规范(比如代码结构、操作逻辑),你可以依据在其他领域的经验(前提是你在其他方面有足够的理解和经验)直接写直接做,它将自动符合直觉…
要常常进行这样的追问,那第一个干这件事的人是怎么想的?以这个为基础问题不断追问…
二、比起死记硬背,大脑更容易记住的是逻辑
这是认知科学里非常确定的结论。这里我记得知名UP主“底层原理/底层原理1988”是通过脑科学(神经元、突触、神经网络)角度描述的,我认为人类曾经就是靠逻辑走向的自由世界。
之前我剪了一个视频”十分钟了解Web开发“,我有个朋友就跟我说没学过Python,看你视频是有门槛的。我想说–我想传播的是一种逻辑,而非某项技术本身,所以可以不基于任何编程语言,看就行了,了解了再去追问。
“摇头晃脑的念经,而不去思考”不会有任何收获。世界是物质的世界,不是说念经念咒就能变出来粮食和物品,如果可以,那资本家雇佣的将是祭司而不是工人,工厂里面将满是经文而不是生产资料。这就是一个最常见,并且最容易使用实用主义去验证的事实。那现在考虑“执念经”和“理解经文”之间差了哪些东西呢?
真理我不知道是什么,或许变或许不变,但我能掌握的只有那可以被验证的实用主义。
我举个例子,比如说让你背下来一段你不理解的话,你可能感觉这段话拗口晦涩,念一遍都费劲。但是通常一句话里面是由一个中心逻辑和一些配套的细节组成的,如果你具备这方面的知识,并理解这句话主体的意思和用词方法,你甚至可以自己编出来意思一样,用失真率很低的语言,并且是用自己的语言描述出来。
你可能不相信,我学习过三十多种的编程语言、脚本语言,接触过很多很多的框架和库,这一点你可以通过访问我的Github主页去验证。我第一次这样说的时候,很多人说你学的多但是你学的肯定不精。这里我想说的并不是我学的多,也不是学的精不精的问题。而是我在学第一种语言的时候就发现一种问题,就是不管是这门语言的原生功能还是库里带的功能,是不可能完全被”背诵“下来的,我记得十几年前我还做出种抄写语言官方文档的行为(抄写过iAPP俗语言和Ruby语言的文档),现在想来非常之愚蠢,就像是我提到过的“摇头晃脑的念经”,而不去理解其逻辑,而在学习了很多种语言以后,我发现其实他们其实是有共性的,而且这些逻辑是相通的。比如顺序执行、循环、条件判断、分包这些编程语言应有的基础功能,比如Web库应有哪些功能,文本处理库应该具备哪些功能,这些在学习一门新语言的时候主动去对应和验证是否都有其实就差不多了,拿来就用,或者说你具备了”在干中学“的能力。所以说没必要像我一下系统学习听说过的每一种编程语言,只要掌握编程的逻辑,一通百通…
逻辑虽然重要,但逻辑不是一切,这个自己悟。(如果因为过于强调逻辑而痛苦,你可以了解一下荣格,但非必要不要了解,估计也理解不了)
三、没有最好,只有最合适
在开发世界总会看见这样的论调:“xxx是最好的编程语言”、“xxx是最好的框架”。这些观点差点给我唬住。追问一下凭什么最好?是因为最合适,最合适就是最好。看似罗圈话,最合适比最好多的是”选择性“。
我说在技术选型上”没有最好,只有最合适“,这点其实是提醒各位要综合考量。我不拿编程举例子,我拿日常生活中的工具举例子。比如我的目的是将钉子锤进木板里面,这时候我有钳子、扳手、大锤子、小钉锤、皮锤,那我肯定选择小钉锤了。并且我会选型号、质量、趁手程度最好的那个钉锤。如果我只有一把钳子呢,钳子可以用来拔钉子,头部也是金属的,我可以利用这一点去锤钉子进木板,因为我只有一把钳子。同理,我只有一把扳手呢?我只有一把皮锤呢?皮锤也可以试着锤两下。而且如果我用的扳手的设计者考虑到了使用者会用来锤的设计,那更是不错了。
我说没有最好,只有最合适。很多人就直接会联想到,那我把我的工具箱装满,每种工具我都买一个(每种技术都学),这又回到上一点中我说的问题了。要掌握的是逻辑,要做到在问题导向下,没有锤子也要尽量找到考虑到用来锤的扳手,而且锤子这种东西存不存在还要另说呢。换句话说,即便互联网如此发达的今天,也没有任何一个人能知晓一切,就像那个无法填满的工具箱。在这个新的层面上看,一个人也不可能具有像佛陀那样的”无上正觉“(至少我没见过这样的人),没办法去理解一切事物的根本逻辑,也像那个无法填满的工具箱。以此类推…
四、是业务(具体需求)驱动,而非技术驱动,不必执着于技术
我也曾经这样考虑过–”先学会某种技术,之后我知道这些技术具体能做什么,之后在能做到的基础下去进行开发“这种想法。这其实是一种“必须由技术驱动业务”的本末倒置的想法,其实恰恰相反,而且一些独特的技术被创造出来以后,通常也是先变相创造了需求,之后再反向产生一种对技术的需要,这种形式的存在让我们产生“技术是最重要”的这种错觉。
许多本源的需求本身就存在,他们在没有计算机、软件、网络之前就存在了。技术里面操作细节也都是目的驱动的。最简单的,我想处理一段字符串,这个操作最终想拿到的那个存在变量中的数据肯是具有一定意义的,或许是给后续处理做准备,或许是更正了语意,或者是排版了格式。每一步操作都是有目的性的,所以做开发在原子上就是目的驱动的,小目的最终组成大目的(实际的需求)。
如果从技术的角度去看,学会无数种技术框架、规范、模板以后,不断的扩充自己能干什么,之后在这个前提下判断自己想干什么,这相当于把自己”困住了“。而且这与所谓创造性是相悖的行为(如果你需要创造性的话),也是一种敷衍。这是对已知的复用,不过也并非没有意义。
我建议的方式是先有需求驱动,之后再去找解决方法。如果是广为人知的需求,那么必然有成熟的解决办法。如果是小众需求,另想办法。如果你不理解我这句话,可以过几年再回来看一次。
技术革新很快。
五、独立思考,而非被牵动
从来不存在什么权威,信奉的应该是实用主义。甚至我在写篇博客的时候也不敢说这些逻辑对于读者完全适用,或者是永远是对的。如果你想了解一个东西,就去找那个最精纯的根源去了解…去读这个理论和做法真正来自哪本书…真正出处在哪…原作者是怎么说的,而不是找一个短视频解说一下就算了解了。因为语言会让思想(逻辑、想法)层层失真,你去最原本最精纯的地方看至少相对接近提出者的真正想法,这也只能说加大了你对作者真正想法理解的概率。
如果你没有时间,那至少要从实用主义的角度去验证。
不存在什么权威,每个人有自己的观点,甚至他们在同一个学派或圈子。
因为专业的营销、心理学策略、固有思维等等因素,出现了很多“二极管”(单向导通)思维,什么什么就是好,什么什么就是坏。但是现实呢,一切事物都是多元的。如果说每个事物都有属性的标识,这个属性可以说是有无穷大条。中国古典哲学的核心之一的“太极”也是破除二元论的重要依据,不能只看静态结果,不看条件、过程、关系等等多方面因素。你可以用中国古代“太极无限可分”、“万事万物皆太极”这样的思考角度去理解。
学会独立思考,不能人云亦云。(尽量)
六、允许争论,永不固步自封
在任何哲学(爱智慧)学派的历史上,永远是允许存在争论的,如果人家的思想比你好要做的只有学习。我感觉这条“允许争论”在技术领域依旧适用于我所说的第三条和第四条。
就拿最近比较火爆的 Agent 编程来说,对我来说可是亏大了。我之前熬过无数的夜,付出过无数的时间和精力去学习了解各种技术的细节,写Demo(我为了忘了细节的时候回去看),可是我考研回来继续写代码的时候突然有个朋友告诉我Agent可以直接替我写代码了,而且 AI 知道不可估量的信息,甚至还能自己检索,当时买了各种的计划、尝试各种模型,当时感觉不太行其实。不过半年过去的现现在我确实服了,真的能一定程度上做到又快又好了,反正我不可能五分钟完成一个模块的设计、编码。而且我发现了一个现象,技术一如既往的更新的很快,而且在 AI 这个杠杆下变得更快了,变得人力所不能及了。
Agent 编程确实方便了,但是也存在很多争论。有的人对 AI 编程嗤之以鼻,见到就骂,有的人对 AI 过分推崇,夸大宣传。而现实呢,只能说你自己用用!我的评价是有的确实好用。
至少从实用主义出发自己判断。
如果你还愿意拥抱技术,必须不断的更新自己。
你如果看到这里,欢迎跟我讨论一下,感激不尽。