软件架构师的职责是用最低的花费、最高的收益交付用户需求产品。
项目的起点往往从发掘用户需求开始,通过用户的沟通发现用户潜在需求和产品使用过程中的痛点,交谈过程中要特别注意用户表达渴望或欲望的语句,如我想要…, 如果能够…等,所有这些都可能是产品后期隐藏的需求点,通过在整个产品生命周期中与用户的不断沟通,发掘产品需求,改善用户体验。
将需求抽象化、具体化、概念化是架构师随后要作的事情,用户的需求只是离散的点,仅仅表达了我希望有哪些功能,架构师需要将所有的需求进行分析、归类、抽象、概念化,将需求转换为领域模型语言,方便设计阶段抽象和模块化。
在设计阶段架构师需要根据公司的发展战略确定架构技术栈,通过向周围架构师、有经验的开发人员和领域模型专家沟通交流和自己所掌握的技术信息,确定架构实施细节,通过架构图、流程图、序列图展示设计实现,在这个过程中架构师还需要提前预估项目依赖和风险,考虑好应对策略。
估算、确定优先级、开发、测试、部署是架构师同开发团队、测试团队共同完成的工作,架构师在设计阶段通过模块化将需求拆分为足够小的需求,尽量消除意外情况,使得需求开发时间尽量可度量,在这个过程中架构师承担了架构实现的讲解、疑难问题的解决、需求的明确、技术沉淀、技术团队梯队建设、风险评估、进度推进等等一系列工作。
总的来看,架构师是一项社会化的工作,本质工作即为资源的整合,整合用户、领域专家、其它架构师、开发人员、测试人员以及当前自己掌握的成熟技术栈、工具、开发流程等,保证项目低成本、高效益的交付。
架构就是用最合适的技术解决业务问题,究竟哪种技术是最合适的会根据架构师的技术视野和对其理解的深度而不同,这也决定了架构永远没有最好,意味优秀架构师需要不断持续学习、持续积累跟踪新的技术趋势,通过验证开发获得对技术适用场景的理解认知。