通向架构师的道路(第二十六天)漫谈架构与设计文档的写作技巧

简介: 前言:这篇是一篇番外篇,没有太多代码与逻辑,完全是一种”软“技巧,但是它对于你如何成为一名合构的架构设计人员很重要。在此要澄清一点,架构师本身也是”程序员“,不是光动嘴皮子的家伙们,如果你不是一名程序虽出身那你根本谈不上也不可能成为一名架构师。

前言:


这篇是一篇番外篇,没有太多代码与逻辑,完全是一种”软“技巧,但是它对于你如何成为一名合构的架构设计人员很重要。

在此要澄清一点,架构师本身也是”程序员“,不是光动嘴皮子的家伙们,如果你不是一名程序虽出身那你根本谈不上也不可能成为一名架构师。

那么架构师还有哪些是作为一名程序员来说不具备的呢?

其中有一项能力就叫做”文档写作能力“。


一、Soft Skill与Hard Skill


作为一名架构师除了是一名资深的程序员外,它还必须具有相应的Soft Skill,其中有一名就叫做Documentation Skill。


1. 先来说一下Hard Skill


代码与框架以及产品的灵活使用以及在相应的domain(如Insurance, Banking, CRM, DW。。。)上的经验我们把它称为Hard Skill,没有这些技巧你就成不了一名合格的程序员。

程序员和IT是有区别的,程序员是IT业内的主力军团,但是如果你是在一家网站或者是软件司作需求分析的,哪怕是一个秘书,那你也是一个IT人员,对吧?所以这些东西是一个成为架构师的“硬”条件。


2. 什么是Soft Skill


Soft Skill即指Documentation Skill, Presentation Skill,Communication Skill, 相应的Language Skill(不包括日本语,BS小日本), Management Skill, Leader Ship, 这些.

当然,还有更多,更多。。。


2.1 Documentation Skill与Presentation Skill


今天主要讲述的是Documentation Skill与Presentation Skill。

勿要小看这两点,有人说他自己编程编得好,有人说自己的算法写了如何如何精深,那么。。。在现在这个团队合作至上以及处于目前这样的世界经济大环境以客户至上的背景下你所知道的的东西不能向其它人表达清楚,谁会理解你的想法,谁会接受你的理念,谁会选择你公司的产品呢?


举两个例子:


苏步青,他是大数学家,对吧,或许不少人不知道苏步青在文学上的造诣也是很深的。

苏步青曾说过:为什么我喜欢语文,语言,因为我的论文,我的教材需要用语言去表达的,如果不把语言,语文学好我根本无法更精准更明白的去表达我的算法。


著名计算机学者C语言教程的作者谭好强曾经说过:能够把复杂的问题用简单直白的语言和框图去表达出来,就是最好的论文。


再说个实际点的例子,你处于一个投标竞赛中,你的设计或许是很好,可是如何让客户能够理解和接受贵公司的设计方案呢?


那么你需要在平时有意识的去提高或者我们说修练一下你的documentation skill,documentation skill与presentation skill是联系在一起的.


2.2 要善于懂得“包装”


Presentation Skill即”宣传、演示、演讲、推销"的一种技巧,很多人在面对你的同事或者朋友时可能会滔滔而谈,但是在面对你的上司或者是在客户面前,就成了“缩货”了。。。为什么?

其实很多时候在于你演讲的底稿我们一般用PPT或者是WORD准备的不足,呆板、凡味,还有时在于你的设计确实自己也拿捏不准。

因此Hard Skill是你的底气,有了足够硬的Hard Skill你有了50%的胆子再加上一篇好的Document(PPT一类)你的另50%胆子也有了,此时你的Presentation Skill就提升了.

所以很多时候你的Presentation Skill是等于Hard Skill+Documentation Skill的。


有一部片叫《幸德勒的名单》相信不少人看过吧?开头30分钟,靠着不足万元“老本”的幸德勒来到了犹太人聚集地,找到了犹太会计师-以撒.斯坦,他滔滔而谈自己成立公司的计划,如何可以挣钱。然后以撒.斯坦问了他一句:

请让我弄明白一件事,我出人,然后我找”金主“出钱,那你出什么。。。?

幸德勒吸了一口烟,双手合在一起后向外一推 ”presentation, 这是我最擅长的“,这边的presentation也可认为是一种包装.

