Biaobiaoqi的博客

《清单革命》

| Comments

应该叫『清单宣言』

在 Amazon 上『满 100 送一本』的活动中随手挑到了它。鉴于其空洞的标题,被束之高阁半年多,最近关注个人管理方面的知识,才拍拍灰尘读起来。

书的英文原名是『The Checklist Manifesto: How to Get Things Right』,直译成『清单宣言』在我看来更贴切,而非充满噱头的『清单革命』。正如一个小功能难以做成独立的产品,一个方法改进也难以成就革命。『清单能大大的改善效率,降低失败概率』这一观点,在医生出生的作者手中翻来覆去的被各种事例证明着,案例的行业背景从医学到建筑,到航天,再到投资,实在乏味。当然,这不妨碍『清单』这一工具对生活工作的助力所带给我们的思考。

三类问题

清单作为处理问题的工具,需要从问题的分类谈起。问题大致可分为三类:简单问题、复杂问题和极端复杂的问题。

  • 简单问题,诸如洪培蛋糕,只需要知道流程,就可以独立完成,没有复杂的过程和细节。
  • 复杂问题,比如火箭发射升空。通过耐心分解,复杂问题能划分成很多的简单问题,进而得到解决。这时候,需要借助集体的力量。
  • 极端复杂的问题,比如子女的抚养。问题的领域极其宽广和复杂,充满了不确定性,理性的分析难以完全掌控。

这三种类型的问题由简单到复杂的梯度递增。

实践经验:清单

实践领域的失败分为两种,一种是无知之错,俗话说得好,『不知者无罪』;另一种是无能之错,即按照知识储备,完全能成功解决问题,最终却因为各种原因失败了。随着社会的发展,后者的出现频率越来越高。造成这一现象的原因容易理解,社会复杂度越来越高,各种问题的实施难度加大,远超过个人能力的范围了。这个时候『清单』的重要性凸显了出来。

人脑有一个认知防护网,体现在如下认知缺陷上:

  • 记忆不完整
  • 注意力不集中
  • 惰性思维

清单能帮助人处理问题:

  • 重压之下,人脑容易忽视某些细节。
  • 人脑对于熟知的事实,思考时容易跳过一些事项。

使用清单时,特别注意需要保证清单的简单、可测、高效。清单是给人用的,基于人脑局限性,复杂和模糊的认知难以帮助事情的发展。

清单需要简单、可测、高效

当然,清单也有显而易见的缺点:死板。它是一张纸条上的几行文字,不会知道水的冷暖。那么,当意外发生,需要应变的就是执行者本人。生活中,事物总是充满着变化,清单的控制也需要注意及时的应变。

制定清单、执行清单的过程,也需要灵活应变。

用清单处理问题

  • 简单问题: 简单的问题可以通过清单提高效率和成功率。
  • 复杂问题: 可以拆分为许多的简单问题,分由多人管理和复杂,再辅以清单解决。另外,需要注意人与人之间沟通,这能降低出错的可能性,提高个人效率。
  • 极端复杂的问题:更多的需要不断的试错、调整。

《写给大家看的设计书》

| Comments

从 iOS7 的扁平化谈起

昨晚看了 WWDC2013 的直播,iOS7 以扁平化 UI 的方式展现在世人面前。于是接下来进入了微博吐槽时间。

大象要跳舞是很难的,这正是苹果面临的情况。现在无论是 Android 还是 Winphone,与 iOS 系统体验上的差异已经不是难以企及的,甚至有些方面更能为大众接受。于是 Ive 带领他的团队开始拥抱 Flat Design。乔布斯子不知道会怎么想,他可是坚持了一辈子的拟物风格。当然,无论乔老爷子怎么想,时势如此,由不得苹果不变。

从微博疯狂的 iOS7 刷屏中挑出了些有价值的信息,关于扁平化和拟物化的:

看完这些已经晕头了。人的思维总是有惰性的,倾向于接受自己头脑中已经有条理的思维结果。不情愿的说,这些略显专业的介绍已经超出了我对设计的思考范畴了,我看到的只是零散的观点,而找不到源头。

于是想起了《写给大家看的设计书》。作为非设计人员,这本书够接地气。一个多月前看完,让自己对设计的认识从一个完全的小白提升为一个略有喜好和观点的小白了。还是先聊这本书吧。

设计的基本原则

读这本书之前,在不同平台上看见它的好多推荐了。不过鉴于大多数设计类书都是『手把手教你画马』的效果(详情参见下图),一直不太感冒。

怎样画马

后来码代码太烦躁,抱着试一试的态度在多看上下载了下来,一着眼便被吸引住了。书本本身的排版设计就透露着简洁明了的设计感,配色也恰到好处的清新。

