《程序员的底层思维》读书笔记

news2025/1/31 8:13:35

人是能够习惯于任何环境的生物,之前你认为自己难以克服的困难,慢慢都会适应了。

维克多弗兰克《活出生命的意义》

文章目录

    • 人是能够习惯于任何环境的生物,之前你认为自己难以克服的困难,慢慢都会适应了。
  • 基础思维能力
  • 逻辑思维
  • 批判化思维
  • 纬度思维
  • 分类思维
  • 分治思维
  • 简单思维
  • 成长型思维
  • 模型思维
  • 量化思维

基础思维能力

我不止一次发现,当我觉得一个地方的命名有些别扭的时候,往往就意味着要么这个地方我没思考清楚,要么是我抽象错了。

提取重复代码只是重构工作的第一步,对重复代码进行概念抽象,寻找有意义的命名才是我们工作的重点。

任何软件系统的设计都基于归纳法,而非演绎法,即软件设计人员总是通过对现有世界和业务的总结提炼,而无法通过推测演绎完成软件设计。设计人员无法对业务的未来做出预测,只能基于有限的经验,尽量保证设计的灵活性和正确性。

抽象层次越高,其内涵越小、外延越大,也就是说它的含义越小、泛化能力越强。比如,牛就要比水牛的抽象层次更高,因为它可以表达所有的牛,水牛只是牛的一个种类。
抽象层次越高,内涵越小、外延越大,泛化能力越弱。然而其代价就是业务语义表达能力越弱。

越抽象,越通用,可扩展性越强,其语义的表达能力就越弱。越具体、越不好扩展,其语义表达能力就越强。所以,对抽象层次的的权衡是我们系统设计的关键所在,也是区分普通程序员和优秀程序员的重要参考指标。

逻辑思维

在这里插入图片描述

批判化思维

中台的底层逻辑,用一句话解释就是通过复用提升研发效率。

业务中台低效的根本原因在于:前台业务和业务中台的”深度单体耦合“。

正如尼古拉斯所说,在现代生活中,简单的做法一直难以实现,因为它有违某些努力寻求复杂化,以证明其工作合理性的人所秉持的精神。

正如Neal Ford在《软件架构》一书中提到,当一个架构师设计一个系统的时候,他如果选择重用,那么同时也选择了耦合。因为重用不管是通过组合还是继承来实现,都会引入耦合。所以,如果你不想耦合,可以采用重复代替重用。也就是,重用高耦合,重复低耦合。架构设计需要从中做出取舍。

能使团队更加敏捷的架构师比只做决定的架构师更有价值。因为只做决定的架构师会成为团队的瓶颈。显然,一个架构师的价值与他所做的决定是成反比的。Martin甚至不认为架构师(Architect)这个名词是合适的,他认为更合适的叫法应该是向导(Guide).即一个更有经验的人带领团队走出复杂的迷雾。

许多后劲不足的人主要是过早停止了学习和成长。

TL必须深入思考业务,严格把控PD提出的需求,把伪需求,无价值需求挡在门外,防止他们侵占原有团队原本有限的技术资源,从而让技术团队将更多的精力投入到系统优化上去。

纬度思维

一个人能进行思考的纬度越多,对一个问题的理解就会越全面,越深入,进而超越那些只会单一维度思考的人。

如果一个人一生只能收到点状努力的即时效益,从来没有享受过一次线性周期的成果回报,这就叫穷人勤奋的一生

当复杂的业务在大脑中纠缠不清的时候,我们可以利用矩阵的形式把问题显性化,从而更好做决策和判断,把复杂的问题变成”填空题“。

分类思维

分类的本质是将有共性的事物放在一起。共性的本质是对象之间的交集,这个交集要么是共同属性,要么是共同行为。分类有助于我们洞察问题的本质。

分治思维

分治的价值在于,我们不应该试着在同一时间把整个问题域塞进自己的大脑,而应该试着以某种方式去组织问题,以便能够在同一时刻专注于一个特定的部分。可以让我们尽量减少在任意时间内所要思考的问题的复杂度。

在这里插入图片描述
Z轴拆分:通常叫做数据分片(Partitioning),是把一个大的数据集拆分为多个小的数据集的方法。

简单思维

奥卡姆剃刀原理:指如无必要,勿增实体,即简单有效原理。

简化的本质是熵减活动,而事物都在缓慢熵增。熵减是逆向做功,通过更多的努力让复杂混乱的系统重新有序。

艺术借助轻巧单薄的形象唤起人们的情感,对抗复杂本质的力量是脆弱。

