【转】设计的重要性

我曾经在一篇文章里谈过关于设计的问题,然而那篇文章由于标题不够醒目,可能很多人没有注意看。我觉得现在有必要把里面的内容专门提出来讲一下,因为设计在我的心目中具有至关重要的地位,却被很多计算机科学家和程序员所轻视。

我觉得自己不但是一个计算机科学家和程序员,在很大程度上我还是一个设计师。我不但是一个程序语言的设计师,而且是其它很多东西的设计师。我设计的东西不但常常比别人的简洁好用,而且我经常直接看出其他人的设计里面的问题。我写的代码不仅自己容易看懂,而且别人也容易理解。我有时候受命修补前人的BUG,结果没法看懂他们的代码。在这种情况下,我的解决方案是推翻重写。经我重写之后的代码,不仅没有BUG,而且简洁很多。

很多人自己的设计有问题,太复杂不易用,到头来却把责任推在用户身上,使用类似“皇帝的新装”的技巧,让用户有口难言。之前一篇文章提到的严重交通事故,就是一个设计问题,却被很多人归结为“人为错误”。这种出人命的事情都这么难引起人们对设计的关注,就更不要说软件行业那些无关性命的恼人之处了。有些人写的代码过度复杂,BUG众多,却仿佛觉得自己可以评估其他人的智商,打心眼里觉得自己是专家,看不懂他代码的人都是笨蛋。

很多程序员有意把“用户”和自己区别开来,好像程序员应该高人一等,不能以用户的标准。所以他们觉得程序员就是应该会用各种难用的工具,难用的操作系统,程序语言,编辑器,…… 他们觉得只要你追求这些东西的“易用性”或者“直观性”,就说明你智商有问题。只要你说某个东西太复杂,另一个东西好用些,他们就会跟你说:“专家才用这个,你那个是菜鸟用的。” 这些人不明白,程序员其实也是用户,而且他们是自己的代码的用户,每一次调用自己写的函数,自己都是自己的用户。可是这种鄙视用户的风气之胜行,带来了整个行业不但设计过度复杂,而且以复杂为豪的局面。

经常有人自豪的声称自己的项目有多少万行代码,仿佛代码的行数是衡量一个软件质量的标准,行数越多质量越好,然而事实却恰恰相反。就像《小王子》作者说的:“一个设计师知道他达到了完美,并不是当他不能再加进任何东西,而是当没有任何东西可以被去掉。”

如果你跟我一样关心设计,却发现身边的人喜欢显示自己能搞懂复杂的东西,跟你说容易的东西都是菜鸟用的,那么你需要一个朋友。书籍是人类最好的朋友,因为它的作者可以跨越时间和空间的限制,给你最需要的支持和鼓励。这就是当我阅读这本1988年出版的《The Design of Everyday Things》(简称DOET)时的感觉。我觉得,终于有人懂我了!有趣的是,它的作者 Don Norman 曾经是 Apple Fellow,也是《The Unix-Haters Handbook》一书序言的作者。

DOET 不但包含并且支持了我的博文《黑客文化的精髓》以及《程序语言与……》里的基本观点,而且提出了比《什么是“对用户友好”》更精辟可行的解决方案。

我觉得这应该是每个程序员必读的书籍。为什么每个程序员必读呢?因为虽然这本书是设计类专业的必读书籍,而计算机及其编程语言和工具,其实才是作者指出的缺乏设计思想的“重灾区”。看了它,你会发现很多所谓的“人为错误”,其实是工具的设计不合理造成的。一个设计良好的工具,应该只需要很少量的文档甚至不需要文档。这本书将提供给你改进一切事物的原则和灵感。你会恢复你的人性。

值得一提的是,虽然 Don Norman 曾经是 Apple Fellow,但我觉得 Apple 产品设计的人性化程度与 Norman 大叔的思维高度还是有一定的差距的。因为我看了这书之后,立马发现了iPhone的一些设计问题。

如果你跟我一样不想用眼睛看书,可以到 Audible 买本有声书来听。

原文地址:https://www.cnblogs.com/alantu2018/p/8496260.html

时间: 2024-08-29 23:32:51

【转】设计的重要性的相关文章

论需求分析和数据库设计的重要性

直至昨天,我才意识到了软件开始之前,为什么要做好需求分析,需求完成之后,又为什么要先坐好数据库设计!亲身的实践让我明白了这些,下面就我的毕业设计来谈一谈数据库设计的重要性! 做之前想过我要做一个什么样的软件,应该有什么功能,想好之后,也在本子上记下了这些,防止后边忘记.然后我就以为做好了需求,因为当时想到的就这么多.接下来就是数据库的设计了,数据库涉及到很简陋,基本上没有什么表的嵌套查询,用一个表就新建一个表,用什么关键字,就写什么关键字,前期还好,想做的功能基本上都会有对应的表来去查询,可是随

关于数据库设计的重要性

