Freud's Blog

Stay hungry, stay foolish. 少年辛苦终身事,莫向光阴惰寸功。

Architectural Thinking - 07 - 一些心得.md

Posted on By Freud Kang

由于课程是公司内部资料,就不放在博客上了。只是把自己参加Architecture Thinking课程,和在Architect这个职位上工作多年的经验总结罗列一下。

一些心得

  1. Architecture Thinking(AT)包括如下几部分Requirements, Architecture Decisions and principle, Architecture Overview, Functional, Operational, Validation, Viability.

  2. 虽然AT课程中有很多的架构活动,架构文档案例等,但是AT不是一个完整的教你怎么设计架构的课,而是一门教你怎么站在架构师的角度去考虑问题的一门课。所以这是一门战略多过战术的课。

  3. 架构师和高级开发工程师之间的本质区别是,架构师会从更宏观的视野看问题。会结合更多的因素来设计更适合的架构和解决方案。

  4. 架构师是业务与技术之间,客户与交付团队之间的桥梁。

  5. 从管理的角度看架构设计中战术部分的内容是分工的过程

  6. 避免反模式Golden Hammer, 不要想着一个方案解决所有问题。

  7. 要明白修复一个问题,通常会引入一个甚至更多新问题

  8. 不要期待能够快速出一个方案,合理的方案是经过详尽的调研和综合的权衡下做出的选择(architecture decisions)。

  9. 虽然敏捷(Agile)中建议尽量少写文档,多做沟通。但是作为架构师,每个架构活动的关键节点文档还是要有的。做到所有的decision是可追溯的。

  10. AT的整个课程是按照纯粹的技术导向来设计的。但是没有考虑到政治,在实际情况中办公室政治也是架构师必须要考虑到的既是需求(NFRs),也是Constraints.

  11. 作为架构师,在设计和提供方案之前,要获取到客户的信任。现实中经常存在一种情况是,作为客户或者领导,他们通常也是对技术有一定了解的人,当架构师的设计是一个相对来说保守的方案的时候,他们会要求你使用最新的技术,最复杂的设计来实现项目,就像是强制要求你用牛刀去杀一只鸡。取得客户的信任,并让对方接受你的方案,对架构师来说是一件很重要的事情。