找回密码
 注册
搜索
查看: 557|回复: 0

如何成为优秀的架构师

[复制链接]
发表于 2008-2-28 19:17:03 | 显示全部楼层 |阅读模式
很多人,包括很多IT行业中人,不清楚IT行业所谓的技术也有discipline(专业)的差别,或者不清楚其清晰的定义。
这样的模糊无论对个人成长还是业务发展都是不利的。原因很简单:对员工个人来说,认识上的模糊不利于定义职业目标和发展计划; 对管理者来说,不利于为员工的发展提供支持,工作安排会让员工感到frustrated, 最终被员工定义为unreasonable boss, 放在中国古代帝王那里,就是“昏君”了,最终的结果是分道扬镳,使公司在Talent Capital上大受损失。
这些人认为程序员,技术咨询师,架构师这些词仅仅是一种称谓,是可以按照工作需要来灵活“安排”来。对一个技术很强的人,今天是被安排去做高级程序员的工作,深挖设计模式,带头编写最难部分的代码;明天可以是技术咨询师,在某个具体领域内具有很深的造诣,这个领域的问题到了他这里,都有解决方法;后天就可以去做架构师,就能分析企业内部外部环境,identify stakeholders, 定义不同层次上的信息系统架构。这种安排听起来非常好听,表面上又有很多人所推崇的"Flexibility"加分, 个人可以值得炫耀,看,我什么都能做,我是全才;对老板来说,也乐于把一个人当三个使。
理论上说,我认为这样的工作安排是可能的。在演艺圈也有类似的“演而优则导”的说法,但在做导演之前,还是要有一个对导演专业知识的长期累计和系统的训练的过程。 一个有很强技术背景,充足的客户经验,不断学习,扩充自己的人是可以做到的。也许贝律明先生拿起铲子,可以垒几块砖,而且垒得很好,问题是他的专业不是泥瓦工,有三个方面需要考虑:
1。贝律明先生不原意去拿铲子做建筑工人的活,即便他有能力做。
2。经理人应该发挥员工的才华在其擅长的专业上,以产生最大效益;贝先生一天多少钱?
3。培养一个贝律明不能按照培养建筑工人的方式和内容去培训,专业不同,技能要求不同。

我们常说的程序员,技术咨询师,架构师三个角色,并不是是彼此不同的行当。 架构有自己的方法,理论和工具,并不是做程序员做得熟了就成了架构师,那是高级程序员; 也不是对某项技术(或产品,或方案)特别熟悉就自然成了架构师. 很多时候称为Technical Consultant更合适些。 在Open Group的ITAC认证中,很多公司并不把Technical Architect放在去拿ITAC认证的candidates行列中。
Neither a senior programmer nor a technical consultant can be considered as a SA by default, unless they develop their architecture skills.
这三个角色没有高低之分,他们在纵向discipline上区别,都有清晰的从初级向高级的发展路线。从一个discipline跳到另一个,是需要具备那个discipline所需要的知识和技能的。

索性多说一些,Architect与其他Technologist相比,有哪些区别(很多内容摘自HP Architect Profession 以及其它公共资源)
先看看什么是架构(Architecture):
对于Architecture的定义很多,也很有历史渊源,它从建筑业借来用在信息技术产业中,并保持了它在建筑业中的很多定义和特点,这里就不多说了,感兴趣的可参考Wikipedia中的Architecutre条目 , 重点关注以下Vitruvius在De architectura中对Architecture的定义。
IT领域的Architecture定义如下:
Architecture is a formal description of a system, defining its purpose, functions,
externally visible properties, and interfaces.
It also includes the description of the system’s internal components and their relationships,
along with the principles governing its
design, operation, and evolution.
IT架构有很多中,在企业应用领域,自底向上,有HW Infra Architecture, SW Infra Architecture, APP Architecture, Data Architecture, Information Architecture, Process Architecture, Business Architecture.  Solution Architect则是贯穿各个层次的一个划分,组合不同的层次,共同为客户提供一个解决方案。

