The Better Architect You Are, The Simpler Your Diagrams

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

我甚至不知道从哪里开始。让我们从这个开始:如果我听不懂你说的话,那是你的错。这应该是一个优秀软件架构师(或者任何工程师)最基本、最基础的原则,但是我迄今为止遇到的大多数架构师,无论是在哪家公司,似乎都不相信这一点。他们不明白软件架构师的工作是将复杂的事物变得简单,而不是相反。他们使用图表作为架构师最常用的工具,向我们程序员解释他们的想法。但是这些图表通常非常晦涩难懂,让人难以理解。更糟糕的是,随着他们的薪水增长,复杂性也在增加——真是令人厌恶。

为什么会出现这种情况?为什么他们的图表复杂且难以阅读?我相信你知道我在说什么;你可能有自己在项目中与架构师合作时的例子。那么为什么我们会遇到这样的问题呢?

这是因为架构师对复杂性感到自豪。他们认为他们处理的问题越复杂,他们就越是优秀的工程师。我曾经多次进行过这样的对话:

通常,在那之后,建筑师会满意地微笑。事实上,有人真的注意到了他的工作有多么困难,并且欣赏他的努力。有人很傻,他很聪明。他可以理解这个多层架构,而我不能。他绝对赢得了我的尊重,对吗?

错!一位好的建筑师知道他的主要作用是将复杂的问题分解为较简单的组件,并让程序员逐个解决它们。就像一个好的项目经理必须将复杂的任务分解为更小的任务一样。当问题被适当地分解(分解为更小、隔离和适当解耦的部分)时,复杂性会降低,这样每个人都可以更容易地理解和解决。

建筑师的主要优点是减少复杂性的能力。因此,一个好的建筑师绝不会为一个复杂的图表感到骄傲。相反,他会为一个简单易懂的图纸感到骄傲,其中只有几个矩形完美地解释了整个多层应用程序。那才是真正困难的事情。那是真正体现出一种真正的建筑思维的地方。

像那样的建筑师并不多。我不能说我是其中之一,但我有一些建议供您的图表使用。请继续阅读,并记住所有这些的主要目标是减少复杂性

不要超过五个矩形。如果超过了这个数目,就有些问题了。试着用不到五个来解释自己。只需将其中几个组合在一起并加上一个名字。你不希望我花费超过几秒钟的时间来理解谁参与了你展示的内容。我希望一眼就能看到全部并立即明白谁是谁。我只是随便给了个五的数字,但你明白的——确保所有图表参与者都容易计算。我见过有25个或更多矩形的图表……那是不可接受的。

使用UML。嗯,使用您感觉舒服的任何符号,但很多年前人们都同意,与其使用不同的符号,学习一个符号为所有人来说会更容易;那就是UML。这是一个庞大的格式/标准/语言,但您不需要全部了解。只需学习基础知识,就足以表达几乎所有您想要的想法。我推荐《UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition)》(作者:Martin Fowler)。

直接并注释连线。在图表上,没有比连接两个矩形而没有任何文本和方向的线更烦人的了。它是数据流吗?是编译时依赖关系吗?有很多可能的含义。始终使用箭头,并始终对其进行注释——这将帮助我更快地理解您。

不要使用颜色。或者这样说:不要滥用颜色。为了避免滥用它们,最好一开始就不要使用颜色。如果需要使用颜色,那么您的图表肯定有问题。它可能过于复杂,所以才需要使用颜色。通过对元素进行分组来简化它。

不要创意。这不是艺术,而是工程学。你不需要给我留下深刻印象,你需要传达信息。你的目标不是展示你的思维有多么复杂。此外,您的图表样式不应该是个人化的。如果传达相同的信息,你的图表和另一位建筑师的图表应该几乎完全相同。这就是统一性。这样你就能让我更容易理解它们。我不想为了理解你的图表而需要了解你的个性。如果是一个服务器,画一个矩形就够了。没有必要在那里放一个HP服务器的3D图片。一个矩形已经足够。此外,请不要使用阴影、字体和样式。再次强调,这不是一个艺术竞赛。我可以很好地理解你的矩形,而不需要那个你想要添加的“漂亮”阴影。我也可以理解默认宽度的箭头;没有必要因为你的图表编辑器允许你而使它变宽。不要浪费时间,也不要浪费我的时间在所有这些样式上。只需专注于那些简单的线条、矩形、文本和箭头。

正如我上面提到的,所有这一切的目标都是为了减少复杂性,并帮助我这个程序员理解你这个架构师。记住,如果我不能理解你,那是你的错。如果你不能以简单明了的方式传达你的想法,那你就是一个糟糕的架构师。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-17 at 16:49

sixnines availability badge   GitHub stars