程序员容易忽略的 10 大软件开发定律

简介:   与其他领域一样,软件开发领域也有一些非常经典的定律。这些定律包括了一些法则或软件开发大神的名言。  也就是所谓的“按照组织架构来交付软件”:  “任何一个组织在设计一个系统时,这个系统的结构与这个组织的沟通结构是一致的”。  你或许认为可以通过一些方式来避免这个定律,比如跨功能团队的站会、进度更新和决策矩阵,但最终都不可避免地会发生冲突和分歧,而这些将导致冲突和分歧的过程和结果。  这个定律来自《人月神话》:

  与其他领域一样,软件开发领域也有一些非常经典的定律。这些定律包括了一些法则或软件开发大神的名言。

  也就是所谓的“按照组织架构来交付软件”:

  “任何一个组织在设计一个系统时,这个系统的结构与这个组织的沟通结构是一致的”。

  你或许认为可以通过一些方式来避免这个定律,比如跨功能团队的站会、进度更新和决策矩阵,但最终都不可避免地会发生冲突和分歧,而这些将导致冲突和分歧的过程和结果。

  这个定律来自《人月神话》:

  “在一个已经延期的项目中增加人手只会让项目延期更长”。

  当你意识到项目没有取得预期的进展,并尝试从其他地方调取更多的资源,不仅会让项目延期,而且更有可能交付一个更脆弱、更复杂的产品。

  “每一个程序都会膨胀到需要加入 Web 服务器,不膨胀的程序最终会被膨胀的程序所代替”。

  对 Web 服务来说,就是“膨胀到需要用户账号登录并收集所有用户的数据”。对物理服务来说,就是“膨胀到需要加入一个不安全的 WiFi 访问点,设置了你无法修改的默认密码,以及一个 Web 服务器”。

  “一项工作会占用掉所有用来完成它的时间”。

  如果你不给一个项目的里程碑阶段设置截止日期,这个项目就永远完成不了。这就是为什么一定要给一个 MVP(最小可行产品)定一个固定的截止日期。

  当然,这个定律也可以用在数据、算力、内存等方面:

  “程序最终会把所有可用的存储空间、CPU 时间和内存用光”。

  帕累托原则很容易被曲解,尤其是被管理层曲解,这通常会导致帕累托谬论的出现:

  “当你完成了 80%的工作,你会认为真的只剩下 20%的工作要做”。

  但你可能低估了剩下的 20%工作,因为它可能占用你 80%的时间。

  “90%的东西都是垃圾”。

  是的,包括你的产品在内。

  “在一个等级制度中,每个员工都倾向于升到他们学历无法胜任的职位。因此,随着时间的推移,每个岗位都有可能被不称职的员工占据”。

  “你写的任何超过 6 个月没有看过的代码,有可能已经被别人改过了”。

  这里说的 6 个月已经是一个很乐观的数字了。

  不过,有一点需要注意,那就是“Yo Momma 推论”:只有作者才可以给代码提出批评,任何其他的负面反馈都将被驳回。

  用在认证方面:

  任何一个定制开发的认证系统都包含一个临时的、非正式的、隐藏缺陷的、运行缓慢的 Kerberos 不完整实现。

  这可以概括成一般性的 NIH 规则:“任何一个定制开发的系统都包含一个临时的、非正式、隐藏缺陷的、运行缓慢的行业标准的不完整实现(因为你拒绝直接使用标准实现)”。

  “一款新软件的开发成本只占管理层预算的总成本的 25%左右”。

  运维界的一句格言:

  如果说软件维护的成本占了总预算的 75%,那么这 75%都应该是运维支持。

  “如果你想快速提交 10 行代码变更,可以把它隐藏在一个 1500 行的 PR 中”。

目录
相关文章
|
27天前
|
算法 开发者
代码与哲学的交织:探索软件开发中的哲理
【10月更文挑战第17天】 在数字化时代,软件开发不仅仅是技术的堆砌,更是智慧与哲学的碰撞。本文通过深入浅出的方式,探讨了编程中蕴含的哲学思想,如迭代思维、模块化设计以及错误处理的艺术。我们将一起思考如何将这些哲学理念融入日常开发,以提升我们的技术深度和广度,让代码不仅是冰冷的逻辑,而是充满智慧的艺术品。
22 5
|
2月前
|
设计模式 安全 C语言
软件工程师,全面思考问题很重要
软件工程师,全面思考问题很重要
46 9
|
4月前
|
算法 搜索推荐 开发者
代码的诗意:软件开发中的审美与实用主义
【7月更文挑战第17天】在数字世界的编织过程中,开发者往往沉浸于逻辑的严谨与功能的实现,却忽略了代码本身的艺术性。本文将探讨如何在追求软件实用性的同时,不丢失编程过程中的审美体验,通过案例分析展现优雅代码的力量,并讨论如何培养对技术之美的感知能力,最终达到技术与艺术的和谐统一。
|
6月前
|
持续交付 开发者
代码与禅意:软件开发中的禅宗哲学
【5月更文挑战第28天】在快节奏的现代社会中,软件开发者常常面临着压力和挑战。本文将探讨如何将禅宗哲学融入软件开发实践,以提升开发效率、增强个人福祉并优化团队协作。通过对禅宗原则的深入理解,我们可以学会如何在编码过程中保持专注、简洁和灵活,同时培养对技术深层次的直觉理解。
|
6月前
|
存储 搜索推荐 程序员
SnippetsLab:程序员的秘密武器
SnippetsLab:程序员的秘密武器
209 0
|
6月前
|
设计模式 算法 程序员
代码与诗意:软件开发中的创造性思维
【2月更文挑战第16天】在数字世界的构建中,技术并非只是冰冷的逻辑与算法堆砌,它同样蕴含着创造力与艺术性。本文通过探索软件开发过程中的非传统元素,揭示了编程背后的创造性思维和艺术表现。从设计模式到代码重构,再到用户界面的美学设计,每一环节都体现了技术人员对于美的追寻和技术的诗性表达。文章将深入探讨如何将创造性原则融入日常开发工作,以提升软件质量并丰富开发者的技术体验。
|
设计模式 算法 程序员
代码能力,程序员自我修养之基石
提高代码能力不是一蹴而就的事,需要我们不断努力,通过持续学习和练习、参与开源项目、阅读优秀的代码、与他人合作、提升解决问题的能力等方式,提高自己的代码能力,为自己为公司创造价值。
229 0
代码能力,程序员自我修养之基石
|
敏捷开发 运维 监控
康威定律,作为架构师还不会灵活运用?
康威定律,作为架构师还不会灵活运用?
131 0
康威定律,作为架构师还不会灵活运用?
|
设计模式 运维 测试技术
软件开发打败了 80 %的程序员
首先,我并不是说软件开发人员都是输家,我想说的是,大多数软件开发人员都没能赢得软件开发,他们都被软件开发打败了。
178 0