读书笔记:《程序员修炼之道——从小工到专家》

news2024/9/21 9:58:27

前言

此书有两个版本,我读的是第一版,大学时买了略略翻过,当时太懵懂无法理解书中提出的观点,看了也记不得,感觉比较适用于有过1~2个项目工作经验的同学,初学者不一定能看得懂,工作之后看,有很多新感悟,能与书中的情景感同身受,在此记录一下阅读的感悟
在这里插入图片描述

第一章 注重实效的哲学

1. 我的源码让猫给吃了

请对你的源码(工作)负责。如果你没有做存在风险操作的备份,那是你的错,一旦出了问题,即使你告诉老板 “我的源码让猫给吃了” 也没用,我们应该提供各种解决方案而不是找蹩脚的借口,不要说做不到,而是要做点什么来挽回糟糕的局面,或许你需要额外的资源,没关系,不要害怕提出要求,也不要怕承认需要别人的帮助

在所有弱点中,最大的弱点是害怕暴露弱点。

换位思考 :如果有人——比如银行客服、柜台 或者汽车维修员店员,对你说蹩脚的借口,你是什么反应?你心里会怎么想这个人和他们的公司?

2. 软件的熵

熵是一个物理学概念,指的是某个系统中 “无序” 的总量。当软件的无序增长时,程序员们称之为 “软件腐烂”。

糟糕的代码跟破窗户(只要一段时间没清洁修理,就会有废弃感)一样,不要留着 “破窗户” 不修,不要容忍破窗户,发现一个就修一个,即使没有足够完善,就用木板把它钉起来,比如说添加注释、用假数据替代(说明)等,采取某种行动来防止软件进一步损坏,并说明情势在你控制之下。

如果没有人有时间去清理项目中的破窗户、碎玻璃,那么最好找个垃圾罐(丢了),或者搬到别处去,不要让熵赢得胜利。

如果你所在的项目代码十分漂亮——编写整洁、设计良好、并且很优雅,那你一定会注意不去破坏他,你也不会想成为第一个破坏的人。

感悟: 实际上,接触过项目工程代码的人,多多少少都可能会碰见 “破窗户”,按照我以前的做法,就是沿用前人的写法,一直错下去了,但实际上好的程序员,会去提出问题,找到根本原因并想办法解决或者推动别人一起去解决问题,直接复制前人的做法在表面上好像给自己减少了很多工作,但其实也让自己脑子减少了思考,变得懒惰!!!可能一直无法进步!

3. 石头汤与煮青蛙

石头汤:士兵戏弄村民,利用村民的好奇从他们那里弄到了食物,最后大家都吃了几个月来第一顿饱饭。士兵充当了村民团结起来的催化剂,和他们一起做到了本来做不到的事情,在这件事上士兵所催生的变化对村民完全有利。

煮青蛙:如果抓一个青蛙放进沸水里,青蛙一下子就跳出来,但是如果把青蛙放进冷水里,慢慢加热,青蛙不会注意到周围温度的变化,会呆在锅里直到被煮熟,冷水加热对青蛙来说,是害死他的催化过程。

感悟: 我们可以主动选择催生变化的方向,每个人做的事都可能催化项目的最终结果,要记住大图景,不要像青蛙一样,最终 “被煮熟了” 才发现早就要跳,要持续不断关注周围发生的变化,而不只是只关注自己做的事情。

4. 足够好的软件

没有完美的软件,“足够好” 不是意味着所有系统都必须满足用户需求,只是宣扬应该给用户机会参与决定制作的软件,什么标准才是足够好。

不该许诺无法兑现的deadline,也不该为了赶上deadline而削减本该完成的工程内容,而是使质量变成需求问题,因为很多用户宁愿用一款 “不完美” 的软件,也不希望再等几天甚至更久才完成的 “完美” 软件,尽早给用户使用,他们的反馈会指引我们把软件做得更好

感悟: 做任何的功能、软件,都应该知道在 “何时止步” ,做到什么程度就可以交付了,而不是把本该一周完成的工作,做到两周三周甚至更久,只是为了把工作做得(自以为的)“完美”,实际上在交付后,用户会给予(他们希望)做得更好的反馈,这比花费更久时间做出来的 “完美” 更好,因为自以为的完美不一定是用户想要的,可能还会推翻这种完美。。。。刚开始工作时经常犯这个错误。。其实不可能做得完美,只能做得足够好。

