知识卡片

为客户而设计:客户不等于用户

普通读书笔记卡

内容

很多时候客户(购买/委托方)和最终用户根本不是同一群人,架构师若把两者混为一谈,很容易只顾着满足用户体验、却忽略了真正掏钱做决定的客户的诉求。书中举例:对超市销售系统而言,客户是连锁超市的老板,用户则是收银员和上货员——收银员关心的是操作是否顺手,超市老板关心的却是这套系统能不能在预算内、能不能按期上线、能不能和已有系统对接。为客户而设计,意味着架构师要充分考虑客户的业务目标、上线时间要求、预算限制、集成需要,以及客户所在领域特有的业务规则和限制,这些信息往往架构师需要直接、或通过系统分析员间接获取并深刻理解其对架构的影响,才能设计出真正”合适”的架构。这里的关键判断标准是”合适的才是最好的”,而不是”技术上最先进的才是最好的”:如果客户是预算有限的小型超市,就不该采用依赖大量昂贵中间件的架构方案,哪怕这类方案在技术圈子里更”先进”——脱离客户实际约束去追求技术完美,本身就是一种架构设计上的失职。这条原则提醒架构师:识别”谁在用系统”和”谁在为系统买单、对系统结果负责”是两件事,前者决定功能和交互设计,后者决定架构方案必须尊重的商业边界。

参考来源

- 位置:《软件架构设计:程序员向架构师转型必备》第3章《理解架构设计视图》"3.1.2 为客户而设计"节(源文件:_epub-src/OEBPS/text00006.html) - 结论依据:原文用超市销售系统举例说明"客户是某家连锁超市(的老板),而用户则是超市收银员和上货员",并给出"如果客户是一家小型超市,软件和硬件采购的预算都很有限,那么你就不宜采用依赖太多昂贵中间件的软件架构设计方案"的具体判断标准,直接支撑本卡片结论。 - 原始内容:很多时候,客户(Customer)≠最终用户(User)。例如,对超市销售系统而言,客户是某家连锁超市(的老板),而用户则是超市收银员和上货员……合适的才是最好的。