同样一个中国生产的杯子和美国,如果性能、功能、使用寿命都一样,相信一定是美国货卖得贵,为什么?因为它在有了Hard Skill基础上再次进行了”包装“,这就是”好莱坞式"的促销手法。


要学会“包装”但不是扯蛋和吹牛,因为架构师拿出来的东西哪怕再漂亮,如果没有内含那也是“滥竽充数”,被人识破后就一钱不值了。但是我们在有好的质量好的技术的基础上善于去“包装”它,相信你会离成功更近一步。


三、如何写好一篇文档和提高你的documentation skill


我在前公司有一阵没空,一度让其它几个senior的Team Leader帮助我写文档,要求把设计按照需求能够写清即可。

送上来5篇文章,基本一篇都不能用.


第一次送上来,每篇都是讲一个功能点,要不是冗长的一段没意义的解释,要不就是从官网直接COPY一段话下来,甚至连1,2,3,4都没列出来,至少你要有个Advantage Points 或者说是Benefit和Disadvantage Points的对比吧.


第二次送上来,有了1,2,3,4,但是这下好了,全都标成1,2,3,4了。


要善于利用office编辑器中的“符号列表”,“4角星”代表亮点,“√"代表优点,”小点点“放在段落前用来将功能点说明”分层“,使阅话者更清晰.

这样说吧,你把自己当成一个阅读者了吗?对吧?


3.1 一图胜千言


我们在描述一个审计日志功能模块时我们说用Spring做,如果能够附上下面这样的一张图是不是会更加生动呢?


一个架构文档,从基本的来讲需要有:

  • Logic View(逻辑视图)
  • Physical View(物理视图)
  • Network Structure(网络拓卜图)
  • Workflow/Process Flow(流程图)
你在描述你的流程时你怎么表达你的if else if else,对吧?有个流程图是不是会更好让人懂你所描述的这个流程是一个什么样子的呢?
那我画个流程图去。。。画啊画,画完后拿过来一看:
黑线框、框内有几个字,几个带箭头的线连一下。。。不错。。。是画对了,可是你有没有想过,有些业务场景中流程图往往还要表达不同的”业务边界“啊。。。

拿下面的一个图来说,是不是这样的表达比只有黑框框+带箭头的线+几个文字更加易懂啊?



3.2 画好你的图

3.2.1 架构图的配色与表达手法


不要认为画图是”美工“的事,你是设计人员,你是架构师,画好一个应用图是你的本职工作,图中需要什么图标可以把你的需求告诉美工,美工再会去处理。

一般来说,我们为了表达一个系统的模块组成,我们通常会用:component view来表达如下面这样的图

这个被称为 ”自上而下“的一个平面图,用于表示” 服务边界



如果你考究的话还可以提供一个” 剖视图“,如典型的用于表示详细业务组件的” 侧面剖视图“:




这种Component View一般都是跟着你的总架构图和网络拓卜图的后面出现的,这三套图我称它为“ 炮鸣三声”(起兵啦。。。)。
因此这样的图往往会使用“暖色调”,以几何或者立体的色块来展现,带给观看者强烈的视觉冲击,架构师的功底基本可以集中体现在这三套图中, 这三套图同时也起到了“先声夺人”吸引观众的眼球,注意力的作用(那边的女孩看过来看过来,我的钞票多。。。嘿嘿嘿)

如下面这样的一个总架构图的表现手法:

对吧, 暖色调,以几何或者立体的色块来展现


3.2.2 以图绘意


我这边提个问题:如何表达一个” 业务规则“,如何去表达一个” 工作流“,就是 ”业务规则“这四个字我用图怎么表达。。。 工作流这三个字我用图怎么表达?大家想一下。

来,看看下面的图:

这个图一看就知道是在表达process或者说是工作流



这个图代表”规则“,规则就是一组if else if if



对吧。。。现在来个更难的,我的业务规则用的是规则引擎,且内核是jboss rulz,嘿嘿,怎么用图标达,来。。。下面给出我的答案:


对吧。。。看到了吗。。。图用来绘意,但图不能乱用,就拿这个”系统中使用了JBOSS RULZ来作为规则引擎"这个描述来说,你要画的图其实是建立在你的Hard Skill上的。


3.2.3 依照“八股文”来绘制设计图


