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

沙海
沙海
沙海
718
文章
2
评论
2021年3月19日02:00:40
评论
4 1753字阅读5分50秒
摘要

速读摘要

速读摘要

这些定律包括了一些法则或软件开发大神的名言。当你意识到项目没有取得预期的进展,并尝试从其他地方调取更多的资源,不仅会让项目延期,而且更有可能交付一个更脆弱、更复杂的产品。随着时间的推移,每个岗位都有可能被不称职的员工占据"。你写的任何超过6个月没有看过的代码,有可能已经被别人改过了"。一款新软件的开发成本只占管理层预算的总成本的25%左右"。

原文约 1527 | 图片 3 | 建议阅读 4 分钟 | 评价反馈

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

Jan Schaumann InfoQ

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

作者 | Jan Schaumann

译者 | 王者

策划 | 万佳

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

1康威定律

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

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

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

2布鲁克定律

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

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

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

3Zawinski 定律

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

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

4帕金森定律

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

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

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

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

5帕累托谬论

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

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

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

6史特金定律

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

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

7皮特定律

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

8伊格尔森定律

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

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

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

9格林斯潘第十定律

用在认证方面:

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

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

10冰山谬论

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

运维界的一句格言:

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

11LGTM 困境

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

原文链接:

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

今日好文推荐

拼多多用户逼近8亿反超阿里后,黄峥急流勇退

Docker 起死回生了

卖鞋月入5万、玩抖音买“大奔”:有些程序员收入靠副业,上班只为自律

InfoQ 读者交流群上线啦!各位小伙伴可以扫描下方二维码,添加 InfoQ 小助手,回复关键字“进群”申请入群。回复“资料”,获取资料包传送门,注册 InfoQ 网站后,可以任意领取一门极客时间课程,免费滴!大家可以和 InfoQ 读者一起畅所欲言,和编辑们零距离接触,超值的技术礼包等你领取,还有超值活动等你参加,快来加入我们吧!

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

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

点个在看少个 bug ?

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: