软件工程师必知的9条黄金定律

来源:熵减黑客

在软件工程中,由于是涉及到复杂系统的设计、开发和演进的领域,所以,行业内先行的大师们,根据自身的经验和知识的洞见,总结和沉淀出来不少的定律和原则,被用来指导我们日常的软件开发中的决策和行为。

这些定律和原则,都是经过经过长期实践和研究得出的,所以也就具有广泛的适用性和指导意义。

在过去的一段时间内,我们分享了9个常见基本定律,今天做一个总体性的概览。具体内容如下:

1康威定律

康威定律是由梅尔文·康威于1968年提出的。

其指出:一个组织的设计结构会自然而然地反映在他们所设计的产品之中。 

这意味着,如果一个组织的设计结构是分散的,那么它所设计的产品也可能是分散的,而如果一个组织的设计结构是集中的,那么它所设计的产品也可能是集中的。

因此,软件开发团队应该考虑到他们的组织结构,以便更好地设计软件产品。

关于康威定律,具体见:软件开发中的康威定律

2布鲁克定律

布鲁克定律是由弗雷德里克·布鲁克斯于1975年提出的。

指出:添加更多的人员到一个已经推迟的项目中,只会使项目进度更加延迟。

这是因为新成员需要时间来适应项目,并且需要进行培训,这会消耗原来团队成员的时间和精力。

关于布鲁克定律,具体见:软件开发中的布鲁克定律(Brook’s Law)

3霍夫施塔特定律

霍夫施塔特定律是由道格拉斯·霍夫施塔特于1979年提出的。

指出:一个计划需要的时间总是比预计的时间长,即使你考虑到霍夫斯塔特定律。

这是因为我们倾向于低估任务的难度和所需的时间,而高估我们自己的能力。

关于霍夫施塔特定律,具体见:软件工程:霍夫施塔特定律

4海勒姆定律

海勒姆定律是Google 工程师 Hyrum Wright提出的。

指出:当你依赖于一个 API 的时候,你实际上也依赖于这个 API 的实现细节。

海勒姆定律强调了开发者应该更加注意 API 的实现细节,因为这些细节可能会影响到你的代码在未来的可维护性和稳定性。


关于海勒姆定律,具体见:软件工程:海勒姆定律(Hyrum’s Law)

5帕金森定律

帕金森定律是由西西里·诺斯利普·帕金森于1955年提出的。

指出:工作会扩张以填满可用的时间。这意味着,如果给定一个任务的时间越长,完成该任务所需的时间就会越长。

因此,软件开发团队应该设定明确的截止日期和时间表,以确保任务按时完成。

关于帕金森定律,具体见:软件工程:帕金森定律,项目工期的那点事儿

6墨菲定律

墨菲定律是由爱德华·墨菲提出的。

指出:如果一件事情可能会出错,那么它就会出错。

在软件开发中,这意味着必须预估到可能的错误和故障,并采取措施来防止它们的发生。这也强调了软件测试和质量控制的重要性。

关于墨菲定律,具体见:软件工程:墨菲定律,潜在问题管理的艺术

7波斯特尔定律

波斯特尔定律是由乔恩·波斯特尔提出的。

指出:发送方应该发送尽可能简单的信息,而接收方则应该尽可能容忍和理解各种类型的输入。

在软件开发中,这意味着应该尽可能简化和标准化输入和输出格式,以提高软件的互操作性和可移植性。

关于波斯特尔定律,具体见:软件工程:波斯特尔定律,输入输出的平衡之道

8奥卡姆剃刀定律

奥卡姆剃刀定律是一种科学和哲学原则,也适用于软件工程。

指出:在解释某个现象或问题时,应当选择最简单的解释或假设,而不是复杂的解释或假设。

在软件开发中,这意味着应该尽可能使用简单的设计和算法,以避免复杂性和潜在的错误。

关于奥卡姆剃刀定律,具体见:软件工程:奥卡姆剃刀原则,简单的意义

9阿姆达尔定律

阿姆达尔定律是由吉恩·阿姆达尔于1967年提出的。

指出:在计算机系统中,一个任务的速度受到其串行部分的限制。

这意味着并行计算只能在一定程度上提高性能,因为一些任务必须顺序执行。

在软件开发中,这意味着必须注意系统的串行部分,以避免性能瓶颈和资源浪费。

关于阿姆达尔定律,具体见:软件工程:阿姆达尔定律,性能设计和优化的指导原则

Part1最后

以上9个定律,是软件工程中比较常见的定律和决策原则。

作为软件工程师,了解和掌握这些基本的定律和原则,可以帮助我们更好的解决软件开发中的哪些复杂的问题,做出高质量的设计和决策,能够采取适当的措施,以交付优秀的产品。

同时,这些基础的定律和原则,可以作为软件团队开展工作的指导性原则,以帮助团队找到适合自身实际情况的最佳实践和策略。

请使用浏览器的分享功能分享到微信等