The Essence of Software: Why Concepts Matter for Great Design
严格定义的软件概念包含:
1. 名称(Name)
2. 目的(Purpose): 解决什么特定需求
3. 状态(State): 概念必须记住的数据
4. 动作(Actions): 改变状态的行为
5. 操作原理(Operational Principle): 解释如何实现目的的典型场景。
摒弃传统的“客户端-服务”调用,概念之间通过“动作同步”组合。比如:执行概念A的某个动作时,强制触发概念B的动作。同步做减法,它排除了概念单独运行时无意义的行为序列。
将底层概念投射到用户界面的过程。糟糕的映射(如:用一个按钮绑定两个不同概念的动作,或故意隐藏状态)会造成“暗黑模式”或可用性灾难,模糊了清晰的概念。
不是代码调用依赖,而是“语义逻辑依赖”。例如:没有“帖子”概念,“点赞”概念就没有存在的意义。依赖图指导了MVP(最小可行性产品)的构建和功能裁剪。
作者指出,软件工程过于关注“内部代码结构(如何写对代码)”与“消除缺陷”,而人机交互(HCI)又太偏向心理学与前端界面,真正的“软件设计”被忽视了。软件UX设计应分为:
概念不仅仅是开发工具,更是商业武器和产品灵魂。
公式(Formula) 概念;Photoshop的统治力在于 图层(Layer) 与 蒙版(Mask)。一个健壮的概念不是模糊的想法,而是严谨的机器。其核心在于目的 (Purpose) 和 操作原理 (Operational Principle)。
样式(Style) 概念,只有 格式(Format)。样式的目的是为了“保持文档格式的一致性更新”。其操作原理是:如果你将样式S赋予段落A和B,当你修改样式S的格式时,A和B会同时自动变化。这需要概念拥有“记住样式与段落映射关系”的状态(State)。
软件不是大杂烩,而是概念的编排。组合通过“动作同步”完成:
Trash 和 Folder。你不需要学习新UI去管理废纸篓,因为它就是一个文件夹,具备排序、搜索等所有文件夹的通用能力。又比如 Photoshop 中,通道、蒙版、选区 在底层共生为同一个概念:灰度图像,这赋予了它无穷的威力。
底层概念再好,如果UI映射(Mapping)糟糕也会毁掉体验。
黄金法则:一个概念对应一个目的,一个目的对应一个概念。破坏它会导致冗余或过载。
收藏(Favorite, ⭐) 概念,用户既用它来“表示赞赏”,又用它来“私下稍后阅读”。这导致极大的心理冲突(我只是想稍后看,并不代表我赞同这条暴论)。后来Twitter被迫拆分出独立的 书签(Bookmark) 概念。进纸方式 概念塞进了 纸张尺寸 概念里(如“A4-后部进纸”)。导致用户无法自定义尺寸,引发逻辑混乱。
优秀的工程师懂得复用代码,优秀的设计师懂得复用概念。
大纲树(Outline Tree) 概念来给幻灯片分组,支持无限嵌套、拖拽降级;而微软 PowerPoint 发明了一个全新的 节(Section) 概念,不支持嵌套,且新建行为难以预测。
当概念被组合时,绝对不能破坏其自身定义的“操作原理”或核心契约。
字体家族(Typeface)(如Light, Regular, Bold)。当你把 Light 字体加粗,它跳到了 Bold;你再点取消加粗,它却回到了 Regular 而不是 Light!字体 概念的介入破坏了 格式切换 概念的完整性。作为认知科学家与软件工程专家,我们必须厘清本书中的“Concept”与知识图谱、心理学中“Concept”的本质异同。
(By Daniel Jackson / 本书主旨)
(Concept Map, By Joseph Novak)
(Cognitive Psychology)