【阅读】一周翻过《构建之法》,笔记整理

news/2024/5/14 6:50:32/文章来源:https://blog.csdn.net/m0_63238256/article/details/127398984

文章目录

  • 🚩 前言
  • 🥦 阅读笔记
  • 🌾 结语


🚩 前言

我的阅读方式

我拿到这本书挺久了,之前已经零散地看过一部分,最近一周集中地花了一些时间,将整本书看过了一遍。看得比较粗略,正如“好读书,不求甚解”(我甚至没有去看书中提到的那些参考资料)。

这本书比较强调要实践、”做中学“,但我是个人阅读,缺乏一个实践的环境,同时也还没具备开发软件的经验和能力,因此我阅读这本书的方式可能有些偏离它本身的理念了。

但这并不妨碍我通过简单的阅读,稍稍增加一些对于软件工程的感性认知

相遇

和这本书的相遇是偶然的,因为它来自CSDN视频号的直播抽奖。书作者是邹欣老师,他在C站好像一直挺活跃的哈哈。

初感受

尝试着看过前面几页后,我感觉我有兴趣继续看下去,也许是它幽默风趣的语言风格吸引了我。学校也有软件工程对应的教材,但阅读起来就相对枯燥很多。

在读者反馈部分有一句话:读烂书浪费时间,读好书却节省时间。那么,《构建之法》这本书如何呢?

🥦 阅读笔记

1

对于软件开发的阶段,书中举了个飞机的例子

  • 很多小孩叠过纸飞机,心里一定有”长大了我要在天上飞”的想法。
  • 多年以后,很多人还有“在天上飞”的想法。有人居然就实现了。(热气球升天)
  • 和上面提到的偶尔“疯狂”的行为比起来,另外一些人能持续疯狂好几年。(莱特兄弟的飞机)

这个例子莫名地就拨动了我的情绪,也许是那跨越时间的执着?我也不太知道。总之这个故事是《构建之法》早期吸引到我的一部分,这里写得比较草率,有兴趣可以自己看一下原书。

书中像这样一些故事或比喻挺多的,这虽然是一本关于软件工程的书,但阅读起来也不至于太过无聊。

2

  • 软件工程师不能按时交付的原因之一,是他们有时候不满足于“解决目前直接的问题”,而是想“解决问题背后的问题”,或者“解决通用的、不直接的、但有重大意义的问题”。

看到这里,我有点像在照镜子。我感觉我经常因为陷入这样的状态而跟不上节奏,例如:

  • 上课听着听着就想一个问题去了,然后后面就听不明白了
  • 纠结于某些细节,以至于无法按时完成作业或任务

而这些不满足于现有问题的思考也许是弊大于利,它经常得不到什么有用的结果。

3

教育的三个区域

  • 恐慌区,高层次问题,无暇顾及
  • 学习区,中间层次的问题,花脑力解决
  • 舒适区,精通,低层次的问题,变成自动操作

我们有时会强迫自己进入恐慌区,然而没有实力且心理准备也不够。比如想学习算法,听说《算法导论》很赞,就抱着这块砖头开始啃,多少人能一直啃下来?

这可能不只是一个坚持不坚持的问题,同时也是这件事情合不合适的问题。

书中的建议是:

  • 把那些低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。选择合适的学习区,不断构建自己的舒适区,从而拓展学习区,最后在某些领域达到技能的精通。

4

  • 回首当年,我(的态度)的确是错了。任何事情,当你仔细探究,你就会理解它的量和质;当你对一个领域的神韵足够了解,并开始连接这个领域的表现形式和实现细节的时候,任何一个领域都是会变得引人入胜的。

这个观点值得仔细考虑。一个领域你不深入到一定的程度,就有很多乐趣都体会不到。

就像,旋转是乒乓球的一大精髓,一些尝试不久新手是不会旋球的,又如何能比较完整地体会到乒乓球的乐趣呢?

5