再看看Architect做什么工作:
A Solution Architect (SA) guides the definition, development, deployment, and evolution of complex information systems:
Matching appropriate technology with customer needs
Maintaining the system’s conceptual integrity over time
Verifying that the system as built meets its requirements
Evolving the system to meet changing business needs and take advantage of appropriate new technologies
下面是将Architecture与Music做的比喻, Architect相当于作曲家,而Implementers比喻为演奏者,差别很明显了吧,不管是作曲家还是演奏者,都可以有大师级的人物,但毕竟不是相同的工作。

SA的关键性格特质:
Has a passion for learning  
Keeps current on technologies, applications, methodologies, tools, industry and business, ...
Deals with complexity and ambiguity  
Understands the system’s breadth as well as its critical details
Communicates complex information in understandable terms  
Keeps things in a state of flux until requirements and technical solutions match
Handles politics/works with integrity  
Creates an environment favorable to success  
Negotiates and mediates
Communicates experience (through talking, writing, …)  
Understands and influences people
Is a good team worker (architecture is team work)  
Mentors and assists in the development of others
如果没有这些性格特点,是做不好架构师的,比如第三项,如果你没法熟练掌握如何处理,那选择在Engineer领域发展比较好。
SA的关键技能:
Understand client requirements, and the different stakeholder needs
Develop architecture descriptions (models) that communicate to clients and builders with high fidelity  
Define the fundamental attributes of a system; those which largely determine value, feasibility, cost, and risk  
Translate client needs into technical terms, which transition smoothly into detailed engineering activities  
Synthesize satisfactory system concepts to structure ill-structured situations
Discover common themes from seemingly unrelated bits of data
Balance short- and long-term needs
Make decisions on technical problems, lacking a complete technical basis  
Have multi-view representation and hard-soft decision methods
SA的知识需要有一定的深度和广度:
An SA brings a wide breadth of knowledge in a number of technology-related areas, and typically has specific areas of deeper expertise. The domain or technology area in which the SA works has its own required areas of knowledge and expertise. To be effective, SAs need to maintain a broad perspective and understanding of emerging technologies, and also continue to keep up with their own areas of expertise. The following diagram shows an example of the breadth and depth of knowledge that SAs would need in the e-Business domain.
成功SA的ABCDEF法则,非常有意思,想不起来最初在哪里看到的,反观自己和身边的朋友,非常认同。刚用google搜索未果,所以,用我自己的话说吧:
Adopt methodology, framework and process
Balance stakeholders' expectation
Collaborate across teams
Deal with politics and complex
Elevate the level of abstract
Focus on quality
ABCDEF齐了,但我对D不是很确定,哪位找到原本的说法麻烦指正。另外,个人的感觉E最值得年轻的架构师关注,根据我与很多人的沟通,发现这个是他们最难达到的。所以这里重点提一下,我常常说的要有big picture, 不要总是bottom-up, 尝试top-down, 人和事都有infinite facets等等与elevate the level of abstract是差不多的,只是表述的角度不同。这一点也是一个合格的架构师与工程师相比最明显的差别。(我有几个mentees目前是程序员,希望往Architect发展,向我征求意见,我第一个提醒的问题就是这个,如果做不到,我定义他为“死程序员”,我知道不好听,但绝无对程序员这个职业的不尊重,只是一种调侃的说法,我个人也是从程序员发展过来,用个“死”字加在前面的目的是希望悬一把刀在我的mentees面前,既然他们的目标是转向架构这个专业,话说得狠一些,让他们知道什么问题是最最值得关注的,也是有帮助的。)
HP的Architect Profession中也有类似的阐述:Who makes a good SA?
A good SA is someone wh  
Enjoys and is good at finding new opportunities and winning new business, but doesn’t want to sacrifice technical competence for “budget-carrying” sales responsibilities  
Wants to get more involved in high-level customer relationships  
Wants to get more variety in project work and possibly to travel more
Likes a mix of business development work along with delivery responsibilities  
Is willing to take risks and be rewarded for them
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-15 15:51 , Processed in 0.068400 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表