把一件简单事情搞复杂是简单事,但要把一件复杂的事情搞简单却是复杂的事。

成长型思维

  • 决定你成长的第一步不是你是否努力,是你是否相信努力。
  • 成长型思维的人认为,成功是学习的记过,努力是通往成功的关键。

模型思维

  • 混沌大学创始人李善友教授认为,没有好的思维模型,再多的知识积累也是低水平的重复。成人学习的目的不是获取更多的信息量,而是学习更好的思维模型。
  • 世界上没有完美的模型,甚至连正确的模型都没有。再软件开发过程中,我们也要以发展的眼光来看待模型,能解决当前问题的模型就是好模型。

量化思维

  • 从某种意义上来说,度量的结果一定是片面的,只能反映部分事实。
  • 指标和目标通常不是充分和必要的关系。
  • 只要缺陷可以很快被修复,那么有缺陷就不可怕,缺陷多也不可怕。我们怕的是每个缺陷的修复难度都很高,更怕的是缺陷的修复对原有代码伤筋动骨。
  • 量化的关键在于两点:1 能否进行数字化 2 数字化之后能否收集到数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/521218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日学术速递5.12

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.ImageBind: Holistic AI learning across six modalities 标题:ImageBind:跨六种模式的整体人工智能学习 作者:Mengyuan Yan Jessica Lin Mont…

支付系统设计三:渠道网关设计04-渠道数据补全

文章目录 前言一、交易信息准备1. MessageDescription内容2. 交易信息填充3. 开户机构信息填充4. 省市区域信息填充5. 银行信息填充 二、路由处理三、支付渠道数据补全1.服务端支付渠道获取2. 支付渠道通用数据补全2.1 支付渠道账户信息补全2.1 商户信息补全结束 3. 支付渠道差…

具有噪声标签的鲁棒医学图像分割的点类仿射损失校正

文章目录 Joint Class-Affinity Loss Correction for Robust Medical Image Segmentation with Noisy Labels摘要本文方法Differentiated Affinity Reasoning (DAR)Class-Affinity Loss Correction (CALC)Class-Level Loss CorrectionAffinity-Level Loss CorrectionClass-Affi…

AcWing算法提高课-1.3.4数字组合

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 本题链接&#xff08;AcWing&#xff09; 点这里 题目描述 给定 N N N 个正整数 A 1 , A 2 , … , A N A_1,A_2,…,A_N A1​,A2​,…,AN​&#xff0c;从中选出若干个数&#xff0c;使它们…

轻松搭建冒险岛服务器-冒险岛私服搭建详细教程

想要拥有一个属于自己的冒险岛世界吗&#xff1f;想要一步步学习如何架设冒险岛服务器吗&#xff1f;本文将从如何选择服务器、安装系统、配置环境、搭建数据库、部署网站、上传文件、启动服务等8个方面&#xff0c;一步步为大家详细讲解冒险岛架设教程。让你轻松打造属于自己的…

sql 性能优化基于explain调优

文章目录 Explain分析&#xff1f;问题描述解决方案 Explain分析&#xff1f; 关于Explain具体可以干什么&#xff0c;有哪些优缺点&#xff0c;本博主的文章有写到&#xff0c;这是链接地址: 点击这里查看. 下面来说下Explain在项目实战中&#xff0c;如何去进行优化。 问题…

7年老人,30岁的测试说辞就辞,“人员优化”4个字,泰裤辣...

前几天&#xff0c;一个认识了好几年在大厂做测试的程序员朋友&#xff0c;年近30了&#xff0c;在公司做了7年了&#xff0c;一直兢兢业业&#xff0c;最后还是却被大厂以“人员优化”的名义无情被辞&#xff0c;据他说&#xff0c;有一个月散伙饭都吃了好几顿…… 在很多企业…

【ChatGPT】国内免费使用ChatGPT镜像

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 什么是ChatGPT镜像&#xff1f; 亲测&#xff1a; 一、二狗问答(AI对话) 二、AiDuTu 三、WOChat 四、ChatGPT(个人感觉最好用) 我们可以利用ChatGPT干什么&#xff1f; 一、三分…

薪人薪事 java开发实习一面

目录 1.常用数据结构&#xff0c;区别及使用场景2.数组和链表在内存中数据的分布情况3.HashMap底层数据结构4.put操作5.JVM内存区域6.各个区域存放什么东西7.创建一个对象&#xff0c;内存怎么分配的8.堆中内存怎么划分&#xff0c;gc怎么回收9.IOC 原理10.Bean存放在哪里11.AO…

