更好设计的原则

2020-09-06 22:18:39

设计是一个宽泛的话题。这篇帖子不会用简单的形式和纯粹的外观来形容一种风格的形容词。不是的。设计比一辆时髦的汽车或一间和谐的起居室更宽广。

设计是一项旨在发明、改进和解决问题的创造性活动。生活中充满了他们,在不同的领域,这推动着人们最终成为某种东西的设计者。无论你是在构思食谱、公寓布局、软件还是火箭,你都在设计。通过学习基础知识,你可以武装自己来应对各种情况。这里列出了我为了更好地设计而学到的最实用的原则。尽管这些原则是显而易见和有名的,但我的经验告诉我,其中一些原则经常被遗忘。

趣事:在英语中,设计的意思是根据计划绘画和构思。同样在法语中,单词dessin(一幅画)的词源来自于单词dessein(有意图)。

相信第一次就能做对,往好了说是天真,往坏了说是自命不凡。你会失败的,你必须接受它。不要推迟,而是要迅速发布,及早获得反馈,反复迭代,使之更好。你会发现很多参考资料,特别是关于精益创业、DevOps文化或站点可靠性工程的,它们鼓励快速重新设计能力,而不是一开始就是完美的设计。

要编写干净的代码,必须先编写脏代码,然后再清除它。[…]。学习编写干净的代码是一项艰苦的工作。它需要的不仅仅是原则和模式的知识。你一定为此而汗流浃背。你必须自己练习,看着自己失败。Robert C.Martin-Clean Code:敏捷软件工艺手册。

从根本上说,你面临的问题不太可能是新的。在做出任何努力之前,请寻找现有的解决方案或经过验证的实践。谦虚一点,接受你在一个问题上无法与多年的专业知识竞争的事实。如果是这样的话,开发新模式的动力肯定来自于达到前一种模式的极限。例如,在软件工程中,设计模式是程序员在设计应用程序或系统时可以用来解决常见问题的形式化最佳实践。

不要把自己限制在原始问题的领域,有时在不同的领域很久以前就已经发现并解决了类似的问题。学习排队理论将帮助您编写操作系统调度器,以及在超市排队时感到沮丧。解决方案来自你不一定期望的经验和理论领域。

最初由丰田开发的“五个为什么”技术主要用于探索系统缺陷的根本原因。它涉及到从为什么开始询问相关问题,以便找到导致故障的原因。采用这项技术,找出在我们的设计中真正重要的是什么。例如,“我们需要一个将文档导出为PDF的程序”:

为什么(他们不能像其他人一样访问文档)?-因为他们还没有集成到我们的平台中。

决定:与其开发一个复杂的导出PDF的程序,不如为客户编写一个简单的入门指南。

当给定的需求包括设计时,通常会出现这种情况。在回答“我们是怎么做的”这个问题之前?直接来说,第一步也是最重要的一步是记住“我们为什么要这样做?”一旦您了解了需求的根本原因和约束,它就为如何实现这一目标扫清了道路,并且除了简化设计之外,还可以防止您走很长的弯路。

解决问题,而不是制造问题。您应该怀疑提供的解决方案会使整个系统比以前更加复杂。请记住:您必须维护您构建的所有内容,因此您最好构建得尽可能少且简单。

简单的设计易学、易教、易用,因此很容易吸引顾客。它使设计变得直观和明显,减少了学习曲线,便于采用。正如丹尼斯·狄德罗(Denis Diderot)在“自然的调解”(Pensées Sur l‘Interprétation de la Nature)中所说:

这些(斯蒂尔和牛顿的)书只是在等待人们的倾听,它们的价值得到了评估;它们的作者不需要花超过一个月的时间就能把它们弄清楚;那个月将使一千个人免去三年的劳动和疲惫。

但是什么是简单的设计呢?在谷歌网站可靠性工程(Site Reliability Engineering)一书的简约一章中,他们提到了法国诗人安托万·德·圣埃克苏佩里(Antoine De Saint Exupery)关于完美的一句名言,这句话非常适合简约:

最终达到完美不是当不再有更多的东西要添加,而是当不再有什么需要拿走的时候--A·德·圣埃克苏佩里,Terre des Hommes

莫卡咖啡机可能不能生产出完美的咖啡,但与带有散热器、管道、研磨机等的大型咖啡机相比,它需要的维护非常少,这使得折衷的“复杂性/咖啡味道”很棒。

记住帕累托原则:一般来说,80%的事情可以在总分配时间的20%内完成。相反,剩下的最困难的20%需要80%的时间。完美需要无限的时间和精力。这是不可能的,因此不应该是您设计的一部分。

谨防完美陷阱,只设计必要的体系结构,而不是最终可能的最好的体系结构。--拉尔夫·S·恩格尔肖尔。

简单性和渐进式改进原则催生了另一个原则:推迟复杂性。复杂性在于早期优化,就像Donald E.Knuth在他的文章“过早优化是万恶之源”的“作为艺术的计算机编程”中指出的那样。专注于设计有用的东西,而不是微调无效的东西。

复杂性也在于早期的概括。专注于设计在单个用例中工作的东西,而不是在许多用例中不能工作的东西。在设计咖啡机时,首先要设计出能做简单黑咖啡的东西。如果你提前计划包括拿铁、卡布奇诺或爱尔兰咖啡的所有额外选择,你最终将不会做简单的回杯咖啡。正如拉尔夫·S·恩格尔肖尔(Ralf S.Engelschall)优雅地总结的那样:“先用后再用”。

你认为有什么原则缺失了吗?请将您的意见发送给我!这份名单肯定会得到扩充和完善,如果你希望得到通知,请订阅时事通讯。在此期间,您如何确保您不会忘记执行您刚刚学到的原则?