最近看了很多工程师写的文档,发现工程师们普通存在的问题,要么通篇都是文字一个图也没有,要么技术规划全是一堆的 task,根本看不清楚这些 task 跟整体的目标是什么关系,等等,即便是高级工程师,有类似问题的也大有人在。

专业的态度

我大学刚毕业那会儿,正值金融危机,那会儿找工作是出奇的难,简历发出去之后一周才有回应,当时第一个回复我的是一家规模不大的公司,很快就约了面试,到了办公室才发现,整个团队才3个人,还都是新招的,除了我是应届生,其他都是工作好几年的,面试很顺利,刚面完,就收到第二家公司的面试邀请,看规模比第一家公司更大,但当天下午,就收到了第一家公司的 offer,考虑到金融危机的影响,直接接受了第一家公司的 offer,第二天就去上班了。

上班第一周,熟悉完流程,就收到了老板的需求,给 XX 银行做一个 XX 系统,我一看,卧槽,居然指定了只能用 JDK 1.4,做完需求评审,就准备出方案了,然后,我自告奋勇写设计文档,几天下来,文档写得差不多了,然后邮件发给了团队 review,中午下楼吃饭的时候,团队里一个看起来很资深的工程师凑到我身边,问道:

“景森,你工作几年了?”

他这么一问,把我搞得有点不知所措。

“咋啦?”

“我看了你写的文档,感觉很专业啊!”

我心想:“不会吧?你一个工作了 3 年的跟我一个应届生说我写的文档很专业,are you kidding me? are you serious?”

“哦,是嘛?这是我的第一份工作”

也不知道听到我这话,那哥们儿是怎么想的,我只是略有感觉,后面好一阵,那哥们儿没有之前那么活跃了。

要说我写的文档有多么专业,引用郭德纲的一句话——「全靠同行的衬托」,一个应届生写的文档能专业到哪儿去呢?但为什么会让一个工作 3 年的工程师感觉很专业呢?我也有想过这个问题,可能是因为在大学期间受到我的导师的影响。虽然都是做学术研究,但我的导师是一个很注重细节的人,无论是研究方面,还是生活方面,给人的第一印象就是——专业,当然,对我们的实验报告也不例外,从那时候起,我就养成了把尽可能把文档写得很工整的习惯:

  1. 统一字体
  2. 不同级别的标题使用不同的字号
  3. 正文统一字号和颜色
  4. 为篇幅较长的内容生成目录和索引
  5. 不要用一个段落长篇大论,适当的分段落会让内容有节奏感和层次感
  6. 不要错别字连篇

时至今日,我还记得有一次老师在我作业底下留的评语:“看你的作业简直就是一种享受”。

不光是写文档,连写代码也是一样,还没参加工作的时候,写代码很少用 IDE,基本上都是文本编辑器,也就很少用自动格式化的功能,全靠一边写一边手工完成格式化,所以,每次有人找我 review 代码,我第一眼扫过去先是看格式:

  1. 缩进是否正确,有没有对齐
  2. 该空格的地方有没有空格
  3. 该空行的地方有没有空行

一般格式不整洁的代码,我是拒绝 review 的。

一图胜千言

在写文档之前,我一般是先画图,等图画好后,文档的思路和轮廓也就出来了,可能很多人认为,画图是一个艺术活儿,但我不这么认为,这个也是可以通过勤学苦练习得的。

图的结构

这里的图主要是架构图,配图不在此展开,架构层有很多种表现形式,也有很多成熟的框架和模型可以运用,像常用的有:

相较于 UMLC4 上手更容易,无论是哪种模型,架构图的结构都是从 high-level 到 low-level 的,就像地图的鸟瞰图分不同的级别,不同的级别呈现的内容不一样,越往 low-level ,细节呈现得越多,架构图也一样,也是一个从模糊到清晰的过程,请记住:

不必在一个图里体现架构的所有内容!!!
不必在一个图里体现架构的所有内容!!!
不必在一个图里体现架构的所有内容!!!

