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

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

时间:2024-01-15 14:14:24浏览次数:34  
标签:需求 读书笔记 小工 注重实效 程序员 避免 文档 测试 团队

第七章 在项目开始之前
第36节 异想天开的需求

  1. 追求完美: 完美不是在无所需增加的情况下达到的,而是在没有冗余之时实现的。因此,我们应该避免收集过多需求,而是专注于深入挖掘需求,围绕核心功能不断打磨。

  2. 与用户共同工作: 挖掘需求需要与用户一同工作,以用户的思维方式思考问题。

  3. 制定需求文档: 强调需求文档的目标驱动本质,配以UML用例图,有助于明确项目需求。

  4. 保持抽象: 需求制定时应保持一定的抽象,避免过于具体,需求不同于架构和设计,它只是对所需的简要描述。

  5. 维护词汇表: 通过维护词汇表来澄清术语的含义,避免混淆。

  6. 内网发布需求文档: 将需求文档发布到内网,使参与人员随时查看和提出意见。

第37节 打破不可能的谜题

  1. 戈尔迪斯结的启示: 像亚历山大大帝一样,面对看似不可能解决的问题,需要转换思路,找到突破口,不受先人观念的束缚。

  2. 问题回顾: 在处理问题时,反思是否有更容易的解决方法,是否关注真正的问题,避免被外围技术问题转移注意力。

  3. 重新诠释需求: 通过重新诠释需求,有时可以让整个问题消失,就像戈尔迪斯结的奇迹。

第38节 准备就绪

  1. 倾听疑虑: 当反复出现的疑虑时,需要认真倾听并给予足够时间理解,可能会变成更坚实的问题。

  2. 避免拖延: 对于一些问题,不要轻易做出承诺,及时构建原型并推进,避免有效等待与拖延之间的界限。

第39节 规范陷阱

  1. 重要性与陷阱: 编写规范是重要的,但要避免不断增加规范项,注重实效,不要过于详细,避免束缚开发者的发挥。

  2. 开发文档不宜过详: 避免编写过于详细的开发文档,注重简洁,不限制开发者的思考。

第40节 圆圈与箭头

  1. 超越限制: 圆圈和箭头在设计文档中用于解释,但也可能推翻先前的设定,保留弹性空间。

  2. 谨慎采用技术: 不盲目采用技术,将其融入开发实践和能力的语境中,实效的程序员对工具和方法学持批判态度。

第八章 注重实效的项目
第41节 实效的团队

  1. 团队建设: 注重实效的开发者对整体团队有帮助,团队应确保不容忍代码质量问题。

  2. 煮青蛙策略: 制定检测员角色,检查团队整体进度,保持团队协作。

  3. DRY原则: 避免重复工作,指派管理员专门维护重复的资料,确保团队高效运作。

  4. 正交性: 对于较大的团队,按照项目进行组织划分,而不是按工作职务,保持功能性的划分。

  5. 自动化: 通过自动化确保一致性和准确性,尝试在团队所做的每件事情都能自动化。

  6. 知道何时停止: 给团队成员足够的空间和支持,不要过度规定。

第42节 无处不在的自动化

  1. 文明进步: 自动化在不加思索的完成重要操作方面取得文明的进步。

  2. 选择适当的自动化工具: 针对不同场景选择适当的自动化工具,如Cron、Makefile、生成代码、CI/CD工具等。

第43节 无情的测试

  1. 找到自己的Bug: 注重实效的程序员受到找到自己Bug的驱使,早测试、常测试、自动化测试是必要的。

  2. 测试方向: 测试涵盖单元测试、集成测试、验证和校验、异常测试、性能测试、可用性测试等。

  3. 测试方法: 包括回归测试、测试数据、GUI系统测试、对测试进行测试、彻底测试等。

  4. 测试时机: 尽早测试,测试应该是自动完成的,确保在提交代码时测试已全部通过。

第44节 全都是写

  1. 代码与文档结合: 代码应与文档紧密结合,认真对待注释和文档,它们是不可或缺的。

  2. 注释格式: 使用特定格式进行注释,根据语言或IDE推荐的注释格式。

  3. 可执行文档: 利用工具提取注释内容生成文档,如JavaDoc、jazzy等。

第45节 极大的期望

  1. 项目成功的度量: 项目成功应该基于在多大程度上满足用户期望来衡量,与客户多交流期望,了解他们的需求。

  2. 制造惊喜: 适当制造惊喜,采用通用技巧提升项目体验,如气球式帮助、快捷键、日志文件分析器等。

