如何评价技术是否优雅

什么是优雅的技术

Elegant is a description used by designers and engineers to describe a design that solves more than one problem.

Industrial environmentalism asks that elegant engineering add relevant criteria to the accepted definitions. To be elegant, a design should include a provision for its ultimate disposal. A new design must deal with the waste generated by the manufacturing process and the product itself. The person who designs a product is most likely to have the relevant information as to how it can be safely disposed of.

Elegant technology is that technology where the disposal, and any other form of downstream problem, is dealt with from the beginning. When industrial designers acknowledge that raw materials may only be borrowed from the planet and must be returned at some future date, then and only then will technology be truly elegant. The most simple and direct criterion for evaluating elegant technology is to ask, “what will happen when everyone uses this technology?”

在跟自己老板进行方案 Review 和讨论的过程中,渐渐的对技术优雅这件事情有点自己的理解。所谓技术优雅的评价标准就是看该技术或者方案设计是否具备通用性,是否符合大众认同的标准,是否完备自洽、简单易用、良好可扩展、具备美感。技术的优雅自底向上分为下面几个层次:

  1. 代码优雅
  2. 架构优雅
  3. 设计优雅

代码优雅

代码优雅讨论和研究的比较多,Google Style Guide 珠玉在前,所以关于代码优雅这里我就不赘述了。关于代码优雅我理解的主要原则就是:

  • 易懂、简单、高效
  • 遵守标准、规范、或业界最佳实践
  • 良好的复杂度管理即易于修改、易于运维、易于重构

有一本比较好的书可以推荐:《Code Complete》中文是代码大全,不过我自己还没有读完(主要是太厚了🤪)。

架构优雅

优雅的架构其实是帮助项目/方案/产品具备更好的通用性,优雅的架构不光可以解决当前的问题,还可以解决未来的问题。关于架构前人总结了很多好的原则,例如 S.O.L.I.D 原则、KISS 原则等等,所以我自己理解的架构优雅可以表达为:架构优雅 = 掌握通用架构原则 + 架构有美感

关于掌握架构原则

  • 清楚地理解架构设计相关的概念、本质、目的,避免在实践过程中把握不住重点、分不清主次导致架构设计变形或者“四不像”
  • 掌握通用的架构设计原则,确保在判断和选择的时候有一套方法论可以参考,避免架构设计举棋不定,或者拍脑袋式设计
  • 掌握标准的架构设计流程,即使是刚开始做架构设计的新手,也能够按照步骤一步一步设计出合适的架构,避免某些步骤缺失导致错误的架构设计
  • 深入理解已有的架构模式,做到能够根据架构特点快速挑选合适的模式完成架构设计,或者在已有的模式上进行创新,或者将已有的模式组合出新的架构

关于架构有美感

  • 具备一定的主观性,但是与代码优雅是相辅相承的
  • 架构设计兼顾主要需求和长尾需求

设计优雅

设计是把一种设想通过合理的规划、周密的计划、通过各种感觉形式传达出来的过程,设计就是把创造活动进行预先的计划,可以把任何造物活动的计划技术和计划过程理解为设计。一个设计者最需要的就是好的品味,当我们说一个人品味好的时候,常是指这个人的“审美”好,或者这个人善于发现”美”。但是一个人有好的品味,往往不是因为他善于发现“美”,而是因为他善于识别“丑”。当一个人识别出丑陋的事物,并且对这种丑无法忍受的时候,他自然就会选择那些美的东西。既然选“美”了,那么就离优雅不远了:

  • 做设计不是发现美,而是感知丑
  • 设计与流行无关,与做出最好的产品有关
  • 装饰是掩盖空虚内容的多余物,设计要直面本质部分
  • 做设计的过程很难,但结果看似简单
  • 设计需要大胆,敢于判断
Dieter Rams 十大好设计原则——1
Dieter Rams 十大好设计原则——2
Dieter Rams 十大好设计原则——3

设计方法

设计方法是一个通用理念,可能会或可能不包括为特定方法的导向。有些是指导设计的总体目标。其他的方法是引导倾向的设计师。可使用相结合的办法,如果他们不冲突。

一些常用的方法包括: KISS原则(保持简单愚蠢的),努力消除不必要的并发症。 有一个以上的方式来做到这一点,一种哲学,以允许多个方法做同样的事情。 使用为中心的设计,这主要与使用的神器,而不是着眼于最终用户的目标和任务。

设计工具

草图、电脑、程序设计软件等工具生产允许许多设计师更详细迅速地探讨多个想法和比较可以通过传统的手法渲染或完稿理论上,移动设计师通过创造性的过程发展地更加迅速,例如 Figma,Sketch 等。

References

  1. 如何编写优雅代码——技术与梦想
  2. 如何写出优雅的代码?
  3. 如何更加优雅地开发中间件?
  4. elegant-technology
  5. 小工匠聊架构 - 如何优雅的做系统架构设计01
  6. 创梦时刻
  7. 《Rams》 -工业设计传奇设计师 迪特.拉姆斯2018纪录片(附中文字幕)