返回介绍

第 28 章 协同设计是一把双刃剑

发布于 2024-08-18 00:06:35 字数 852 浏览 0 评论 0 收藏 0

让我们想象一下,你被任命负责建设一个三层的Web应用程序,有一个由具备Web技术、服务端编程和数据库专长的人组成的小团队。从资源的角度来看,这堪称完美,因为你拥有跨越整个栈的经验。你不应该有任何问题,对吧?

整个团队的有效性取决于很多因素,其中之一是克制自负的情绪,专注于交付给定语境下的最佳解决方案的意愿。有时候,个别人由于缺乏团队合作的经验,或在工作中产生了自负情绪,都会拖团队的后腿。如果有需求是为用户查看和处理我们的三层Web应用程序上的数据提供一种方式,每一个专家可能都会给你不同的方法。

Web开发者:只要给我JSON格式的数据,我们就能用它在Web层做任何想做的事。甚至能加入一些jQuery来动态处理浏览器中的数据;

服务端开发者:我们应该重用和扩展一些中间服务层已有的业务逻辑。这增加了重用,比把全部数据都发到Web层更安全,还能在周围编写自动化单元测试;

数据库开发者:你们都是白痴。不管你们要什么数据,我都能很快地写一个存储过程出来。

经验影响软件设计

我们拥有的知识、经验和偏好往往会影响我们设计软件的方式,尤其是如果一个人单枪匹马完成。缺少了交流,我们往往会基于已有的对软件应该如何设计的心智模型,去假设组件应该放在哪里、特性会如何工作。尽早扔掉这些假设有助于避免一些无可挽回的糟糕意外。我倾向于使用白板来设计软件的一个主要原因是它鼓励更加合作的方式,而不是大家都对着自己电脑上最喜欢的建模工具,各自为政。合作,也就是相互沟通和挑战。

就像结对编程,合作是处理软件设计流程的一个有效途径,特别是如果用轻量级的方法来做。合作提高了质量,也让我们可以讨论和挑战一些常见的基于自己已有知识、经验和喜好做出的假设。它也为代码集体所有制铺平了道路,有助于打破软件开发团队中常见的孤岛。团队中的每个人都会有不同的想法,但要达成共识。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文