关于数据库设计的重要性 web开发是面向数据集的开发,我们开发人员对现实世界的抽象的一步就是建立表(或者你可以理解成类),而且在关系型数据的设计中,我是非常看重三范式!!!非常!!!,因为table是一切的源头,如果你的表设计不合理:那么你上层的代码也跟着错: 这里,我会屡屡序序的完整这篇文章,讲讲个人对三范式的理解和它重要性:我们先提概念,再结合实际来一步一步的分析:(还有一个就是我们关于服务分层,服务解耦,还有三层架构,微服务,领域模型等等的一篇文章,先整一个todo)   原文地址:htt

亮化设计的重要性

城市的构筑物之所以进行亮化工程建设,除了功能性需求之外,还是要给人一种眼前一亮的感觉.夜幕降临,经过亮化的建筑物散发出耀眼的光芒,即使你只是经过,它也会吸引你多看一眼. 随着人们对光环境需求的日益增长,楼体亮化.景观照明已经非常普遍.那么,如何在众多的照明工程中脱颖而出,关键就在于亮化设计. 亮化设计对于亮化工程来说,就是亮化工程得以实施的先提,是亮化工程未完成的先期预测.亮化设计还是亮化成果的率先效果堪测,是能预知城市构筑物未来表现形式的一种手段. 优秀的亮化设计都是经过设计师精心雕琢的,设计

02-大鸭梨博客系统数据库设计及Dapper的使用

毫无疑问,数据库的设计在一个系统中起了至关重要的作用.我们都知道,系统设计分为两部分,或者说是两个阶段,即数据库设计和功能设计.构建一个完善的系统需要这两个阶段的充分考量.周密设计.合理联接以及密切配合.数据库设计是整个系统的根基,它关乎系统功能的实现.稳定性.扩展性等多个方面,可见数据库设计的重要性. 那么好的数据库设计应该具备什么样的基本条件呢,大致有这么几点: 1.充分体现系统的需求 不管是数据库设计还是功能设计,我们最终的目的都是要实现客户的业务需求,所以数据库设计的第一准则就是要符合业

设计分享——为什么要重视设计?

之前买书的时候,发现大家基本没考虑设计方面的书籍,感觉大家对设计这件事不够重视.所以技术分享的第一段,先讲几句做好设计.学好设计的重要性. 一 为什么重视设计(面向对象设计) 1. 业务驱动与技术驱动的区别是什么? 技术驱动是"怎么做"一直在变,并且由"怎么做"带动"做什么"发生变化. 例如,以往我们出门,不认识路了,我们会开口问路人甲.现在呢?掏出手机查地图.以前我们买东西结账,会掏钱包数零钱.现在呢?掏手机刷二维码.这是技术驱动的"

SQL Server 数据库设计

一.数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置.如果不经过数据库的设计,我们构建的数据库不合理.不恰当,那么数据库的维护.运行效率会有很大的问题.这将直接影响到项目的运行性和可靠性. 二.什么是数据库设计 数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间的关系过程. 三.数据库设计的重要性 ? 不经过设计的数据库或是设计糟糕的数据库很可能导致 1. 数据库运行效率地

网页设计中7个令人抓狂的错误

所有人都知道网页设计的重要性,糟糕的网页设计会给用户带来糟糕的体验,从而影响网页的流量,或是产品的销售.那么在设计网页的过程中,应该避免出现哪些错误呢? 1. 要求用户必须注册才能浏览网页内容 这种做法足以让用户立刻感到气愤不已.也许这样做能够让你获得一些注册用户,但是你失去的远比所得到的要多. 2. 忘记针对不同设备优化网页 要知道,现在很多用户都不再使用PC浏览网页了.因此在设计网页的时候,不要忘了针对智能手机.平板电脑等移动设备进行网页优化.你必须确保用户在任何设备上浏览你的网页时,都可以

Re:从零开始的领域驱动设计

领域驱动的火爆程度不用我赘述,但是即便其如此得耳熟能详,但大多数人对其的认识,还只是停留在知道它的缩写是DDD,知道它是一种软件思想,或者知道它和微服务有千丝万缕的关系.Eric Evans对DDD的诠释是那么地惜字如金,而我所认识的领域驱动设计的专家又都是行业中的资深前辈,他们擅长于对软件设计进行高屋建瓴的论述,如果没有丰富的互联网从业经验,是不能从他们的分享中获取太多的营养的,可以用曲高和寡来形容.1000个互联网从业者,100个懂微服务,10个人懂领域驱动设计. 可能有很多和我一样的读者,

原型设计(草稿)

1.什么是原型和设计? 原型:用线条.图形描绘出的产品框架,也称线框图. 设计:综合考虑产品目标.功能需求场景.用户体验等因素,对产品的各版块.界面和元素进行的合理性排序过程. 2.原型设计的重要性是怎样? 产品阶段: Idea-->需求采集-->功能结构-->原型设计-->产品需求文档(PRD文档)-->Roadmap Roadmap包含哪些内容? Roadmap主要有时间周期和项目事件(必备的工作项)和路标三部分组成. 1)时间周期.即产品规划的时间区间.通常,时间周期的