50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

程序员容易忽略的 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:066050
用户头像

发布了 114 篇内容, 共 52.1 次阅读, 收获喜欢 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
回复
没有更多了
发现更多内容

终极套娃 2.0|云原生 PaaS 平台的可观测性实践分享

尔达Erda

微服务 云原生 可观测性 经验分享 实践

RAM运行内存是什么

InfoQ IT百科

手机

目前主流的手机SOC芯片都有哪些?

InfoQ IT百科

手机 SOC 芯片

Android系统有哪些优缺点

InfoQ IT百科

B站可以称为中国的YouTube吗?

InfoQ IT百科

昊天旭辉签约长扬科技,携手共建工业互联网安全新生态

极客天地

目前5G SoC 芯片技术成熟吗?

InfoQ IT百科

一文读懂PlatoFarm新经济模型以及生态进展

西柚子

返璞归真,多方安全计算要回归到“安全”的本源考虑

易观分析

多方安全计算

4.25解锁OpenHarmony技术日!年度盛会,即将揭幕!

Anna

即时通讯系统搭建IM聊天社交软件开发

a13823115807

CRM系统可以帮助改善客户体验吗?

低代码小观

CRM 客户关系管理 企业管理系统 CRM系统 客户关系管理系统

一文读懂PlatoFarm新经济模型以及生态进展

小哈区块

App和小程序有哪些区别?

InfoQ IT百科

目前主流的手机屏幕类型都有哪些

InfoQ IT百科

手机

应用要在AppStore上线,需要满足什么条件?

InfoQ IT百科

百度云盘好用还是阿里云盘好用?

InfoQ IT百科

万有导航:简洁实用的综合导航网站

小炮

苹果A13处理器在技术上有哪些创新?

InfoQ IT百科

手机处理器未来的发展趋势如何

InfoQ IT百科

外包学生管理系统详细架构设计文档

dan629xy

手机里的NPU可以起到什么作用

InfoQ IT百科

在安卓应用市场上架需要注意什么?

InfoQ IT百科

APP评测的网站有哪些?

InfoQ IT百科

读书破万“卷”:国民阅读洞察2022

易观分析

阅读 文学

Mini LED有哪些优势

InfoQ IT百科

iOS开发面试攻略(KVO、KVC、多线程、锁、runloop、计时器)

iOSer

ios iOS面试 ios开发 iOS面试题

「查缺补漏」,DDD 核心概念梳理

悟空聊架构

DDD 领域驱动 4月日更 悟空聊架构 4月月更

外包学生管理系统架构方案

Trent

架构文档 架构训练营

LCD和OLED屏幕有哪些异同

InfoQ IT百科

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