如何画一个系统的设计图

为什么写本文

评审中发现很多研发都不会画设计图,有的画的非常复杂但没有要点,听的人不知道要表达的是什么;有的图画的非常简单,也没有要点。如果设计图只有在讲解的时候通过别人长时间的询问才能明白,那么设计图还有什么价值?大部分研发内心想提升设计能力,但有一些错误的观念可能会阻碍设计的成长。比如"参考一个好的设计模版,我就能做出好设计了这种想法",我个人认为是非常错误的观点。本文不会谈及具体的图形画法比如流程图和UML图画法,更多的是探讨如何提升设计能力的方法论。

正确的自我认知

当你表达不出来的时候,真实的情况并不是表达不好,而是你根本不懂。

不要总为自己找借口,我很牛,只是表达不好,表达不出来。别人表达好,就是只会包装PPT,只会搞虚的。这些想法都是错误的,需求文档是系统逻辑的一种表现形式,代码是系统逻辑的另一种表现形式,设计是代码的又一种表现形式而已。代码烂一些,也可以跑起来,所以烂代码可以躲起来自嗨,但设计烂一些,一目了然,无处可躲,别人根本听不懂。设计的好坏比代码的好坏更直观,更容易看出来而已。你觉得有可能某人具备非常优秀的编码能力,却无能力无法做出优秀的设计吗?

何为设计

设计是面向问题的,没有问题为啥要设计?如果你的设计没有让人听明白问题的解决思路,这个设计就没有什么价值。

比如我们要设计一个建筑的承重结构,设计图要体现你的承重的几个关键的主体结构(承重梁,承重柱子,承重墙等),而不是把整个建筑的细节(装什么品牌的灯具,是否帖墙纸)都画出来。设计不是越细越好,也不是越粗越好,根本没有粗细之疑问,当你确定了要解决的问题,哪些该画,哪些不该画,我认为是确定的,问题定了有些东西你不画根本就说不明白,而有些你画了对你的目的没有啥关系,直接删除就好。

设计的目的,第一:非常直观的表现出针对问题的解决方案,方便发现设计中的问题。第二:通过设计可以非常方便的把系统的解决方案传递给其他人。第二点其实是第一点的副产品,但确实一个很容易发现坏设计味道的方法,当你的设计别人总听不懂的时候,大概率就是坏设计,后面提升的第一步会再展开说。

有的人很聪明,不画设计图,直接写代码,也跑的不错。真的没有设计图吗?只不过在这个人脑子里而已,在脑子里去画出来设计图和真实的画出来,大家觉得那个更有利于对于设计查漏补缺,以及对设计优化呢?答案非常明了吧。如果这个聪明人不画设计图在脑子里做出来的系统质量是70分,那么他如果画出来设计图,系统的质量分一定会高于70分。更重要的是,今天这个人能想清楚,一年后呢?这个人离职了呢?这就是设计的价值。

如何提升自己的设计能力

分两步,第一步要把自己解决方案思路用设计图展现出来;第二步提升自己的真实认知高度。

1。表达出来自己的设计

首先要做的并不是提升,而是有多少表现出多少。如果你有60分,那就让大家听明白60分,哪怕只有10分,能表达出来10分,第一步也算是完成了。

怎么证明表达出来了呢?在相同信息量输入的情况下,把这些信息传递给其他人所用的时间越短,表达越好。如果能用5分钟说清楚,你说了一个小时,中间都是听者通过提问来了解清楚,而不是通过你的讲解设计了解的,那么你的设计图就是有问题的,设计所携带的设计信息就非常少,甚至是负数。 如果你的设计不能让一个对系统不了解的人听懂,那么它也不能让一个对系统了解的人听懂。当别人听不懂的时候,说明信息的传递机制出了问题,和听众的系统了解程度真的不大。(前提是听者是具备基础逻辑能力的智能物种,不需要具备其他专业知识)

要用已知概念解释未知概念

讲解中出现太过的未知概念,听者是无法理解的,未知+未知=未知。针对不同的听众,我们需要的仅仅是需要调整概念的解释节凑和顺序,出现未知概念之前,把它用已知概念进行定义。设计自身是不会调整的,只是针对不同人群有所变换表述就可以。有些像六边形架构,设计的本源位于中心,外层可以替换为不同的实现。

2。提升自己的设计

第一步做到虽然相对容易,但我看到研发的设计大部分都倒在了第一步,第一步做到后我们就可以进行第二步提升了,第二步相对就难多了,是提升自己的真实能力。第一步做到了有多少能力,展现多少,所以设计的好坏只受自己专业能力的限制了。

第二步最大的武器是方法论。如下图,针对项目一的设计停留在第一个圈,这个时候需要我们跳出项目,参考行业的解决方案,形成面对此类问题的解决方案,跃升到第二个圈方法论的高度。最终再使用方法论来降低维打击项目一,当出现类似问题项目二,项目三的时候,方法论是可以复用的。





用了方法论的设计,还会得到一个额外的好处,就是表达。

最好的表达是默契,我不说你就懂,而方法论就是这个默契。方法论是一种语言,行业通用的,在描述设计的时候,直接说出用的方法论,这些方法论是行业通用的,自然你还未讲解针对项目的设计,听者就已经懂得七七八八了,这就是降维打击的好处。

回头对比:此时对比下(用方法论降维打击的效果)和最开始的(连第一步都未跨出,无法表达出自己想法的设计),想象下两者的差别有多大。

相关推荐
陈随易11 小时前
Cmder 停更 17 个月,2.0 支持 Windows Terminal
前端·后端·程序员
kyriewen12 小时前
我扫了 814 个依赖,97 个还敢要 Node 10
前端·javascript·程序员
陈随易12 小时前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员
Hilaku14 小时前
MCP 协议会成为前端 AI 工程的标准接口吗?
前端·javascript·程序员
陈随易21 小时前
Cloudflare 出钱,Vite 团队挑人,44 个维护者分 30 万美元
前端·后端·程序员
SimonKing21 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员
codigger21 小时前
程序员转型抉择:转 Agent 开发还是转全栈?一份基于招聘市场的冷静分析
程序员·编程·#人工智能·#agent
挖掘狂人1 天前
程序员转型抉择:转 Agent 开发还是转全栈?一份基于招聘市场的冷静分析
人工智能·程序员·agent
深蓝AI1 天前
Meta FAIR 开源 e-means:k-means 十分之一的轮数跑出更低损失,已并入 Faiss
人工智能·程序员
爱敲代码的小黄1 天前
神经网络入门指南:从 CNN、RNN 到 Attention
人工智能·面试·程序员