乐于分享
好东西不私藏

学软工的不懂软件工程?

学软工的不懂软件工程?

点击蓝字

关注我们

为什么给项目增加人力反而让进度更慢?为什么复杂的系统总是无法从头设计?软件开发中那些让人抓狂的“玄学”,其实背后都有迹可循。

56条软件工程定律

在软件开发的世界里,除了代码逻辑,还存在着一套“看不见”的物理定律。

如果你几乎不了解软件工程,推荐你看看这个名为 Laws of Software Engineering 的网站。

🔗 网址: https://lawsofsoftwareengineering.com

01

网站简介

该网站核心目标是将那些散落在各种经典著作(如《人月神话》)或技术博客中的“行业共识”结构化、可视化。

目前,网站涵盖了 56 条(且在不断增加)影响软件生命周期的关键法则。每条法则都配有:

  • 核心定义:一句话说明它是什么。

  • 三大要点:用极简的卡片形式总结核心启示。

  • 深度解析:背景故事、现实案例以及如何应对。

  • 延伸阅读:指向原始论文或经典书籍的链接。

02

内容展示

你可以系统地复习(或初次认识)这些决定你职业生涯幸福感的法则:

🚀 关于进度:布鲁克斯法则 (Brooks’s Law)

“为一个延期的软件项目增加人力,只会让它交货更晚。”

网站通过卡片告诉你:新人的加入会带来巨大的沟通成本和培训负担,这就是为什么“人多不一定好办事”。

🏗️ 关于架构:康威定律 (Conway’s Law)

“设计系统的组织,其产生的设计等同于组织内的沟通结构。”

如果你发现你们的微服务划分得一团糟,先别急着改代码,看看你们的团队分工是不是出了问题。

🐛 关于复杂性:盖尔定律 (Gall’s Law)

“一个能够运作的复杂系统,必然是从一个能够运作的简单系统演变而来的。”

想从零设计一个完美的复杂系统?这几乎注定失败。先做一个简单的原型并让它跑起来吧。

💻 关于 API:海勒姆定律 (Hyrum’s Law)

“只要你的 API 有足够多的用户,你对接口的任何细微改动(即使是未定义的行为)都会破坏某些人的代码。”

这对做基础库和中间件的同学来说,绝对是保命级的提醒。

03

推荐理由

  1. 极简的视觉风格

网站没有任何广告,排版极其舒适。它将复杂的理论拆解成直观的图表(例如 Dunning-Kruger 效应的信心曲线),让你在 3 分钟内就能理解一个深奥的概念。

  1. 科学的分类索引

你可以根据标签快速筛选或者直接搜索某条定律

软件工程不仅仅是敲代码,更是一门关于处理复杂性管理预期的学科。

Laws of Software Engineering 像是一个随身携带的智囊团,提醒我们:不要对抗客观规律

互动话题

对于我来说,帕金森定律(Parkinson’s Law)工作量总是会增加,直至填满所有可用时间

让我感触太深了,不管设置多长的开发时间,项目开发总是会做到最后一刻……

在你的开发生涯中,哪条定律让你感触最深?欢迎在评论区分享你的“血泪史”!

点击

阅读原文

查看更多