看到了“两人合作”那一章,两人合作、结对编程有那么多好处,以至于我有些心潮澎湃,忍不住想要大干一场,但貌似也没有什么合适的项目和伙伴,呜呜。

6

  • 代码风格:花括号都独占一行。容易看清程序的结构和对应关系,方便调试。

我试着用了一段时间,感觉不太喜欢,因为代码的行数会变得很多。程序代码很容易变得很长,给浏览带来了一些困难。

7

  • goto:函数最好有单一的出口,为了达到这一目的,可以使用goto。

我赞同。曾多次被告诫不要使用 goto,因为它会破坏程序的结构。我想,这应该是对 goto 的不恰当使用导致的,goto 太灵活了。

使用 goto 构建函数的单一出口是一个不错的办法,给我程序的调试带来了一些方便(个人较少使用 debug 工具,习惯通过输出中间结果进行 debug)。

8

断言:看到了断言这个东西,也许我可以尝试这用起来

9

如何正确地给予反馈?反馈有三个层次:

  • 最外层:行为和后果
  • 中间层:习惯和动机
  • 最内层:本质和固有属性

应该有意识地选择比较合适的反馈层次。个人感觉比较常见的是过于深入核心的攻击,例如:
你就是自私!你就是自私!
“自私”是一种固有的属性,被攻击一方已经无法回应。

具体情况具体分析,有时深入的反馈也是有必要的。

10

  • 敏捷流程:冲刺阶段是时间驱动的,时间一到就结束。这个特点看似不起眼,但其实它有效地断了各种延期想法的后路。

也许我可以尝试着改变自己的拖延症

  • 关于成果:告知已经抓出来 N 个腐败分子固然解气,但关键是“还有多少还在台上”。

  • 强调短周期迭代:一些艰难的任务往往在短周期的迭代中得不到应有的重视

需要小心

11

  • 软件工程这个领域出现了不少热闹的宣言和冷静的反思,百花齐放当然好,但是都有各自的适用范围和时代背景

12

  • 没拿准是不是要通知某一方面的人员:宁可过分沟通

沟通!

充分信任和授权:看到书中多次讲到这一点,忍不住有些向往这样的氛围。

13

需求分析

  • 用户也不一定很清楚自己的需求,需要挖掘和引导他们表达出真实的需求。
  • 软件开发的过程,就是用户最需要的东西在层层链条中传送、转换、实现、扭曲的过程(有一个非常著名的秋千图)。
  • 计划和估计:探险者总是高估自己的能力,低估未知的困难——不然他们就不会出门探险了!

下面这个故事莫名有些拨动了我的情绪,于是我决定把它也记下来。

在这里插入图片描述

14

锻炼自己:参加多种社团并组织一些活动,最好是草根的活动,而不是由上而下规定的活动

15

软件设计和实现

  • 一图胜千言
  • 有种文学化编程:写文档,时不时有些代码(而不是写程序,是不是加上一些注释)。

之前就有人看我一篇算法博客说没看懂,不知道多加上一些图会不会好一些。

16

  • 诺尔曼借了一台彩色显示器自己用,他发现彩色显示器并没有增加可分辨的价值,但是实验结束后,他自己却很不愿意把彩色显示器还回去
  • 设计的三个层次:本能行为反思

17

  • 避免频繁地到处改动代码而引入新的bug,是谓之稳定
  • 我们往往奖励末端治理的英雄,但是最初提建议的人未必得到奖励

18

创新的八个迷思

  1. 灵光一闪现,伟大的创新就紧随其后
  2. 大家都喜欢创新
  3. 好的想法会赢
  4. 创新者都是一马当先
  5. 要成为领域的专家,才能创新
  6. 技术是创新的关键
  7. 成功的团队更能创新
    • 专家对于颠覆性技术的估计大多数都是错误的
    • 在高校讲课也感觉到这样一些困难。要知道,这些高校都是喊着培养创新人才、创新型大学的口号和企业合作的。“我们支持改革,但是这事情以前从来没有做过,所以不能做”
  8. 创新者就是冒险家
    • 关键不是喜欢冒险,也不是躲避风险,而是从错误中恢复并继续努力
    • 做的不一样很容易,做得更好才是非常困难的