5. 你的知识资产

程序员的知识和经验是最重要的财富,但它们都是有时效的知识,随着技术的更新换代,需要紧跟发展,定时更新自己的知识库,需要多元化的学习,拓宽知识面,需要根据自身情况制定目标,比如学习一种语言、阅读一本技术书籍,非技术书籍,尝试在不同的操作系统上开发,看网课,或者现在也可以从GPT上获取很多有用信息。

工作中有很多学习的机会,比如别人向你请教问题、阅读和研究某些问题,去寻找答案就是在学习。

要时刻保批判地思考你听到的和看到的,有可能某些知识并不适用于你当前的情况,有些知识可能在写出来的时候就有争议,大部分都是作者个人的看法,且现在很多标题党或者带节奏的文章,但拥有大的知识量并保持批判的分析,能帮助我们解决很多复杂问题。

6. 交流

作为开发人员,无法避免交流,至少要知道需求是什么,但一定要清楚地认识到,就算有最好的设计和最漂亮的代码,不与他人交流,最终都不会有好结果。

注意要点:
1. 知道你想说什么
2. 了解你的听众(换位思考,对方怎么理解,需要什么信息)
3. 选择时机
4. 选择风格(表达方式)
5. 让文档美观
6. 让他人参与方案确认并获取反馈
7. 做倾听者
8. 事事有回应

感悟:我刚开始工作的时候,也曾自命不凡,感觉自己做什么先做了,做好了再交付,遇到问题就自己解决,就自己一股脑蛮干,现在再回头看,觉得自己傻乎乎的,因为工作≠学习研究,学习的时候有自己的思考是好事,但是在工作中,很多时候想太多(可能都是没用的,且浪费了很多时间),不如去找同事或者老大多交流几句,有问题自己解决不了就及时寻求帮助!可能卡自己好几天的问题,拿去问别人后,五分钟就解决了,还能提高工作效率,同时自己还能在跟别人沟通的过程中,了解更多,这些都可能是自己思考不到的。


第二章 注重实效的途径

7.

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

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

相关文章

学习通、智慧职教刷课脚本

🐐个人主页 可惜已不在 🐋可以分享给身边有需要的人🐶 🐉有用的话就留下一个三连吧😼 目录 一.安装 脚本运行器 篡改猴 - Microsoft Edge Addons 二.安装脚本 三.扩展 一.安装 脚本运行器 安装浏览器 Microsoft E…

【多因子分组箱线图】:附Origin详细画图教程

目录 No.1 理解箱线图 1 什么是箱线图 2 箱线图的组成 No.2 画图流程 1 导入数据并绘图 2 设置绘图细节 3 设置坐标轴 4 效果图 No.1 理解箱线图 1 什么是箱线图 箱线图,又称箱形图、盒须图或盒式图,用于体现数据分散情况的统计图。在视觉上辅助…

初始爬虫5

响应码: 数据处理: re模块(正则表达式) re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明: 1. 基本用法 1.1 匹配模式 …

CDGA|如何实施非常精准的数据治理策略?

在信息化高速发展的今天,数据已成为企业最重要的生产要素之一,其价值日益凸显。然而,随着数据量的爆炸性增长,如何精准地管理和控制数据成为企业亟待解决的问题。本文将从设定目标、制定策略、组织结构建设、制度流程规范以及技术…

新发现!一键管理所有远程会话的神器——1Remote

大家好,今天给大家介绍一款非常实用的工具——1Remote,这是一款现代化的个人远程会话管理器与启动器,让您的远程工作变得更加轻松高效! 项目介绍 🚀 核心功能概览 多协议支持:1Remote支持RDP、SSH、VNC、…

OBD服务0X0A--请求排放相关的永久DTC

服务0x0A的主要目的是允许外部测试设备获取所有具有“永久DTC状态”的故障诊断码(DTC)。这些DTCs是“已确认”的,并且被保留在服务器的非易失性存储器(NVRAM)中,直到针对每个DTC的相应监控器确定故障不再存…

如何使用ORJSONResponse增强FastAPI应用性能:转换任意类型为JSON

在FastAPI中,ORJSONResponse 是一种自定义响应类型,它使用 orjson 库来提高 JSON 数据的序列化性能。orjson 是一个快速且正确的 Python JSON 库,它支持 dataclass、datetime 和 numpy 等数据类型的序列化。使用 ORJSONResponse 可以提升 API…

