立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

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

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

关注

评论 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
回复
没有更多了
发现更多内容

Logic Pro X for Mac(苹果专业音频制作软件)

Mac相关知识分享

音频录制

Cookie for Mac(浏览器缓存清理工具)

Mac相关知识分享

缓存清理工具

MYSQL深入浅出系列-MVCC并发版本控制

MySQL MVCC 数据库并发

工业控制 词汇整理 day2

万里无云万里天

自动化 工厂运维

Lightroom Classic 2022 for mac(LRC2022)v11.5中文激活版

iMac小白

联想全栈AI之海,纳智能中国的山川万物

脑极体

AI

Clipboard Manager for mac(mac剪贴板管理软件)

Mac相关知识分享

认证总结 高压电工(运行)取证

万里无云万里天

工厂运维 电工 高压

One Switch for Mac(系统功能快速开关工具)

Mac相关知识分享

Illustrator 2023 for mac(Ai2023矢量设计应用程序)v27.9.0中文激活版

iMac小白

CheckBook Pro for mac(优秀的个人理财管理软件)

Mac相关知识分享

理财工具

企业im(即时通讯)作为安全专属的移动数字化平台的重要工具

WorkPlus

工业控制 词汇整理 day3

万里无云万里天

自动化 工厂运维

Navicat Premium for Mac(多连接数据库管理工具)v16.3.4中文激活版

iMac小白

企业级im即时通讯,WorkPlus专注于政企移动数字化平台底座

WorkPlus

低压电工笔记 知识点汇总 day1

万里无云万里天

低压电工 工厂运维

PLC笔记 知识点汇总 day1

万里无云万里天

PLC 工厂运维

认证总结 低压电工作业取证

万里无云万里天

低压电工 工厂运维 电工

SecureCRT for mac(终端SSH工具)v9.3.2激活版

iMac小白

Termius Beta for Mac(强大的SSH客户端)

Mac相关知识分享

SSH工具

原型设计软件Axure RP 9 for Mac 中文激活版

iMac小白

Microsoft Outlook 2021 LTSC for Mac v16.86.2中文正式版

Mac相关知识分享

邮件管理工具

工业控制 词汇整理 day1

万里无云万里天

自动化 工厂运维

Disk Graph for Mac(磁盘空间分析工具)

Mac相关知识分享

磁盘空间

Acrobat Pro DC 2022 for Mac(专业PDF编辑软件)中文版

iMac小白

目前常见的几款企业级im即时通讯软件有哪些?

WorkPlus

Loopback for Mac(mac虚拟音频设备)

Mac相关知识分享

音频设备软件

SnapMotion for Mac(mac视频截图工具)

Mac相关知识分享

视频截图工具

LDO产品的基础知识解析

梦笔生花

芯片 LDO 电源

电子元件笔记 知识点汇总 day1

万里无云万里天

电子元器件 工厂运维

IBM SPSS Statistics for Mac(spss数据统计与分析软件)v27.0.1中文激活版

iMac小白

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