可以采用循序渐近的方式,先从最模糊、最 high-level 的图开始,这也符合人的视觉和思维的处理方式,人的大脑对于信息的处理,也是从先轮廓开始的,然后才是细节,如果一开始就暴露太多的细节,大脑就搞不清楚哪个是重点,循序渐进也是为了体现主次之分。

PS 技术

说到画图,还得追溯到上学那会儿,我表妹是做平面设计的,经常会问我一些软件方面的问题,所以,我很早就接触到了 Photoshop 和 CorelDraw 之类的绘图软件,加上那会儿 Web 2.0 的热潮,自己做 Web 应用就免不了要会切图,虽然有网页三剑客,但我更亲睐 Photoshop,大学无聊的时光有一小部分就被用来苦练 Phohtoshop 抠图,说不上炉火纯青,但也算得上是轻车熟路,经常帮老师和同学处理照片,记得当时一室友失恋了,相机里存了好多他女友的照片,他想要整理那些照片,就让我教他 PS 技术,一个暑假下来,他也轻车熟路了。毕业多年后,一次聚会,这哥们儿还在感慨:“当年幸亏跟你学了一门手艺,现在能在单位大显身手”。

写文档一般都是画架构图,并不太需要用到太多的 PS 技术,但做 PPT 不一样,想要做出漂亮的 PPT,就需要好的素材,但有些素材可能因为背景、色调问题,不能直接使用,就需要先处理一遍,这时候就要靠 PS 技术了,一般常用的 PS 技术有:

  1. 抠图,去背景
  2. 拼图,如:多张图叠加、拼接等
  3. 调色彩、色调
  4. 调大小、切图、做圆角等
  5. 局部模糊、马赛克
  6. 头像美颜
  7. ……

关于 PS 的教程,网上一搜一大把,以上一些常用的 PS 技术,照着视频来操作,一周就能学会,在我上学的那个年代,那些教程都是图文版的,视频教程相对来说还比较少,在那样的环境下,我也很快就掌握了一些常用的操作。

使用 Photoshop 有一个问题——太贵,作为业余的使用者,为了做一个 PPT 而花几百买一个 License 着实不划算,一年也用不上几次,好在有人实现了一个网页版的 PS,而且还能免费使用,当然,代价就是有广告,相比于几百的花费,广告还是可以忍忍的。我也经常用这个工具来做图,以上常用的功能基本上都支持了,而且跟 Photoshop 的使用习惯几乎一模一样,体验上也相差无几。

素材

得益于现在强大的搜索引擎,Google 一般能解决 80%-90% 的问题,除非对一些行业或者特定的场景有高质量的需求,或者要归避版权问题,可以直接去购买高质量的素材,也可以去找可以免费下载的素材,例如:

色彩

无论是 PPT 素材,还是文档配图,都免不了要配色,色彩的拿捏倒真的是一个艺术活儿,好在现在有很多的配色工具可以用,网上一搜一大把,如果实在找不到合适的,那就看技术社区或者大厂出的图的配色,然后用拾色工具来取色套用到自己的图里,以下是我常用的调色板生成器:

背景色

貌似从乔帮主开始,科技行业的 PPT 的背景色都是以黑色或者灰黑色为主,显得更高大上,更有神秘感,虽然我也很喜欢这个调调,但是,对于做 PPT 的人来说,黑色的背景非常挑素材,大部分的素材在白色背景下都很好看,一放到黑色背景下,就显得不那么搭调,尤其是对抠图技术提出更高的要求,因为抠得不好就会出现白边,塑料感直接拉满。如果对自己的 PS 抠图技术不过关的话,最好还是首选白或者浅色作为背景色。

主色

除了背景色,另一个非常关键的就是主色了,也就是 PPT 中最抢眼的颜色,如果不会拿捏,直接从 PPT 或者 Keynote 自带的模板中挑一个合适的颜色作为主色。

辅色

一般一页 PPT 中有 2-3 种颜色是比例中适宜的,太多或太少都没有主次之分,建议:

  1. 标题为主色
  2. 副标题或者正文内容为辅色
  3. 如果有注释或者解释说明,用更淡的颜色