全书循序渐进的从设计的四大基本原则讲起,结合丰富的案例分析,延伸到具体的主题设计技巧中。这部分是最让我觉得受益的部分。当然,不仅仅只是这些,还有涉及到颜色的运用、字体的设计等内容,本着『不要在意这些细节』的原则,它们被我匆匆略过。

可以这么夸张的说,设计的『四项基本原则』是我有自主意识以来觉得最受用的『条条框框』:

原则一:亲密性

亲密性的根本目的是组织性。还有个副产品,利用亲密性可以使空白更美观。

  • 将相关的项组织在一起。
  • 物理位置的接近就意味着存在关联。

原则二:对齐

对齐的根本目的是使页面统一而有条理。不论创建精美的、正式的、有趣的还是严肃的外观,通常都可以利用一种明确的对齐来达到目的。

  • 任何元素都不能在页面上随意安放。每一项都应当与页面上的某个内容存在某种视觉联系。
  • 对齐的项会形成一个内聚的单元。
  • 居中对齐显得正式、稳重,但一般不要用居中对齐。
  • 一定要坚持页面上只使用一种文本对齐,避免混合使用多种文本对齐。
  • 可以适时的打破规则,但在此之前得清楚什么是规则。

原则三:重复

重复的根本目的是统一,并增强视觉效果。

  • 设计的某些方面需要在整个作品中重复
  • 重复是一种全局的一致性,比如杂志每页的标题都使用同样的字体大小。这有利于信息的组织。
  • 重复也一定程度给作品带来专业性和权威性。
  • 要避免太多的重复,重复太多会让人厌烦。注意对比的价值

原则四:对比

根本目的有两方面。一个目的是增强页面效果,如果一个页面看起来很有意思,往往更有可读性;另一个目的是有助于信息的组织。

  • 如果两项不完全相同,就应当使之不同,而且应当是截然不同。
  • 对比一定要强烈。

应用设计原则

优秀的设计就这么容易:

  • 1.学习 4 大基本原则;
  • 2.认识到自己没有运用这些原则;
  • 3.应用基本原则。

这四个基本设计原则是相互关联的,只应用某一个原则的情况很少。当对应着一个个的举例体验过四条基本原则的威力后,接下来就是在自己身边实践这些原则了。

一方面,可以观察四项原则在现有设计中的应用:比如当前所打开的网页,是否足够清晰、明确的展示了它所要表达的意图;手头的书本,排版是否跟内容在情感上吻合。

另一方面,时常会有些文档、写报告、为展示写 slides 的需求,自己在创作的过程中,也可以应用起这四条原则,慢慢体会,慢慢修炼。

体会

歌德在《浮士德》中提到过这么一句话:『理论是灰色的,生活之树常青』。在我看来,所有的事物都是如此,人性使然。抛开这四条原则本身,它们归结起来都是要实现意图的传递:

将信息从设计者准确无误的传递给目标用户

设计作为一种原始信息的载体,本身的形式上会带来附加的信息量,如何让这些设计自身的附加量不混淆了核心的原始信息,是设计好坏的根本。更进一步,设计的更高层次应该是让设计的附加量起到正相关的增益效果。《写给大家看的设计书》中的四个原则正是最基础的实践。

现在是信息的时代,信息量的暴增让信息的简洁展示和选择变得越发关键。前文提到的扁平化的设计风格的崛起,就是一个例证:

『扁平化设计具有一种给你让人心醉的美丽,没有大量的修饰,它能以一个简单直白的方式传达一个信息或者帮助一个产品以及思想变得更加深入人心……扁平化设计正是通过放弃任何附加效果的方式,创建一个「零」3D 属性的设计方案。在这里,没有阴影效果、斜角、浮雕、渐变等其他方法来帮助元素产生相对于屏幕的凹凸效果。不带有羽化边缘以及阴影效果的图标和 UI 元素也都看起来非常鲜明。』

相对而言,乔布斯推崇的拟物风格中,所秉承的是让所有用户能快速的学会如何使用它。而随着时代的发展,这种降低学习成本的方式渐渐的不是必须,数码产品充斥着生活,大多数人已经有足够的经验来应对新的操作体验。从这个角度讲,扁平化在现阶段或许是更有好的选择。

不管怎么样,WWDC 以后,苹果股价已经持续下跌了,祝福苹果吧,希望 Ive 不要成为苹果的罪人,据说他是最懂乔布斯的人呢。

《程序员的思维修炼》

| Comments

别鄙视方法论