第46节 傲慢与偏见

  1. 不逃避责任: 注重实效的程序员乐于接受挑战,不逃避责任,要在作品上签名,保持公共的代码所有权。

  2. 与业务知识分享: 乐于分享业务知识,与他人沟通,让代码带有质量保证。

  3. 遵循原则: 遵循Kent Beck的建议,采用公共的代码所有权,结对编程,避免匿名带来的危险。

标签:需求,读书笔记,小工,注重实效,程序员,避免,文档,测试,团队
From: https://www.cnblogs.com/newzeon/p/17965223

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:移除盒子
    题目给出一些不同颜色的盒子boxes,盒子的颜色由不同的正数表示。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续k个盒子(k>=1),这样一轮之后你将得到k*k个积分。返回你能获得的最大积分和。 示例1:输入:boxes=[1,3,2,......
  • #yyds干货盘点# LeetCode程序员面试金典:整数替换
    题目给定一个正整数n,你可以做如下操作:如果n是偶数,则用n/2替换n。如果n是奇数,则可以用n+1或n-1替换n。返回n变为1所需的最小替换次数。 示例1:输入:n=8输出:3解释:8->4->2->1示例2:输入:n=7输出:4解释:7->8->4->2->1或7->6-......
  • 程序员如何具备跨行业视角
    为什么程序员要有跨行业视角呢?我发现好一些程序员对于自己35岁以后该干什么毫无概念。我一个前同事在华为待了11年,如今也快40岁了,有一次他跟我说,如果被裁了他不知道自己该去干嘛,岁数已经这么大了,目前在一家外包公司带领团队。我自己虽然还年轻,但是我总会思考,程序员除了根据公司产......
  • #yyds干货盘点# LeetCode程序员面试金典:旋转函数
    题目给定一个长度为n的整数数组nums。假设arrk是数组nums顺时针旋转k个位置后的数组,我们定义nums的旋转函数 F为:F(k)=0*arrk[0]+1*arrk[1]+...+(n-1)*arrk[n-1]返回F(0),F(1),...,F(n-1)中的最大值。生成的测试用例让答案符合32位......
  • #yyds干货盘点# LeetCode程序员面试金典:二叉树的直径
    题目给你一棵二叉树的根节点,返回该树的直径。二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root。两节点之间路径的长度由它们之间边数表示。 示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或[5,2,1,......
  • 「Geometry of Conics」读书笔记
    英文书籍,对我这种纯正中国人十分不友好,咬着牙啃下去了。不想看英文书又找不到中译本的有福了。Chapter1-ElementaryPropertiesofCurvesofSecondDegree如题,都是二次曲线的简单性质和几个等价定义。光学性质\(\mathbf{Theorem\1.1}\)如下图,\(l\)为椭圆\(C\)在\(P......
  • #yyds干货盘点# LeetCode程序员面试金典:至少有 K 个重复字符的最长子串
    题目给你一个字符串s和一个整数k,请你找出s中的最长子串,要求该子串中的每一字符出现次数都不少于k。返回这一子串的长度。如果不存在这样的子字符串,则返回0。 示例1:输入:s="aaabb",k=3输出:3解释:最长子串为"aaa",其中'a'重复了3次。示例2:输入:s="aba......
  • #yyds干货盘点# LeetCode程序员面试金典:01 矩阵
    题目给定一个由0和1组成的矩阵mat,请输出一个大小相同的矩阵,其中每一个格子是mat中对应位置元素到最近的0的距离。两个相邻元素间的距离为1。 示例1:输入:mat=[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例2:输入:mat=[[0,0,0],[0,1,0],[1,1,......
  • 程序员想拿高薪,这3个工具你还不知道?
    在当今竞争激烈的IT市场中,高薪程序员是每个企业都渴望拥有的宝贵资源。如果你渴望在职业生涯中获得更高的收入,那么掌握一些强大的工具是至关重要的。本文将为你介绍3个助力开发的工具,它们将助你成为企业眼中的高薪人才。1.LangChainLangChain由HarrisonChase开发,于2022年10月首......
  • 程序员必知!模板方法模式的实战应用与案例分析
    模板方法模式让子类在不改变算法整体结构的前提下定制特定步骤,例如咖啡制作,不同咖啡遵循相同流程但有独特定制,如拿铁加牛奶,美式不加,这确保了制作流程的一致性,同时满足了不同咖啡的个性化需求,体现了模板方法模式的核心思想。定义模板方法模式是一种行为设计模式,它在一个方法中......