Taste and Aesthetics - A Conversation with Ken Arnold, Part II 阅读笔记

来源:互联网 发布:linux配置lamp环境 编辑:程序博客网 时间:2024/04/29 16:40

(题外话: 这是  Ken Arnold 系列访谈的第二篇, 之前的第一篇, 及第三篇)

 

这篇访谈谈论的是 Taste 与 Aesthetics.

 

访谈开头, 提问者 Bill Venners 提到了 JINI 的主架构师 Jim Waldo, 并引用了他的一句话, "Much of [building a good team] is just finding people who have the right sense of aesthetic -- a lot has to do with taste, and a desire to keep things simple and elegant."


之前在 Part I 的读书笔记中, 说到程序员工作的核心价值在于使用计算机解决问题. 我们的目标就在于寻找一个好的解决方案, 并通过程序语言合理的表达出来, 以便交流, 及进一步的维护. 这是目标, 但是如何达到这个目标, 上篇笔记没有进一步的探讨.

而 Jim, 在这里给出了一个相对靠谱的思路. 即必须要有 "right sense of aesthetic", "a lot has to do with taste", "a desire to keep things simple and elegant."

 

既然 taste 这么重要, 那么作为程序员, 该怎么学习它呢? Ken 给了个比较有意思的回答

"Whether or not someone can learn taste depends on what kind of person they are. Some people have a really bad sense of taste. Other people have no sense of taste whatsoever."

"It is a lot easier to convince someone with bad taste to look at something differently than to get someone with no taste to notice something they don't see in the first place."

 

前两天看一个视频, 里面提到, "有经验, 但由此养成了坏习惯, 比没有经验更糟", 也即培养经验比纠正习惯容易. 在这里刚好相反, 培养感觉比纠正错误的认识要困难很多.

 

那如何获得好的 Taste 呢? Ken 的回答主要是基于 API 设计的方面

"what people have to learn is to value other people's problems."

"So teaching people taste is mostly teaching them how to listen and how to put themselves in someone else's place."

"The first step on the road, which many people miss, is asking, "What is the other person trying to do?""

 

设计一个好的 API, 需要从用户使用的角度出发, 考虑用户想要做什么, 及会如何做, 进而方便用户对这些 API 接口的使用.

我曾经碰到过一个例子, 提供给我的 RPC 接口是就是一个简单的 int SendCommand(string command, out string reply), 然后返回给我一堆通过文档描述的 XML 字符串, 为了跟这个接口通信, 必须写上一大通的包装类, 虽然能解决问题, 但是增加了很多工作量, 也很不方便.

 

因此吸取了一些教训, 在我提供接口时, 考虑了调用者的方便. 不过看到这篇文章后, 进一步反思, 感觉现有的接口就方便性来说, 尚不彻底, 还有改进的空间.

 

另外, Ken 推荐了一本书 "The Design of Everyday Things",  很不错的一本书, 国内有翻译"设计心理学", 感兴趣的同学可以翻下

 

访谈最后一部分谈到了 Simplicity, 基本上就是 "The Design of ..." 中探讨的话题, 就不多重复了

 

原创粉丝点击