19

创新的时机

  • 只先一步
  • 现在技术圈子里大家都在吹的那些技术,如SoLoMo、只能硬件、人工智能、云等,它们处于哪一个阶段?你应该贸然出手么?

20

创新和作坊

  • 1)专注于你真正想做的事,也许比较寂寞,因为它不是网上热捧的“高科技”
  • 2)如果你觉得解决普天大众的问题很难,能否从解决自己的问题、身边的问题开始?
  • 3)真正做好服务,不管用户有多少。保护用户的数据和隐私,就像你希望别人保护你的隐私一样,不要找借口
  • 4)有胸怀去找至少一个伙伴,一起成长
  • 5)能自我管理,按照自己的节奏来分享体会和成果
  • 6)享受你的工作和生活,当别人询问你的工作职位时,能够情绪稳定地说:我自己干

21

领导力

  • 请你看看你身边的那些“管人的领导”,他们擅长的是把人当作东西来管理,还是领导大家达成团队的目标
  • 一个有雄心壮志、有紧迫感、有纪律的“我”,领导一个三心二意、有拖延症、得过且过的“我”
  • 但是随着时光流逝,领导力在慢慢丧失,直到下一次觉醒
  • 知识是有用的,但解决实际问题我们需要技能
  • 员工内部驱动因素:自主性,精通某个领域,使命

22

书中给任课老师和助教的建议

  • 知识体系是构建出来的,而不是接收到的。与其灌输知识,不如让学生自己构建
  • 人的认知模型改变得非常缓慢,搞那些速成的、疯狂的、喊口号的培训未必改变了人的认知模型
  • 提问能帮助构建知识体系。所以我们要鼓励学生思考、辩论
  • 身心投入是学习的关键。没有一定的工作量,怎么能达到“身心投入”呢?

🌾 结语

关于这篇笔记

这是一篇零散的阅读笔记,纪录的东西之间是孤立的,只是大体沿着《构建之法》的章节顺序,因此不是一篇对读者友好的笔记。我写下它,主要是个人进行一次回顾,回顾中也感受到一些前面读过的内容已经忘记了,当时的感受也变得模糊了,再翻一遍的时候会有种找回丢失的物品的惊喜感。

笔记中许多对于书本内容的引用做了一些删除,有些断章取义,建议还是可以自己阅读原书

在笔记的前面部分,我相对较多地写了一些自己的感受或想法,而笔记后面部分则慢慢地变成了简单的摘抄。难道书籍后阶段的阅读就没有产生什么感受或想法吗?
当然不是。可能是有些累了就想着要偷懒了,后面对这篇笔记的态度更像是一个待完成的任务,而不是一次我渴望进行的总结和分享了。心里就想着:“快点叭,把这些东西搬运上去,活就干完了!”
这不是个好状态。

最后

这本书令人较多地感受到方法论层面的东西,我感觉自己读这本书不像是在学软件工程,至少不是我想象中的软件工程。但不管怎样,好像都没有关系,这里附上爱因斯坦的一段话:

  • 用专业知识教育人是不够的。通过专业教育,他可以成为一种有用的机器,但是不能成为一个和谐发展的人。要使学生对价值有所理解并且产生热烈的感情,那是最基本的。
    他必须获得对没和道德上的善恶鲜明的辨别力。否则,他——连同他的专业知识——就更像一只受过很好训练的狗,而不像是一个和谐发展的人。
    为了获得对别人和对集体的适当关系,他必须学习去了解人们的动机、他们的幻想和他们的疾苦。

我之前读过《计算机概论》([美]J.Glenn Brookshear Dennis Brylow 著),笔者感觉这是本不错的书,它有个特点是每章后面都会鼓励读者去思考相关的社会问题



