楔子
人月神话的作者Brooks新出了一本书叫做The Design of design,本文不是这本书的书评。写这一篇我已经想了很久了,内容不会太多,但是却很慎重。
Design是个听起来特别高雅的词,很多人从事所谓的设计行业。比如建筑设计,机械设计,艺术设计,以及我所从事的软件设计。
英国戏剧家作家DorothySayers在《The Mind of Makr》里,将创造过程分为三个阶段,即构想(Idea),精神(Energy)(或实现(Implementation))以及交互(Interaction)。这代表着:
1)概念性构想的形成。
2)在真实的媒体中实现
3) 在真实的体验中与用户交互。
我特别赞同这一说法。这表明,设计最重要的是Idea。
Brooks又讲述了莫扎特的故事,其父亲询问其歌剧进度,他回答:一切都谱好了,只是还没写下来而已。
我看过莫扎特传那部电影,因此我理解这段话会有所不同,在莫扎特头脑中的谱子实际上已经具有实现的部分,而不单单是Idea或者叫构思。因为认为会这样形容他快速而绝无修改的作曲过程,就好像把头脑中谱好的曲子誊写在纸上一样。
正文
1 设计是一项创造性活动,而实现则是另外一项活动。
2 Design,常常会用一种Sign(符号)来表示Idea,Sign不是设计,而其表示的东西的才是设计。
3 人们经常提及建筑行业,因为其设计和实现(建造)过程划分最为清晰。另外大型机械制造的设计也类似。
4 设计过程与实现过程以及跟用户的交互的过程会循环多次,其他过程使设计变得有用,并且能够作为反馈促使设计改进。但是它们都不是设计。
5 为了能够将设计和实现过程分离,需要有一种全面的展现形式交给实现人员,比如设计图纸,乐谱等。
6 对于设计软件而言,其实是有两个分类,一个是面向用户使用的软件设计,一个是软件自身结构的设计。项目经理,产品经理,销售主管等往往只看到第一种软件设计,而架构师往往才同时关注两者。
7 在软件设计中,必须承认源代码才是最终设计交付的形式,但是并不应该局限于C或者Java写出来文本文件才是源代码,如果编译系统能够直接将UML图编译成机器指令或者虚拟机指令,那么她们也是源代码。如果不能,其他的文档,图表只是设计的不同粒度,以及所设计的物品的不同部分的表现形式,他们代表设计,但不是全部。(这点与Jack W.Reeves的《What is Software Design》中的观点略有不同)
8 在设计软件时,程序员会不断地完成实现过程,然后看到软件运行时的效果,并与之交互,进行最基本的创造过程循环。这个过程最好要经常进行,快速进行。
9 对于艺术设计而言,比如设计一个Logo,想出这个Logo是什么样子,配色,以及其内涵是一个设计过程,而将其用Photoshop,AI或其他工具精确地绘制出来,只是一个施工过程。
10 由于不同的实现方式,对同样的设计实现难度不同,成本不同,因此好的设计师应该考虑这点。
11 因此好的设计师应该对实施工具了解。
12 精通PS,AI,或者Java,并不等同于好的设计师,因为好的设计在于你有怎样的想法。
13 对于软件设计而言,一种编程语言可能比另外一种更能表现设计意图。
14 另外对于软件设计而言,具体的一段微观的代码,或许不是软件设计,而是算法设计。不要一概而论。
15 由于有时所要设计的对象非常庞大,比如设计故宫,或者航空航天软件,那么需要考虑流程化设计过程,对设计进行管理。对设计元素进行组织。这有利于创造更好的设计,但不是设计本身。
16 一个优秀的设计师,并不一定精通你所认为那个设计工具,那个工具要么是建造工具,要么是为了进行设计交流,而不是设计本身。
17 同样,一个好的设计,并不在乎你使用了多么复杂的工具,利用了多少奇技淫巧,有时它很简单,比如Nike的标志。
18 设计跟任何其他的发明创造工作一样,需要继承和学习。
19 任何事情都有规律,做任何事情,都有成功模式和最佳实践。设计也一样。
20 我们应该广泛涉猎所有知识,以启发我们的设计。
设计是一种思想,而不是工具。
天赋,博学,以及表达,才能成为一个好的设计师。
分享到:
相关推荐
神话人物(《人月神话》作者)布鲁克斯(Frederick P. Brooks, Jr.)关于“设计”的反思。譬如亚里士多德论《逻辑》,布鲁克斯的反思是有深度的,又是可以理解的…… 英文版的。这种书,做翻译的没人能懂,能懂的没...
《设计原本》是一本由计算机科学家、软件工程师和认知科学家Fred Brooks所著的经典著作,英文全称为"The Design of Design"。这本书深入探讨了设计过程中的本质问题,跨越了多个领域,包括软件工程、建筑学、产品...
《The Design Of Everyday Things》一书在当今时代仍然具有高度的时效性与相关性,这得益于其探讨的不仅是针对特定技术的设计理念,而是普遍的设计原则。该书作者唐·诺曼(Don Norman)提出,用户在面对日常生活中...
Rethinking the design of the Internet:The end to end arguments vs. the brave new world 作者:Marjory S. Blumenthal, Computer Science & Telecommunications Bd David D. Clark, M.I.T. Lab for Computer ...
Refactoring Improving The Design Of Existing Code
This eagerly awaited new edition has been fully updated to reflect crucial changes in the programming landscape.Refactoring, Second Edition,features an updated catalog of refactorings and includes ...
离散优化问题无处不在,从传统的运筹学规划问题,如日程安排、离散优化问题无处不在,从传统的运筹学规划问题,如日程安排、设施位置和网络设计;到数据库中的计算机科学问题;到病毒式营销中的广告问题。...
[计算机科学经典著作].The.Design.Of.The.Unix.Operating.System
Thomas H Lee - THE DESIGN OF LOW NOISE OSCILLATORS It is hardly a revelation to note that wireless and mobile communications have grown tremendously during the last few years. This growth has placed ...
《重构:改善既有代码的设计》是一本专注于软件开发领域的经典著作,由Martin Fowler著述,主要探讨了如何通过重构技术来提升现有代码的设计质量。重构是软件开发过程中的一个重要环节,它并不改变软件的外部行为,...
Architectural Styles and the Design of Network-based Software Architectures,对基于网络的软件架构设计以及架构风格进行了拓展,并主要揭示了软件架构的一些原理性的东西
Refactoring Improving The Design of Existing Code 重构已有代码
On the design of high performance digital arithmetic units,斯坦福大学博士论文——关于浮点运算部件的设计
《Refactoring: Improving the Design of Existing Code》是软件开发领域的一本经典著作,由Martin Fowler著述。这本书深入探讨了重构这一关键的软件工程实践,对于Java开发者来说尤其具有指导意义。重构是指在不...
Based on a new classification of algorithm design techniques and a clear delineation of analysis methods, Introduction to the Design and Analysis of Algorithms presents the subject in a coherent and ...
The design of integrated circuits today remains an essential discipline in support of technological progress, and the authors of this book have taken a giant step forward in the development of a ...
Refactoring: Improving the Design of Existing Code Martin Fowler Kent Beck John Brant William Opdyke Don Roberts Publisher: Addison Wesley First Edition June 11, 1999 ISBN: 0-201-485672, 464 ...