首页 > 编程语言 >《程序员修炼之道:从小工到专家》第一第二章读书笔记

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

时间:2023-09-29 13:55:05浏览次数:43  
标签:代码 需要 读书笔记 重复 小工 程序员 软件 应该 我们

第一章:追求实效的哲学

第一节:我的源码被猫吃了
在开发过程中,我们经常会遇到一些意想不到的技术问题,导致交付延迟等情况。然而,作为程序员,我们需要诚实和坦率地面对这些问题,并勇于承认自己的错误。我们应该以专业的态度处理这些问题,而不是找借口。

此外,我们要对自己承担的责任负责。如果有些事情超出了我们的控制范围,我们可以提前说明这一点。但是,我们需要对自己应负责的事情负责。如果出现了问题,比如磁盘崩溃而没有备份代码,那么这就是我们的责任。我们不能为错误找借口,而是应该向上级提供可行的解决方案,尽力挽回局面。

第二节:软件的混乱状态
熵是热力学中的概念,指的是系统中的无序程度。在软件工程中也存在类似的熵,即代码的无序状态。随着工程规模的增大,代码的无序状态会变得更加严重。

破窗理论告诉我们,当一个东西本身破旧时,人们不仅不会珍惜,还会进一步破坏。在软件开发中也是如此,如果我们的项目存在很多低劣的设计、错误的决策、糟糕的代码等问题,接手项目的人也会倾向于让它变得更糟糕。相反,如果代码质量良好,我们和接手项目的人都会更加注意保持代码的整洁。因此,我们应该尽早解决项目中存在的问题。

第三节:石头汤和煮青蛙
故事中的士兵们利用石头汤的方法,通过引发村民的好奇心和参与度,最终得到了村民的帮助,大家一起分享了一顿美味的饭菜。这个故事告诉我们,有时候我们需要主动采取行动,而不是等待一切准备好才开始。

在工作中,我们经常会遇到各种阻碍和困难,而请求许可往往会遇到拖延和漠然的态度。在这种情况下,我们不应该等待一切准备就绪,而是应该先行动起来。只要是有益的事情,我们可以先展示一部分结果,然后告诉别人如果有什么改进意见,大家一般都会愿意帮忙。

第四节:足够好的软件
我们应该将质量作为需求问题的一部分。在确定需求时,我们应该考虑到质量这一方面,并与产品或客户商定在规定的时间内可以接受的质量标准。

没有完美的软件,我们应该知道何时停下来。有时候,一个今天很不错的软件可能比明天的完美软件更有价值。我们应该尽早让用户使用软件,他们的反馈通常会帮助我们找到更好的解决方案。

第五节:你的知识资产
知识上的投资总能得到最好的回报。在计算机领域,我们可以将我们了解的技术实现和工作经验视为知识资产,并像管理金融资产一样管理这些知识。

经营知识资产可以从以下几个方面进行:定期投资、多元化、管理风险、低买高卖。定期投资意味着我们需要花时间学习,即使是很小的投资也是很重要的。多元化意味着我们不仅要掌握当前所从事的技术,还要关注技术的发展变化,掌握更多的知识,以便更好地应对变化。管理风险意味着不要把所有的技术都集中在一个地方。低买高卖意味着在新技术流行之前就掌握它,以获得更大的回报。

第六节:有效的交流
在交流中,我们需要明确自己想要表达的核心思想,并围绕这一点展开。了解听众的需求和兴趣,选择适合的风格和方式进行传达。同时,我们还应该注重文档的美观,引导听众参与,并及时回复他人的询问。

第二章:追求实效的途径

第七节:重复的危害
遵循DRY原则是开发可靠且易于理解和维护的软件的唯一途径。DRY是"Don't Repeat Yourself"的缩写。

重复通常有以下几种类型:强制性的重复、无意的重复、无耐心的重复、开发者之间的重复。我们应该尽量避免这些重复,并采取相应的措施来减少重复的发生。

第八节:正交性
正交性是一个从几何学中借鉴而来的概念,指的是某种不相互依赖或解耦的特性。正交性可以提高生产效率,降低代码风险。

在代码设计中应该尽可能考虑正交性

第九节:可撤销性
在设计软件时,我们需要考虑到可能出现的某种错误或需求变更,为此需要构建一个相对灵活的架构,以便于后续的修改和调整。这样的架构具有可撤销性,能够应对未来的变化。

第十节:曳光弹
在黑暗中使用机枪射击时,使用曳光弹可以帮助我们确定目标的位置,而不需要进行复杂的计算。同样地,在软件开发中,我们应该尽早让系统跑起来,然后根据需要逐步完善细节。这样做的好处包括用户能够及早看到可工作的部分、开发者能够构建一个可工作的结构、可以用于演示和感受工作进展。

第十一节:原型与便笺
原型是在忽略细节的情况下,考虑项目流程和主要使用场景的一种方式。通过制作原型,我们可以学习到宝贵的经验教训。制作原型时,我们可以使用便笺或白板,不一定需要编码。制作原型的过程中,我们需要回答一些关键问题,如主要组件的责任是否得到了良好定义、组件间的协作是否得到了良好定义等。