如果实在不知道如何配色的时候,又比较懒的话,可以尝试经典的配色:黑-白-灰,灰色也可以选择不同的灰阶

线条

以我多年的实践经验来看,大部分的情况下圆润的曲线更能提升美感和格调,在一些很有科技感的地方适当的使用生硬的直线、棱角或多边形(尤其是六边形)更能提升科技感。对于画架构设计图,以下是我的一些经验,仅供参考。

单调的方块用圆角矩形,如果方块中包含了其他的元素,比如 UML 中的组件图,有对外暴露端口的话,端口比较小不适合用圆角,如果端口用直角,整个组件图用直角会更谐调,像类图、时序图也一样,总结下来:

  • 表示细节的块状图用直角
  • 表示抽象的块状图用圆角

连接线

  • 短距离用直线
  • 长距离用曲线
  • 至于折线,我很少用到

边框

背景和边框一般不同时使用,总结下来:

  • 有背景则无边框
  • 有边框则无背景
  • 如果都要有,推荐背景用半透明或低透明

粗细与间距

线条的粗细也很关键,使用得当,颜值拉满,以下是我的一些经验,仅供参考:

  • 优先考虑用细线条,细线条给人一种轻盈感
  • 可以适当用粗线条,粗线条给人一种厚重感

像线段或箭头,两端有连接到别的图形上的话,可以考虑为两端适当的留出一点间距,当然也得看绘图工具是否支持,如果能支持更好,不能支持请忽略。

篇幅

对于 PPT 而言,控制篇幅的最佳实践就是——多图少字,请记住:

作为演讲者,不是为了让观众把视线放在你的 PPT 上,而是让观众把视线放在你身上!
作为演讲者,不是为了让观众把视线放在你的 PPT 上,而是让观众把视线放在你身上!
作为演讲者,不是为了让观众把视线放在你的 PPT 上,而是让观众把视线放在你身上!

那如何才能既能让观众知道你下一页要讲什么,又要让观众的视线不离开你呢?答案就是——po 图!

人的大脑接收图像信息的能力超乎你的想象,但是处理文字的能力相对于图像的处理能力简单就是人工智障,与其让观众看着冰冷的文字逐行理解,不如让观众欣赏你声情并茂的演讲。

专业的工具

PPT 工具

作为专业的 PPT 工程师,用得比较顺手的无非就是这三种:

  • Microsoft PowerPoint
  • Google Slides
  • Keynote

我用得最多的还是 Keynote,当然其它两个也非常方便,主要还是因为用的 Apple 的操作系统自带了,加上原生的 App 体验会更好。

架构图工具

我用过的画架构图的工具不少,大概有:

但要说用得最爽的,还是 Lucidchart 果然还是贵有他贵的道理,像我的博客中的图,一般都是用 PlantUML 渲染出来的,不是直接手绘的。

讲好故事

我经常自嘲道:“开局一张图,后面全靠编”,这里说的「编」其实就讲故事,故事里的虚虚实实,只有讲的人知道,为了提升观众或者读者的体验,总是或多或少的加入一些虚构的内容,如果全是真实的内容,就不是故事了,而是纪实了。

记得有一次要对外做宣讲,准备了 PPT 发给 VP 审稿,结果 VP 扔了一句:

Johnson, your PPT needs an overhaul.

后来,让他的助理(总监级别)帮我一起改 PPT,开篇引入一个小故事,用故事吸引住观众,然后通过故事引出演讲的主题,而不至于太突兀,整个演讲其实就是讲一个大的故事,在故事的结构一般由两部分组成:引子和主题,二者可以都有自己的时间线和逻辑链,关键是要引子的时间线和逻辑链与主题的时间线和逻辑链对应上,就成开了一个大的故事。

还记得有一次我老板要去给 CTO 汇报工作,让我给他提供点素材,正好瞅了一眼他的 PPT,标题是:

The Past, Present and Future of Xxx

不愧是我的老板,用大道至简来形容再贴切不过了!光看标题就知道他要怎么讲了。