软件设计专家的八种习惯 | 麻省理工学院出版社


最好的设计师在工作时会采用特定的习惯、可学习的实践以及遵守的原则。
是什么成就软件设计专家?传统回答是经验和天生的能力,这无法让人满意,尽管它包含了真理的要素,但它所提供的东西很少,我们无法从中学习和概括。显然,专家们不仅会随机处理他们的工作。恰恰相反,他们在设计工作中有特定的习惯,学到的实践和所遵循的原则。
有些人可能熟悉它们,而另一些人则不熟悉。有些很容易付诸实践,有些则没有。有些会立即产生影响,有些则不会。但是,经常出现的情况是,专业的软件设计人员会敏锐地意识到所有这些做法,并在情况需要时加以借鉴。
多年研究专业软件设计师及其工作方式的根基,我们的《软件设计解码》一书阐明了其中的66个习惯,实践和原则,下面重点介绍其中的一些。他们被该领域的工作人员一次又一次地确认,并且每个都可以追溯到记载专家行为的学术文献。
如今,软件不再受限于技术,而是受限于想象力。然而,将想象变为现实的软件可能会很复杂,而这种转变必须发生的环境可能会更加复杂。这对软件设计师提出了非凡的要求,只有我们共同“加紧努力”以实现持续的卓越设计才能满足这些要求。

1)专家涉及用户:
专家敏锐地意识到用户。他们故意让用户参与设计过程,进行研究,与他们交谈,让他们参与测试中间设计,甚至要求他们在设计团队中发挥积极作用。
然而,专家并不能完全接受用户所说的一切。他们意识到潜在的局限性,因为用户的思维通常会被当前的经验所充斥。专家们不仅关注用户的需求,还关注用户的实际需求。

2)专家设计优雅的抽象:
当所有开发人员都创建抽象时,专家将对其进行设计。好的抽象可以说明什么是重要的,无论是做什么的以及如何实现的。通过一个抽象,它传达了解决的问题及其解决方案的机制。
专家对任何抽象都不满意,他们故意寻求优雅的抽象,通过它们可以有效地引入,理解和引用复杂的结构。

3)专家专注于本质:
每个设计问题都有一个本质,一组核心注意事项,必须成功理解这些问题,并在设计解决方案中“钉上钉子”,才能成功解决问题。这种本质可能是破坏性的:核心的变化会极大地改变需要做出的外围决策。专家首先将精力集中在本质上,然后将花费的精力推迟到外围设计上。

4)专家不断模拟:
专家们模拟所设想的软件的各个方面,以及设计的不同部分如何支持各种场景。与他人合作时,专家会逐步讲解设计的操作,从而定期进行设计。独自一人时,他们会在心理上进行模拟,并随着时间的推移反复进行设计。

5)专家环顾四周:
就像建筑师走动城市考察并从现有建筑物中汲取灵感一样,软件专家也会检查其他软件的设计,以“看看他们是如何做到的。”他们经常这样做是为了应对自己面临的特定挑战,但是他们经常还花时间环顾四周,以增加他们将来可能使用的设计解决方案的种类。

6)专家重塑了问题空间:
专家通常会从陈述的问题退后一步,更广泛地考虑问题空间,寻找理解“问题是什么”的替代方法。他们可能会通过重新认识问题空间或在同一空间中解决其他问题来改变方向。他们有意选择与原始设计问题有所不同的目标,因为这会导致洞悉真正问题所在或如何克服关键障碍。

7)专家将错误视为机遇:
设计经常涉及错误:“失误”,误解,障碍,错误的转弯,紧急情况。专家们不惧怕错误,而是将错误视为机遇。他们接受它作为设计的固有部分,并花一些时间来探索失败和围绕它的背景。理解发生的事情通常可以揭示有关问题或解决方案的见解,例如假设,误解,错位和紧急情况。

8)专家考虑他们没有设计的东西:
虽然自然而然地专注于设计必须完成的工作,但是专家们也花时间思考设计不打算做什么。在阐明和考虑边界时,他们会发现设计过度和设计不足的地方。

玛丽安·彼得(Marian Petre)是开放大学的计算机教授。Andrévan der Hoek是加州大学欧文分校的信息学教授。他们是“ 解码的软件设计 ”的作者。