对话:关于架构、设计与需求

wwe: ...
wwe: 我这几年的大部分工作也是偏重架构设计
Aim: 有什么感想呢?
wwe: 个人觉得架构设计就像生活中的一部分
Aim: EN..这个怎么讲?
wwe: 架构设计就像规划你的生活一样,都想把它变好、变美
Aim: 但是,你也应该知道。会有很多人、很多因素让生活变得不美好。
wwe: 当然
wwe: 但有一个美好的愿景是很重要的
Aim: 规划就如同畅想,你甚至可以认为:床与床头柜之前应该是U形连结的最为美观,但最后发现那样的一套家俱大概要40平米的卧室,而你现在的卧室只有25平米。
Aim: 客户的需要向来没个定准。而且你又不能指望他在需求说明书签完字之后,就不再变更。我们不能在他变更的时候讲法律、讲合约。那没意义。
Aim: 怎么办呢?设计的弹性需要多大?你如何把握客户的变更,而是不仅是接受他当下的需求?

wwe: 当然首先要满足客户的需求,贴近客户
wwe: 合适的才是美好的
wwe: 我觉得需求的变化是正常的,就像装修房子,我觉得可以尝试拥抱变化,一种方式就是用迭代、增量,快速用户反馈等方法来把握变化
wwe: 还有就是需求一直没有变化过,可能就因为我们自己没有很好的理解需求,这就要求我们多同领域专家多沟通交流了

Aim: 你能让这个拥抱变得快乐些吗?我的意思是说,你认为哪些是不变的,以一个实例来说,你认为一套考试系统中有哪些是不变的?
Aim: 你围绕什么在做、在实施。又为什么能保证在三届学生之后、五年之后、五任教师之后、两套教材之后,这套考试系统是不需要做框架级的变动的呢?
wwe: 通过分层来理清业务模块,比如可以有基础构件层,考试通用构件层,通用构件层,再加上业务流程层
wwe: 考试系统的最终必须可以个性化,通过个人定制流程来符合各种各样人的需求
wwe: 让使用者来制定流程,比如老师等;学生自己也可以制定流程(比如自学等)
Aim:
是吗?我为什么要让考生定制流程?

Aim: 哈哈。
Aim: 第一,你现在已经掉在了一个坑里。
Aim: 第二,你已经被需求淹没了。

Aim: 首先,你现在已经掉在了一个坑里。因为我最开始说是“一套考试系统中有哪些是不变的”。而你并没有明确地问我是什么样的“一套考试系统”。
Aim: 你说“是考试过程管理,考试数据管理,考生成绩管理,还是考场管理等等”
Aim: 所以你接下来的设计“通过分层来理清业务模块,比如可以有基础构件层,考试通用构件层,通用构件层,再加上业务流程层……”这看起来合理,但没有任何的针对性。因为原本需求就不明确,所以你的结构就只能是通用结构,而不是专门的设计。
wwe: 哈哈,是的
wwe: 确实到坑理了,我想起一本书《你的灯还亮着吗》
wwe: 问题是什么,非常重要,:)

Aim: 第二个问题,“你已经被需求淹没了”。当你发现我提了一堆问题“……你围绕什么在做、在实施。又为什么能保证在三届学生之后、五年之后、五任教师之后、两套教材之后,这套考试系统是不需要做框架级的变动的呢?”
Aim: 之后,你给了很复杂的答案:让使用者来制定流程,比如老师等;学生自己也可以制定流程(比如自学等)
Aim: 但事实上,因为你需求并不明确,所以产品的使用角色也就不清晰。所以,你并不知道,可能考生根本不需要参与这个系统。所以我提出的需求中有一部分是“错的”,需要被过滤掉。因此,你无可避免地被淹没了。
wwe: 是的
Aim: 我提出问题时并没想——也就是说,这不是我专门挖的坑。但我看到你的第二个答案时,我便意识到最先的需求描述出了问题。
Aim: 你应该更敏锐一些。因为我出问题时很随意,但你回答则应该更小心。8-|

Aim: 说起来,《你的等还亮吗》这本书我也非常喜欢。在《大道至简》的纸质版中,我还引用过几处呢。
Aim: 我在盛大学到的第一课,就是争论起源于问题的不一致,而不是问题。也就是说,对于两个同样聪明的人来说,如果他们面临的问题一致,那么就不应该有争论。
wwe: 确实,很有可能两个人在讨论“同一个问题”,而实际上“问题”是不一样的
wwe: 另外我觉得波莉亚写的《怎样解题》这本书也非常不错
Aim: 这个我倒没看,哈哈,谢谢推荐,回头找来看看呵。
 

注:wwe是某公司的架构师与经理。