八股文就是有条理有章矩,不管什么样的文章你按照八股文去写,写出来都是一样的层次,我们考四级英语的“写作”这一本时其实也是有“章法”可循的对吧?

那么这个设计图的画法也是有章可循的,也是有它的“八股文”样板的。

前面说了,上手三套图先声夺人,抢人二目,那么在架构设计文档中还会充质着种种模块,子模块,功能设计,功能点描述图。。。如果你也来个一概而论,那就不是先声夺人了,而是“喧宾夺主“了,呵呵呵。


这种子模块、功能设计或者是功能点描述往往往以点、线为主,以点、线来连成一个面,而面中”娄空“,如下面的样例:





四、如何画出准确且“漂亮”的设计图呢



七叔:You are beautiful...啊...you are beautiful...You are so handsome...啊You are so handsome...
周星星:七叔,你不要这样好吧。。。七叔。。。来人啊。。。

我在前一天即第二十五天中用来描述DbUnit的优点时用到了一套图,它们是这样的,大家还记得吧?



右边的文字,没什么稀罕的,都是配色而己,关键在于左边的这个图。。。hoho,很多人问我用的是什么工具画的?

我告诉你们,我不是美工,我其实是在“ 拼图”,如这幅图的制作:





我是用了以下这5幅小图标,拼制而成的:





不是这么简单的,随便画画就成了,都要花功夫的、花心思去制作的。

  • 平时自己看到好的可以表达某个意义的图片,存下来,分门别类
  • 看到人家写的好的架构文档,存下来,看看人家是怎么去描述一个功能点的
  • 多搜集一些IT上专用的图标,小图片,logo
IBM的文档是我看到过最恐怖的文档,基本上这里面的架构文档出来都一个腔调,没什么文字,都是图, 连个“登录过程”都用图表达连个“源码check in check out”的管理流程都用图表达

保持你的图系一致及风格的一致,你可以用卡通系、商务系任何一个系的图来表达你的设计思想,但是当你的第一幅图用的就是哪个系时,你的文档中所有的图都请用这个系列,而不建议你混杂使用你的图系。

五、图文混杂的技巧


什么都不多说,上截图,大家自己去感受一下吧



今天就说这么多,希望对大家提高你的设计文档写作水平有所提高吧。



目录
相关文章
|
7月前
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
5月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
高并发下的秒杀系统设计是一个复杂的挑战,涉及多个关键技术点。40岁老架构师尼恩在其读者交流群中分享了16个关键架构要点,帮助解决高并发下的秒杀问题,如每秒上万次下单请求的处理、超卖问题的解决等。这些要点包括业务架构设计、流量控制、异步处理、缓存策略、限流熔断、分布式锁、消息队列、数据一致性、存储架构等多个方面。尼恩还提供了详细的实战案例和代码示例,帮助读者全面理解和掌握秒杀系统的架构设计。此外,他还分享了《尼恩Java面试宝典》等资源,帮助读者在面试中脱颖而出。如果你对高并发秒杀系统感兴趣,可以关注尼恩的技术自由圈,获取更多详细资料。
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
|
5月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
高并发下,如何设计秒杀系统?这是一个高频面试题。40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试Shopee时遇到了这个问题,未能很好地回答,导致面试失败。为此,尼恩进行了系统化、体系化的梳理,帮助大家提升“技术肌肉”,让面试官刮目相看。秒杀系统设计涉及16个架构要点,涵盖业务架构、流量架构、异步架构、分层架构、缓存架构、库存扣减、MQ异步处理、限流、熔断、降级、存储架构等多个方面。掌握这些要点,可以有效应对高并发场景下的秒杀系统设计挑战。
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
|
8月前
|
存储 架构师 测试技术
架构之道:人人都是架构师(2)
每个业务系统的开发者都应该具备一定的架构师素养,架构师的重要职责不仅仅是做决策,更重要的是提升团队的整体能力。一个好的架构师应该聚焦于业务和系统,定义问题和结果,设计系统、模块和代码,同时也需要解决跨域问题,确定团队间的边界,制定规范,统一语言,并创建一个让每个人都能成长为架构师的环境,以促进团队的敏捷性。本文旨在探讨如何培养架构思维,并阐述了架构师的职责、能力模型、方法论,以及如何成为架构师。
234 10
|
3月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
4月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
99 3
|
4月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
3月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
372 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
1月前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。

热门文章

最新文章