第十二节:领域语言
计算机语言会影响我们思考问题的方式和交流方式。领域语言通常是为了简化流程、配置或控制应用程序而使用的一种语言。DSL(领域特定语言)是一种小型语言,可以扩展自已有语言。在设计DSL时,我们需要权衡可读性和简单性,同时考虑可扩展性和可维护性。

第十三节:估算
通过学习估算并发展到直觉的程度,我们可以确定事物的可行性。估算并非准确度越高越好,而是要在合理的范围内给出一个可行的时间。估算的结果来自于建立系统模型,并根据模型计算出时间。模型应该是动态的,需要不断训练和调整。在被要求进行估算时,我们可以先回答"我等会儿回答你",然后仔细检查估算的步骤,以得到更好的结果。

通过以上的实效哲学和途径,我们可以更加高效地开发软件,提高质量和效率。同时,我们也需要不断学习和改进,以适应不断变化的技术环境。

标签:代码,需要,读书笔记,重复,小工,程序员,软件,应该,我们
From: https://www.cnblogs.com/newzeon/p/17736952.html

相关文章

  • 读后感:《程序员修炼之道》第一部分 - 哲学
    第一部分的《程序员修炼之道》引领我进入了一场关于编程哲学的探索之旅。它不仅仅是一本技术书籍,更是一本关于如何成为优秀程序员的指南。以下是我的一些主要印象和感悟:首先,书中明确了作为程序员的责任感。作者们告诉我们,我们不仅仅是代码的书写者,还是问题的解决者。我们需要理解......
  • 《软件工程:一种实践方法》读书笔记二
    读完本书后,我深刻认识到了软件工程的重要性。软件工程不仅仅是一套流程和工具,更是一种系统的思维方式和态度。通过本书所提供的实践方法,我们可以更好地进行软件开发和维护,提高软件质量,降低维护成本。同时,本书也让我明白了软件工程师的责任感和使命感。作为软件工程师,我们需要时刻......
  • 9月《程序员修炼之道:从小工到专家》阅读笔记
    一、注重实效的哲学1我的源码让猫吃了无论是什么任务,我们都可能出现错误,这时,我们需要尽可能处理好他们以示诚实坦率。我们必须承担责任,一味的推卸责任毫无用处。要找各种选择,而非借口。2软件的熵熵在软件中代表“软件腐烂”。究其原因,最重要为开发项目时的心理/文化。那么为什......
  • 《程序员修炼之道:从小工到专家》读后感九月篇一
    第一章主要讲了程序员修炼的哲学基础,包括注重实效、勇于承认错误和不断学习等。这些内容对我有很大的启示和帮助,让我更加明白了程序员成长之路上的方向和目标。一开始作者强调了注重实效的哲学。程序员在工作中会遇到各种挑战和困难,这种情况下,勇敢地承认错误,并不断尝试原型、测试......
  • 《程序员修炼之道:从小工到专家》读后感九月篇二
    《程序员修炼之道:从小工到专家》的第二章主要讲述了重复的危害和解决重复问题的关键。对于一名程序员来说,重复是不可避免的现象,但过多的重复不仅会降低代码的运行效率,也会给代码的维护带来很多麻烦。因此,解决重复问题对于提高代码质量和效率至关重要。作者对重复的危害进行了详细......
  • 读《程序员修炼之道:从小工到专家》有感1
    《程序员修炼之道:从小工到专家》是一本面向程序员的经典著作。本书围绕着程序员的修炼之道展开,从小工到专家的演进之路,以及如何持续保持学习和提升自己的能力等方面进行了深入探讨。通过精读这本书,我获得了以下几点收获。首先,本书强调了持续学习的重要性。作为程序员,技术更新速度......
  • 读《程序员修炼之道:从小工到专家》有感2
    《程序员修炼之道:从小工到专家》是一本为程序员精心打造的经典之作,它涵盖了从基础知识到高级应用的各种内容,全面而系统地介绍了程序员应该具备的各种技能和素质。以下是我在精读这本书时所做的笔记。一、基础知识编程语言的选择:根据应用场景选择最合适的编程语言,同时掌握语言的......
  • 九月份读书笔记(一)
    《程序员修炼之道:从小工到专家》从序言到第一章结尾这本书是很多公司的新人必备学习资料,正如作者内容所写,这是一本可以说是厕所读物的书,但他的内涵可不是别的厕所读物可以替代的,接下来是第一章节的内容第一章主要探讨了注重实效的程序员的特征和态度。这些特征和态度包括:负责任......
  • 程序员修炼之道:从小工到专家阅读笔记
    程序员要勇于承担错误,这意味着在编程过程中,我们需要敢于面对和解决出现的问题。以下是一些关于勇于承担错误的建议:诚实面对错误:当发现程序中的错误时,不要试图掩盖或忽视它们。诚实地面对问题,承认自己的错误,并寻求解决方案。分析错误原因:在解决问题之前,首先要了解错误发生的......
  • 程序员修炼之道:从小工到专家阅读笔记2
    做程序要及时亡羊补牢修复,这意味着在编程过程中,我们需要时刻关注代码的质量,一旦发现潜在的问题或错误,立即进行修复。遵循编码规范和风格指南,编写易于维护和阅读的代码。这样可以降低出错的可能性,并在出现问题时更容易进行修复。在发现问题时,及时与团队成员沟通,分享自己的发现和解......