写点什么

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

  • 2021-03-16
  • 本文字数:1164 字

    阅读完需:约 4 分钟

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

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

康威定律

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


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


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

布鲁克定律

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


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


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

Zawinski 定律

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


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

帕金森定律

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


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


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


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

帕累托谬论

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


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


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

史特金定律

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


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

皮特定律

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

伊格尔森定律

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


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


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

格林斯潘第十定律

用在认证方面:


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


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

冰山谬论

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


运维界的一句格言:


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

LGTM 困境

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


原文链接:


https://www.netmeister.org/blog/software-engineering-laws.html

2021-03-16 14:065911
用户头像

发布了 114 篇内容, 共 49.7 次阅读, 收获喜欢 315 次。

关注

评论 3 条评论

发布
用户头像
“90%的东西都是垃圾” 原文是 90% of everything is crud. 这里 CRUD 指代的是不是垃圾。
2021-03-22 22:31
回复
crud
英 [krʌd] 美 [krʌd]
n. 令人厌恶的事物,脏东西,污垢;(难以在上滑雪的)大雪;废话;可鄙的人
abbr. (CRUD)增查改删 (creat, retrieve, update, delete),增删查改(creat, delete, read, update)

网络上还能搜到类似的语句,比如90% of everything is crap, 90% of everything is trash...所以,你觉得这里的crud指的是什么?
展开
2021-03-23 16:33
回复
CRUD软件工程里肯定指代增删查改,而非垃圾。
2021-03-30 10:39
回复
没有更多了
发现更多内容

对编程语言中错误处理机制的思考

宇宙之一粟

错误处理 6 月 优质更文活动

数字经济快速发展下企业需要什么样的数智平台?

用友BIP

企业数智化 数智平台

一份配置轻松搞定表单渲染,配置式表单渲染器在袋鼠云的实现思路与实践

袋鼠云数栈

大数据 企业号 6 月 PK 榜

亚信科技AntDB数据库荣获赛宝优选信创优秀解决方案奖

亚信AntDB数据库

AntDB AntDB数据库 企业号 6 月 PK 榜

中企出海困难重重?海外税务数字化解决方案来支招!

用友BIP

中企出海

世界500强企业是如何开展财务共享工作的?

用友BIP

财务共享

大学共享电单车合作投放准备工作

共享电单车厂家

共享电动车厂家 共享电单车投放 共享电动车合作 校内共享电动车

阿里云丁宇:云上开发成为主流,Serverless 定义新范式

阿里巴巴云原生

阿里云 Serverless 云原生

数智人力领域的“chat GPT”,让人才发现更简单更智能

用友BIP

数智人力

活动回顾丨云原生技术实践营深圳站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

直播预告 | 一体化智能可观测平台如何保障电商节大促

博睿数据

可观测性 智能运维 博睿数据 电商节

前端AST详解,手写babel插件

不叫猫先生

6 月 优质更文活动

旺链科技赋能泳池卫士守护人身安全

旺链科技

区块链 泳池安全 泳池卫士

【云原生】Docker的基本使用方法与优势

不叫猫先生

Docker 6 月 优质更文活动

GaussDB(DWS)查询过滤器原理与应用

华为云开发者联盟

数据库 华为云 华为云开发者联盟 企业号 6 月 PK 榜

聚焦数智人力,让员工“跳槽”不再尴尬!

用友BIP

人力资源 数智人力

高考开始了,计算机专业未来还会火吗?

图灵教育

人工智能 互联网 计算机 GPT

苹果WWDC 2023发布会总结

楚少AI

wwdc WWDC 2023 苹果wwdc2023

数智人力:现代企业解决人才短缺的新途径

用友BIP

数智人力

【热点追踪】从价值到架构,走近全新升级的阿里云 Serverless 容器服务 ASK

阿里巴巴云原生

阿里云 Serverless 容器 云原生

PCB板的Mark点设计对SMT重要性

华秋PCB

工具 电路 PCB SMT PCB设计

业内Chromium115内核首发|海泰红莲花国密浏览器极速版V10

电子信息发烧客

中企出海,数智人力重构企智人效的人才供应体系

用友BIP

人力资源 中企出海 数智人力

Vue3项目中Pinia状态管理工具的使用

不叫猫先生

Vue Pinia 6 月 优质更文活动

云上数据库:从零到壹的实践经验分享

科技热闻

四川大学向锐:财务职能将逐步从企业内部拓展到生态链、产业链

用友BIP

智能会计 价值财务

vue2.x与vue3.x中自定义指令详解

不叫猫先生

Vue 自定义指令

前端内存泄漏详解

不叫猫先生

内存泄露 6 月 优质更文活动

深入理解注解驱动配置与XML配置的融合与区别

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

软件测试丨学习笔记Allure2报告中添加用例链接、用例分类

测试人

程序员 软件测试 测试开发 测试用例 Allure

高考开始了,计算机专业未来还会火吗?

图灵社区

人工智能 互联网 计算机 GPT

程序员容易忽略的10大软件开发定律_语言 & 开发_Jan Schaumann_InfoQ精选文章