打造民国风格炫酷个人网页:用HTML和CSS3传递民国风韵

附源码!!! 感谢支持 小弟不断创作网站demo感兴趣的可以关注支持一下 对了 俺在结尾带上了自己用的 背景 大家可以尝试换一下效果更好哦~~~ 如何创建一个民国风格的炫酷网页 在这篇博客中,我们将展示如何制作一个结合民国风格和…

【Java文件操作】文件系统操作文件内容操作

文件系统操作 常见API 在Java中,File类是用于文件和目录路径名的抽象表示。以下是一些常见的方法: 构造方法: File(String pathname):根据给定的路径创建一个File对象。File(String parent, String child):根据父路径…

CANFD接口卡配套奇瑞上位机检测电池状态

随着汽车电子的高速发展,车内信息的急剧增多,传统的CAN总线的数据传输能力已经很难满足车辆ECU的数据传输需求了,此时CANFD就应运而生了。 CANFD和CAN最主要的区别就是CANFD的ID段和数据段能够以不同的速率传输数据,这就保证了即…

下一代 AI 医疗:知识图谱RAG + 多智能体,听医生的话没前途,让医生听你的话才是正道!

下一代 AI 医疗:知识图谱RAG 多智能体,听医生的话没前途,让医生听你的话才是正道! 医疗算法趋势现代 AI 医疗算法问题医学影像算法的局限医疗知识图谱的问题基于最本质循证医学实现人类级因果推理摆脱LLM概率性输出 嘘&#xff0…

用python操作Excel表格(自动化办公)!

文章开始前打个小广告——分享一份Python学习大礼包(激活码安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程)点击领取,100%免费! 一、openpyxl介绍安装 1.…

影刀RPA:考勤自动打卡小程序

上班族,最惊心动魄的一件事,是什么,当然是:打卡 即使你在智能手机上设置提醒,比如闹钟或者日历事件,提醒自己按时打卡,但依然会忘记 即使公司很开明,使用的考勤系统支持可以设置自…

五大注入攻击网络安全类型介绍

1. SQL注入(SQL Injection) SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一,攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句,来操控数据库执行未授权的操作(如拖库、获取…

不可思议!这7个反共识设计原则,正悄然改变AI应用的未来格局!

引言 在AI技术日益成熟的今天,如何设计出既符合用户需求又具备高度智能化的原生应用,成为摆在开发者面前的重要课题。然而,传统的应用设计思维往往限制了AI潜力的充分发挥。本文提出的七个反共识观点,旨在挑战传统观念&#xff0…

如何优雅的使用 Nacos

简介 问题描述:Nacos 在某一版本后,Spring 官方不再对 Nacos 作版本适配,导致在使用配置中心时,无法导入配置 如何解决:使用 https://start.aliyun.com/ 问题复现 如何解决 新建模块时将服务器 URL 修改为 https://…

UE4_后期处理六—复古电视效果

效果图: 步骤: 1、让场景颜色与复古色相混合,采用强光混合模式,蓝图连接如下图: 效果图如下: 2、把上一章的扫描线效果拿过来,看看扫描线的蓝图节点: 效果图如下: 此效果…

数据为翼,智控未来:EasyCVR视频监控汇聚平台助力城市精准管理

在数字化浪潮席卷全球的今天,智慧城市的概念已不再遥不可及,而是逐步成为现代城市发展的核心驱动力。作为智慧城市的重要组成部分,视频监控系统正以前所未有的速度和规模覆盖城市的每一个角落,成为城市管理者手中的“千里眼”和“…

SOLIDWORKS链阵列功能详解—快速设计链条

在工业产品的设计中,链传动是一种广泛应用的技术,无论是在传送带还是自行车上都能见到它的身影。作为工程师,在进行SOLIDWORKS设计时需要关注产品的整体结构,检查机构运动的合理性,考虑生产成本。 那么如何实现链条的…

学习使用LangGraph x GPT-Researcher构建一个多智能体架构的AI自主研究助理

原文:学习使用LangGraph x GPT-Researcher构建一个多智能体架构的AI自主研究助理 - 百度智能云千帆社区 本文为大家剖析一个通过多智能体协作来完成的AI研究助理,可以用来帮助进行各种综合的在线研究任务并输出报告。该应用基于LangGraph以及开源的GPT-…