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

这篇具有很好参考价值的文章主要介绍了《程序员的底层思维》读书笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

基础思维能力

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

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

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

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

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

逻辑思维

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

批判化思维

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

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

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

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

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

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

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

纬度思维

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

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

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

分类思维

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

分治思维

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

《程序员的底层思维》读书笔记
Z轴拆分:通常叫做数据分片(Partitioning),是把一个大的数据集拆分为多个小的数据集的方法。

简单思维

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

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

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

把一件简单事情搞复杂是简单事,但要把一件复杂的事情搞简单却是复杂的事。文章来源地址https://www.toymoban.com/news/detail-449990.html

成长型思维

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

模型思维

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

量化思维

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

到了这里,关于《程序员的底层思维》读书笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一本书揭秘程序员如何培养架构思维!

    在程序员的职业规划中,成为软件架构师是一个非常有吸引力的选择。但是对于如何才能成为一名架构师,不少同学认为只要代码写得好,就能得到公司提拔,晋升为架构师。 还真不是这样的,如果不具备架构思维,即使代码能写到极致,在开展工作时也将不可避免地掉到坑

    2024年04月14日
    浏览(44)
  • 《从程序员到架构师》:从现在开始培养架构思维,一点都不晚

    《从程序员到架构师》:从现在开始培养架构思维,一点都不晚 尽管大家都明白软件架构非常重要,但是能够真正理解并应用软件架构的核心思维去解决实战的商业项目,确实大多数程序员所欠缺的。本文将从一个全新的视角,重新带领大家了解下程序员到架构师的进阶以及

    2024年02月06日
    浏览(55)
  • 黑马程序员 Docker笔记

    本篇学习笔记文档对应B站视频: 同学们,在前两天我们学习了Linux操作系统的常见命令以及如何在Linux上部署一个单体项目。大家想一想自己最大的感受是什么? 我相信,除了个别天赋异禀的同学以外,大多数同学都会有相同的感受,那就是麻烦。核心体现在三点: 命令太

    2024年01月23日
    浏览(69)
  • 10.4K Star!程序员为程序员针对性优化的开源免费笔记

    平时我一直用Notion来记录内容为主,但也一直关注着其他开源产品。上周正好看到一款非常受欢迎的开源免费笔记,今天就推荐给大家: VNote 。 VNote一个由程序员为程序员打造的开源笔记应用,基于Qt开发,专注于使用 Markdown 来写作的群体。它提供完美的编辑体验和强大的笔

    2024年02月12日
    浏览(51)
  • 软考备考-程序员-备考笔记

    持续更新中》》》》》 希赛网:每日一练和往年真题是免费的 软考通:完全免费 软考真题:完全免费(已不免费) 51CTO题库:微信小程序,不用下载,顺手 试卷题目情况 上午场均为选择题(题量75左右),下午场为大题(大题6道,内置多个填空题) 一、计算机软件与软件工程

    2024年02月09日
    浏览(40)
  • 学习笔记-微服务高级(黑马程序员)

    测试软件 jmeter 雪崩问题 个微服务往往依赖于多个其它微服务,服务提供者I发生了故障,依赖于当前服务的其它服务随着时间的推移形成级联失败 超时处理 设定超时时间,请求超过一定时间没有响应就返回错误信息 仓壁模式 限定每个业务能使用的线程数,避免耗尽整个tom

    2024年04月25日
    浏览(56)
  • 黑马程序员---微服务笔记【实用篇】

        微服务实现流程:  所有要学的技术:  分层次教学:  具体分层:  单体架构 将业务所有功能集中在一个项目中开发,打成一个包部署 优点:架构简单、部署成本低 缺点:耦合度高 分布式架构 根据业务功能对系统进行查分,每个业务模块作为独立项目开发,称为一

    2024年02月07日
    浏览(61)
  • 学习笔记-微服务基础(黑马程序员)

    spring cloud spring cloud alibaba eureka-server 注册中心 eureka-client 客户端 每30s发送心跳 服务 服务消费者 服务提供者 依赖 启动类 添加注解 @EnableEurekaServer 配置文件 application.yml 依赖 配置文件 application.yml 添加注解 @LoadBlanced 修改url 自定义负载均衡策略 1、定义新的IRule,将轮询策略(

    2024年04月13日
    浏览(58)
  • [学习笔记]黑马程序员python教程

    1.9.1异常的捕获 1.9.1.1 为什么要捕获异常 1.9.1.2 捕获常规的异常 1.9.1.3 捕获指定的异常 e是接受异常信息的变量 1.9.1.4 捕获多个异常 1.9.1.5 捕获全部异常 1.9.1.6 异常的else 1.9.1.7 异常的finally 1.9.2 异常的传递 如果异常是在某一层产生,但是没有被catch,那么会继续往上层抛出,此

    2024年02月07日
    浏览(74)
  • SpringBoot-黑马程序员-学习笔记(三)

    目录 30.springboot整合MyBatis-plus 32.SSM整合 38.MP中的条件查询 小知识:许多放在类前面的注解,比如@Mapper,@Service都是将该类定义成一个Bean,交给spring管理 39.Service模块 1.创建普通springboot项目,勾选Mysql 框架 2.在pom包里面导入mybatis-plus的坐标 3.把数据层的类继承BaseMapper这个接口

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包