2022.10.20

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么管理员工混工时的现象?

如果员工存在混工时,这表明公司的管理存在漏洞。让懒散的员工认为自己可以混日子,让没有绩效考核的员工默认可以混日子,同时让对公司感到失望的员工可以完全躺平等待被公司解雇。 工时管理一直是企业需求与痛点。特别是在疫情时期&#xff0c…

华为云数据库GaussDB 为企业核心数据运行提供优质保障

华为云数据库GaussDB 为企业核心数据运行提供优质保障 在网络信息科学技术不断发展的今天,海量存储信息数据中大量的存储资源被浪费?你有没有遇见信息数据备份恢复很慢的情况?让人特别的烦躁,特别是企业遇见了这些情况&#xff0c…

JDBC工具类和JDBC登录案例

JDBC工具类: 抽取JDBC工具类:JDBCUtils 目的:简化书写 分析∶ 1.注册驱动也抽取 2.抽取一个方法获取连接对象 3.抽取一个方法释放资源 代码实现:/*** JDBC工具类*/ public class JDBCUtils {private static String url;private static String user;private static Strin…

Cadence Allegro PCB设计88问解析(十一) 之 Allegro中文件自动保存时间设置

一个学习信号完整性的layout工程师 大家在设计图纸或者编辑文档时,最常点击的应该就是保存图标了。谁也不想因为软件闪退、电脑断电等情况,我们的劳动成果就白白的消失了。在我们用Allegro进行PCB设计,就会有一个自动保存的功能,每…

数字化转型大潮下,企业如何做好绩效管理?

久其EPM白皮书的正式发布,为企业财务的数字化转型实践提供了极具价值的参考。企业绩效管理(EPM)成为行业热点对于一家企业来说,做好绩效管理究竟有多重要?对于这个问题,全球商界传奇人物、GE前CEO杰克韦尔奇…

事件对象的介绍

● 什么是事件对象?就是当你触发一个事件以后,对该事件的一些描述信息 ● 例如: ○ 你触发一个点击事件时,你点了哪个位置,坐标多少,都在事件对象的属性中体现 ○ 你触发一个键盘事件时,你按下…

探索增强型灰狼优化算法

文章目录一、理论基础1、灰狼优化算法2、探索增强型灰狼优化算法(1)改进的位置更新公式(2)非线性控制参数策略(3)EEGWO算法伪代码二、仿真实验与结果分析三、参考文献一、理论基础 1、灰狼优化算法 请参考…

计算机科学与技术是信息文明时代的入口,是数字世界的基石,是人们必须掌握的基本技能之一

从人类科技发展史的角度看,软件工程(计算机编程)是刚刚开始的信息文明巨大的趋势中的一部份。人类至今经历过三次工业革命。第一次工业革命的代表是蒸汽机,使得人类拥有了强大的动力。第二次工业革命的代表是电力和石油&#xff0…

高数_第6章无穷级数_幂级数之__阿贝尔定理

阿贝尔定理&#xff1a; 如果幂级数 在 点 x x₀(x₀≠0)处收敛&#xff0c; 则对于适合不等式 |x| < |x₀|的一切x, 都有幂级数 在点 x 处绝对收敛&#xff1b; 反之&#xff0c;如果幂级数 在点 x x₀ (x₀≠0)处发散&#xff0c; 则对于适合不等式 |x| >…

使用Code Chart绘制流程图

Code Chart介绍 Code Chart是一个基于 Javascript 的图表和图表工具&#xff0c;它基于 markdown 语法来简化和加速生成流程图的过程&#xff0c;也不止于生成流程图。 工具地址&#xff1a;https://www.iodraw.com/codechart 图形 头部用graph 或flowchart 关键字来声明流程…

Anaconda安装

文章目录1. Anaconda3简介2. Anaconda3下载3. Anaconda3安装1. Anaconda3简介 Anaconda3 是一个用于 Python 科学计算和机器学习的开源工具&#xff0c;它是 Python 的一个科学计算发行版&#xff0c;支持 Linux、macOS 和 Windows 系统&#xff0c;包含 conda 等众多工具包和…

python抓取Prometheus的数据(使用prometheus-api-client库)

python抓取Prometheus的数据(使用prometheus-api-client库) 0、写在前面 我们要想抓取Prometheus的数据,一般想到的就是requests请求,爬虫的方式来抓取,这是可行的,当然,还有一个第三方库直接封装好了,直接用就行,代码也比较少,源码点进去就能看明白,这个库叫promet…

多链世界的“高速公路”:一文读懂跨链协议演进与未来

当我们发现自己正处于另一个“加密货币寒冬”之中——这在很大程度上是由一系列项目破产、监管打击和宏观看跌推动的——但重要的是&#xff0c;我们不要忽视促成下一次牛市的技术突破和将权力下放的精神重新引入大众。 上一个周期的主题之一仍然是行业参与者讨论的最前沿的主…

无网络机器上,win下vscode客户端通过ssh连接linux服务器

目录 参考文献 前言 下载安装VSCode 下载 安装 下载和安装必要的VSCode插件 下载 安装 客户端通过ssh远程连接linux服务器 下载并安装ssh 远程连接linux服务器 参考文献 Windows使用VSCode远程Linux&#xff08;ConteOS&#xff09;开发/调试C/C&#xff08;超详细…

是真是假,AI可根据声音检测是否感染新冠 准确率达89%

据媒体报道&#xff0c;近日&#xff0c;在西班牙巴塞罗那举行的欧洲呼吸学会国际会议上公布的一项研究显示&#xff0c;AI可通过手机应用程序从人们声音中检测出新冠肺炎感染&#xff0c;其准确率达到89%。 新冠肺炎感染通常会影响上呼吸道和声带&#xff0c;导致一个人的声音…

No6.从零搭建spring-cloud-alibaba微服务框架,实现fegin、gateway、springevent等(一)

代码地址与接口看总目录&#xff1a;【学习笔记】记录冷冷-pig项目的学习过程&#xff0c;大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客 之前只零碎的学习过spring-cloud-alibaba&#xff0c;并没有全面了解过&#xff0c;这次学习p…

React+fetch 发送post请求 处理请求头参数配置

观看本文前 你要对fetch有一些了解 如果不了解可以先查看我的文章 React之初识fetch 通过fetch发送一个简单GET请求 然后我们来看 pust基本语法 fetch("请求地址",{method: post,headers: {Content-Type: application/json,"Authorization": "Bearer…

传统的回调函数与 ES6中的promise回调以及 ES7 的async/await终极的异步同步化

目录 传统的回调函数封装 ES6中的promise 异步同步化&#xff08;终极&#xff09; 传统的回调函数封装 js中的回调函数的理解&#xff1a;回调函数就是传递一个参数化函数&#xff0c;就是将这个函数作为一个参数传到另外一个主函数里面&#xff0c;当那个主函数执行完之后…

ACM MM 2022 Oral | PRVR: 新的文本到视频跨模态检索子任务

作者: 陈先客方向: 跨模态检索学校: 浙江工商大学概览本文介绍一篇ACM MM 2022 Oral的工作。基于传统的跨模态文本-视频检索(Video-to-Text Retrieval, T2VR)任务&#xff0c;该工作提出了一个全新的文本到视频跨模态检索子任务&#xff0c;即部分相关的视频检索(Partially Rel…

vue动态换肤(自定义主题)

前言 有时候一个项目的主题并不能满足所有人的审美, 所以这个时候就需要换肤功能登场了。 下面是一个换肤demo, 思路很简单&#xff0c;定义一个全局css变量&#xff0c;然后在页面根元素获取变量并动态修改这个变量值即可完成。 效果 具体实现 1.准备项目 准备一个含有less、…