我们拥有的知识、经验和偏好往往会影响我们设计软件的方式,尤其是如果一个人单枪匹马完成。缺少了交流,我们往往会基于已有的对软件应该如何设计的心智模型,去假设组件应该放在哪里、特性会如何工作。尽早扔掉这些假设有助于避免一些无可挽回的糟糕意外。我倾向于使用白板来设计软件的一个主要原因是它鼓励更加合作的方式,而不是大家都对着自己电脑上最喜欢的建模工具,各自为政。合作,也就是相互沟通和挑战。
就像结对编程,合作是处理软件设计流程的一个有效途径,特别是如果用轻量级的方法来做。合作提高了质量,也让我们可以讨论和挑战一些常见的基于自己已有知识、经验和喜好做出的假设。它也为代码集体所有制铺平了道路,有助于打破软件开发团队中常见的孤岛。团队中的每个人都会有不同的想法,但要达成共识。