支付系统设计三:渠道网关设计05-交易持久化

文章目录 前言一、领域模型持久化服务工厂二、聚合创建工厂1. 模型创建1.1 获取域模型Class1.2 新建模型1.3 数据填充 2. 模型持久化2.1 获取域模型对应的仓储2.2 调用域模型仓储进行持久化 总结 前言 本篇将解析交易信息入库&#xff0c;即对上送的参数&#xff0c;在进行校验…

关于ASA广告归因接入方法

投放苹果ASA广告&#xff0c;提高 app 曝光率、下载量的增长&#xff0c;那么我们该如何从后台看到投放广告的效果呢&#xff1f; 我们可以借助Apple Ads归因API。那什么是归因&#xff1f;什么又是API呢&#xff1f; 归因&#xff1a;可以给用户打标签&#xff0c;然后看他在…

[GUET-CTF2019]encrypt 题解

本题是输入了一个字符串&#xff0c;进行了rc4加密&#xff0c;和魔改的base64加密 RC4算法初始化函数 RC4加密过程 魔改的base64加密 最后加密的字符串是byte_602080 我们可以将byte_602080提取出来&#xff0c;下面是提取数据的IDC脚本&#xff0c;得到了密文 #include<…

赫夫曼树和赫夫曼编码详解

目录 何为赫夫曼树&#xff1f; 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树&#xff1f; 树的路径长度&#xff1a;从树根到每一结点的路径长度之和 结点的带权路径长度&#xff1a;从树根到该结点的路径长度…

2023网络安全十大顶级工具

从事网络安全工作&#xff0c;手上自然离不开一些重要的网络安全工具。今天&#xff0c;分享10大网络安全工具。 一、Kali Linux Kali 是一个基于 Debian 的 Linux 发行版。它的目标就是为了简单&#xff1a;在一个实用的工具包里尽可能多的包含渗透和审计工具。Kali 实现了这…

【AI面试】CNN 和 transformer 的问题汇总

​ CNN卷积神经网络和transformer相关的知识&#xff0c;是AI的一个基础的&#xff0c;也是前言的知识点。一般面试官会从以下这些问题入手&#xff1a; 卷积神经网络&#xff0c;有什么特点&#xff1f;1*1卷积核有什么作用&#xff1f;计算经过卷积的输出尺寸大小空洞卷积你…

机器学习之朴素贝叶斯三、拉普拉斯平滑技术、优化改进情感分析

文章目录 一、前文问题1. 先看下改进前我们的代码计算部分2. 问题分析&#xff1a; 二、针对问题进行解决1. 什么是拉普拉斯平滑技术2. 拉普拉斯优化-下溢上溢问题3. 改进地方分析&#xff1a;4.改进优化1.优化一&#xff0c;对条件概率计算进行优化2.优化二&#xff0c;对后延…

从小白到黑客高手:一份全面详细的学习路线指南

前言 黑客从入门到精通需要经过深入的学习和实践&#xff0c;这是一个需要长时间投入和大量精力的过程。在这份学习路线中&#xff0c;我将为你介绍黑客学习的基本知识和技能&#xff0c;帮助你逐步掌握黑客技能。 黑客 一、入门阶段 1.了解计算机基础知识 学习计算机基础知…

红黑树(小白教学)

分享一个动画展示的网址&#xff1a;Red/Black Tree Visualization (lerogo.com) 将红黑树之前&#xff0c;我们先来了解一下什么叫做2-3树&#xff01;&#xff01;&#xff01; 在我们以前学习的过程中&#xff08;二分搜索树、完全二叉树等&#xff09;结点都是存放了一个元…

Auto_GPT:如何使用Auto-GPT、安装、开发

文章目录 前言一、使用前提二、如何在您的 PC 上安装 Auto-GPT第 1 步&#xff1a;安装 Python第 2 步&#xff1a;获取 Auto-GPT 源代码和 OpenAI API 密钥第 3 步&#xff1a;在 Windows、MacOS和 Linux上安装 Auto-GPT 三、如何在你的 PC 上运行Auto-GPT总结 前言 Auto-GPT…

Redis消息队列(1)

一)消息队列:从字面意思上来看是存储消息的队列&#xff0c;最简单的消息队列包含三个元素: 1)消息队列:存储和管理消息&#xff0c;也被称之为是消息代理 2)生产者:发送消息到消息队列 3)消费者:从消息队列中获取消息并处理消息 4)当有用户想要进行秒杀下单的时候&#xff0c;…