嘿开发者:图表不需要那么复杂

Hey developers charts don't need to be so complex.

让我们简单地说:我们对图表想得太多了。

创建图表是代码文档过程中的重要部分。但很不幸,它通常被视为一项费时费力的任务。图表很快变得过于细致和详细。最重要的细节在复杂性的海洋中失去了意义。

为了减少UML图表中的歧义,开发人员经常为阅读图表设立特定的符号或标准化。突然间,你的图表变得充满了符号,需要一整套知识才能阅读。你实际上已经在图表中进行编码。除非你正在构建一个千页视觉图,否则它将永远无法表达出你的代码所包含的详细程度。

这种情绪是好的:“我希望我的图表尽可能精确。”但是,你实际上增加了歧义,而不是减少它。其中一些问题可以归咎于UML本身的复杂化,但像我们这样的开发人员可以成为解决方案的一部分。

过载图表的过多信息可能会模糊预期的信息并困惑读者。我们应该更加意识到这些缺点。在追求细节的过程中,开发人员不应忘记我们的核心目标:有效地传达一个概念。

图表应该包含足够的信息以便于使用,同时仍然易于阅读。它们应该帮助团队沟通复杂软件系统的全局细节,或者更细微的细节。它们应该易于制作,甚至有趣!

通过集体思维方式的转变,新的图表工具以及对有帮助的集成的重视,我们可以使图表重新成为将信息传递给作者和读者之间的有效载体。重新简化这个过程将帮助我们再次将图表制作变得有趣 – 并为我们在以人工智能为驱动的工作场所中实现更好的沟通做好准备。

UML没有达到预期,但并不完全无用

图表过于复杂化可以追溯到统一建模语言(UML)。

我自己写过关于UML的错误之处。UML 2.2文档长达1000多页,这就是为什么UML被视为不方便且经常是浪费的预工作。

虽然它没有成为软件开发的全能语言,但UML仍然留下了重要的遗产。我们不应该将流程图、状态图、序列图或流程图用作代码的替代品或硬性蓝图。那样就需要太多的开销。

然而,这些图表作为高级草图工具非常有效。UML在2000年前后作为绘制系统的VoAGI达到了巅峰。就像时尚潮流一样,它正在重新流行起来。

“全面性就是可理解性的敌人”…

这是Martin Fowler在20世纪90年代帮助推广UML时的一句名言。也许现在是我们倾听的时候了!

图表不能捕捉系统的所有信息,也不应该捕捉。它们通常最适合用于高级任务:可视化系统的使用方式,绘制过程的逻辑流程,或者绘制服务的功能。它们可以帮助我们沟通系统如何相互交流,描述系统内部的运行方式,确定我们的模型可以简化的领域等等。实际上,它们帮助我们将黑盒变成透明盒。

…但平衡是必要的

细节对于代码文档仍然很重要,只是要优先考虑读者最重要的内容。一个缺乏细节的图表变得无用。有时候,关键是如何呈现这些细节。

也许你想创建一个关于代码中特定、复杂、低级细节的图表。视觉和图表仍然非常有帮助。但是也许更好的办法是创建一个单独的图表,详细说明特定过程的细节。这样,你不会在一个图表中拥挤所有信息,而是以合理的方式分割它,让团队成员可以选择他们深入研究代码的不同部分的程度。

使图表回归基本的三个关键点

人类行为转变和有帮助的软件的结合可以帮助我们通过图表增加协作:

关于图表用途的集体思维转变

当图表过于复杂或过于简化时,常常会导致失败。但它们也是一种沟通方式。在目标是清晰沟通时,减少信息似乎是违反直觉的。

但是,过多的信息是清晰度的最大敌人。这是我们必须集体记住的。

在创建图表之前,试着充分理解你想要表达的内容。你是想给出整个系统的高级概述呢?还是要深入了解代码的某个特定部分?制定一个游戏计划,并为每个可视化工具设定一个明确的目的。如果你的所有信息无法适应一个图表中,不要担心。你可以随时创建另一个。

促进更好图表绘制的工具

导致图表效果不佳的部分原因在于开发人员可用的图表工具。使用PowerPoint或其他“点击和拖动”工具设计图表可能很困难。它们甚至可能鼓励某种思维方式:如果我花了这么多时间来构建图表,我可能会尽量包含尽可能多的信息。

这就是为什么开发人员需要投资于能够帮助他们快速轻松生成图表的工具。创建可视化工具应该是简单而有趣的。当这一点成立时,开发人员将毫不犹豫地制作多个更小的图表,以适应特定的目的,而不是试图把所有东西都塞进一个图表中以便继续进行。

更多集成以简化生活

如果你认为我在整篇文章中没有提到人工智能,我很抱歉。将生成式人工智能纳入我们的图表工具中,可以让开发人员的工作变得更加轻松。像ChatGPT这样的工具可以帮助你更快地获得基准图表。你只需要添加更多具体信息和人的触感。

我们还可以从将图表工具集成到我们的编码工具中获益。如果图表能够更接近源代码(而不是在一个完全独立的程序或窗口中),那么开发人员就不会担心在图表本身中进行过多的沟通。连接性越强,图表的角色就越清晰。

未来:图表、文档和人工智能

图表在传达信息时最有效的时候是有明确目的的。这在我们展望未来的工作时非常重要。

人工智能将继续承担更多专门的角色。这使得人类可以专注于他们擅长的工作:管理流程,提升产品和构思新的想法。随着更多流程的自动化,重要的是在每个项目之前与我们的人类同事设定明确的方向。只有继续沟通,我们才能加速创新。

图表帮助我们与同事之间传达必要的细节,使其成为未来协作的重要组成部分。在我们的图表中找到复杂度和简洁度的正确平衡只会变得更加重要。