作者:兰迪·斯塔福特(RandyStafford)
架构师应该坚持培训“情境意识”(contextual sense)——因为我们遇到地问题千差万别,不存在放之四海皆准的解决方案。
“情境意识”这个贴切的说法,最早由埃贝哈特·雷克廷(EberhardtRechtin)在《Systems Architecting:Creating & Building Complex Systems》(PrenticeHall出版本)一书中提出,并予以深刻阐述:
[运用“试探法”设计复杂系统架构的要点是]调查有经验的架构师处理复杂问题的方式。有经验的架构师和设计师的答案如出一辙:只须使用常识……[一个]比“常识”更贴切的说法是“情境意识”——在给定情况下对合理性的把握。把架构师通过学习和实践,不断积累的案例和经验,建立足够的情境意识。他们通常需要十年的磨练,才能解决系统层次的问题。
在我看来,软件行业的一个大问题,是那些负责解决问题的人积累的情境意识不够。毕竟软件行业起步不过六十多年,并仍在飞速发展。当这个问题消失时,也许就标志着软件行业己经成熟了。
我做咨询工作时频繁碰到这类问题。典型的情况包括:该用领域驱动设计时没有使用;软件方案设计过度,偏离了实用性和眼前的基本需求;或者在解决性能问题时,提出的建议不合理,甚至毫不相关。
掌握软件开发模式的重点在于拿捏应用的时机,这也是分析问题时避免胡乱猜测和矫枉过正的关键。显然,无论是设计系统架构还是分析问题,都不存在着万能钥匙,架构师必须培养和训练情境意识,才能更好的设计架构和解决问题。