曾经很长时间里,我这么认为:方法论的东西没什么实际的用处,不过是其他人按照自己的喜好来处理事物的途径而已,何必照着他人的思路。比如,作为一只不靠谱的程序猴子,在一些偏颇的思维习惯的影响下,我甚至对许多图形化的东西比较反感,自以为文本信息已经足以表达清楚事实且更有效率,从而本能的回避能造成视觉冲击的事物。直到后来,发现自己每每定下的计划都无法完整实施,自然也是没有收到预期的效果。我开始关注到方法本身是否合理,寻找那把平衡效率和体验的钥匙。

这本书给出了一个很好的答案。

虽然标题上赫然是“程序员”几个大字,但其实并没有这么局限。这是一本谈论思维习惯的书,对所有想了解大脑认知过程以更好的发觉其潜能的读者而言,都是可以参考的。虽然自己只是看完了这本书,而没有长期实践的效果证明,但从以往的经验来看,它的观点总能让我信服。

《Facebook效应》

| Comments

前两年风靡了一阵子的电影《社交网络》毕竟是电影,一种艺术的方式的表达。虽然无法完全的印证《Facebook 效应》一书中记载的正确性,但其细节足以给人启示。

电影中,主人公炫酷的人生经历能催生观者产生极强的代入感,不少同学看后可能就会想着自己在寝室特立独行的捣鼓几下,也来做出个震惊世界的产品。且慢。细读本书,就会了解到,成功并非像电影中所描述的那么轻松愉快和力所能及。

以下是我的一些总结。

《免费》

| Comments

比特经济的到来

克里斯·安德森人称鸟人安德森,现效力于热火队,一直以来都是值得信赖的角色球员,板凳匪徒,内线尖兵。好了,不扯了……回到另外一个克里斯·安德森的思想世界来。

长尾理论早就为人熟知了,最早就是由安德森提出的,用于解释 Amazon 和 Netflix 的商业和经济模式。虽然没有阅读过原书,只是从网络接收了一些二手甚至三手的相关观点,但也可以从当今互联网的新兴中发现许多端倪。

按作者的话来说,“免费”是《长尾理论》没讨论完的话题,它并非新生事物,但是一直在变化,它的变化促使我们要反思人类行为和经济动因方面最根深蒂固的一些观念。

基本排序总结

| Comments

最近准备面试,正好把刚接触数据结构时学习的排序整理了一下。算法的实现在 wiki 上都有详细的介绍,这里主要做归纳和总结。

注意对排序算法的稳定性的理解:保证 2 个相等的数在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。换句话说,相等的数值在排序时不断交换位置是不稳定的。

二叉树的遍历(递归、非递归)分析

| Comments

背景

  • 2013-10-7 修订部分内容
  • 2014-5-24 修改后序非递归部分代码

本文讨论二叉树的常见遍历方式的代码(Java)实现,包括前序(preorder)、中序(inorder)、后序(postorder)、层序(level order),进一步考虑递归和非递归的实现方式。

递归的实现方法相对简单,但由于递归的执行方式每次都会产生一个新的方法调用栈,如果递归层级较深,会造成较大的内存开销,相比之下,非递归的方式则可以避免这个问题。递归遍历容易实现,非递归则没那么简单,非递归调用本质上是通过维护一个栈,模拟递归调用的方法调用栈的行为。

在此之前,先简单定义节点的数据结构:

二叉树节点最多只有两个儿子,并保存一个节点的值,为了实验的方便,假定它为 int。同时,我们直接使用 Java 的 System.out.print 方法来输出节点值,以显示遍历结果。

1
2
3
4
5
6
7
8
9
public class Node {
      public int value;
      public Node leftNode;
      public Node rightNode;
      
      public Node(int i) {
          value = i;
      }
  }

详细代码参见链接:BST 及其各种便利的详细实现代码

《谁是谷歌想要的人才?》

| Comments

道理都明白,还得靠自己

关于本书

藉由大多数程序员天然的对 google 怀有的朝圣般的向往和喜爱,开始看这本书

书中的中文版序的标题就是“跳出框框来思考”,这种观点倒不是第一次见到了,甚至可以说,这些观点充斥于互联网上的各种流传、经验贴中。但这并不意味着我们不需要再花时间在这种书上。道理都懂,就是做不好已经成为这个信息通畅的时代的特征之一。正所谓“纸上得来终觉浅,绝知此事要躬行”。

《痛并快乐着》

| Comments

儿时没烙印下的痛与快乐

这是一本让我内心平静的书。或许是因为他所讲,都是那十年来有亲身经历到过的。

《痛并快乐着》有二十来篇文章,每篇一个主题。所有的主题都围着个人在中国二十世纪后十年中的发展和社会的变迁中展开。文中,描述了白岩松如何从大学毕业后,几经波折获得了一个并非自己当初所想的工作,又如何在计划之外的点点滴滴中,将人生的珠子穿成了一根线。