当我介绍自己是软件架构师时,对方通常会有两种反应。要么觉得这非常酷,想了解更多;要么就是露出不屑的神情,意思是说“我想跟实际开发软件的人聊,而不是跟只会画框框线线的指挥家聊”。软件架构的角色在IT 行业中名声很差,出现这种想法自然不难理解。
“软件架构”给人的印象通常是架构师闭门造车,提前做好大型预先设计,然后好像接力赛跑时传递交接棒一样,把庞大的UML(Unified Modeling Language,统一建模语言)模型或200页Word 文档丢给毫不知情的开发团队。当然,这是假设架构师实际参与了软件设计。似乎很多人都认为,只要做一个PPT,而且幻灯片中有一页出现了“企业服务总线”框线图,就算是做完 了软件设计。哦,千万别忘了,这个PPT 里毫无疑问也少不了对ROI(Return on Investment,投资回报)和TCO(Total Cost of Ownership,总体拥有成本)的陈述。
很多组织对软件开发普遍都有一个有意思的看法。比如,他们看到了离岸外包可以节省成本,因而把软件开发流程中的编码工作也看作一种可以买卖的商品。其结果往往是本地开发者被推向所谓“高价值”的软件架构职位,而编码则交由其他人完成。多数情况下这只会让软件架构和开发更加脱节,还常常让人像赶鸭子上架一样不得不去承担架构工作。这些组织也常倾向于把架构师看作一种职位级别而非工作角色。