如何画一个系统的设计图

为什么写本文

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

正确的自我认知

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

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

何为设计

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

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

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

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

如何提升自己的设计能力

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

1。表达出来自己的设计

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

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

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

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

2。提升自己的设计

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

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

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

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

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

相关推荐
星空海绵5 小时前
2024年阅读记录
前端·程序员·架构
独泪了无痕10 小时前
2024:踏平坎坷成大道,斗罢艰险又出发!
程序员·年终总结
北京_宏哥15 小时前
《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(8)-Charles如何进行断点调试
程序员·前端框架·api
完全妹口音15 小时前
协程:概念、实现与性能浅谈
程序员
这我可不懂16 小时前
低代码开发 实战转型案例一览
前端·低代码·程序员
吴敬悦1 天前
领导:按规范提交代码conventionalcommit
前端·程序员·前端工程化
程序员联盟1 天前
用ChatGPT来提高效率:前言
人工智能·chatgpt·程序员
blzlh2 天前
Vue 数据驱动页面,让我们专注于业务开发
前端·vue.js·程序员
Javatutouhouduan2 天前
如何系统全面地自学Java语言?
java·后端·程序员·编程·架构师·自学·java八股文
前端切圖仔3 天前
失业,仲裁,都赶上了(二)
前端·javascript·程序员