架构师与系统架构

最近去了一家公司面试架构师的职位,去之前也是没有详细考虑过到底架构师是做什么的,只是估计可能会有一点难度,最终将手到擒来,然后又是在工资上谈不拢.据我所见过的一些公司的架构师,工作重点各个相同,工作内容全集大概如下:
--解决公司项目中的一些技术难题.
--提供技术方案,并参与公司的投标.
--带领一些高手开发一套通用框架或组件库.
--协助招聘技术人员.

而这些工作本身到底有多难,完全取决于公司的状况.即便是纯粹的软件公司之间,对此定义也不尽相同.做银行,电信软件的企业可能会要求高,而做这类软件外包的企业,要求通常会高得更多.
整个面试过程非常愉快, 很少有这样的感觉了.三位面试官都各有所长,看问题都很透彻.尤其是做技术面试时,对方不断地施加压力,我的大脑必须快速运转,分析再分析.我相信对方更想知道我是如何思考的,以确定工作经验是不是足够丰富,脑子够不够聪明.我喜欢这样的谈话方式,内容不是最重要的,整个过程才是重点.
这次面试最后无疾而终,成为我不小的遗憾.不过,就像以往一样,每次新的尝试都会带来丰硕的成果.在这里我想对三位面试官真心说,"多谢!", 这次面试是我人生中宝贵的一堂课.一方面,清楚知道自己到底有几斤几两.尺有所短,寸有所长,尽量让该长的再长一些,让短的不那么短,不断激发自己的潜力.另一方面,我也对架构师和系统架构有一个比较清晰的认识,明确了自己这一两年的目标.就我目前的状况,相信还会再去那家公司试试.

架构师的能力既要有广度也要有深度,技术方面:
--软件开发生命周期,从需求,设计到实现和测试都有一定的了解.
--过程,重量级(RUP/CMM)和轻量级(XP/Scrum)
--框架,JEE/.Net
--工具,用来建模,设计,沟通...(UML, ER)
--操作系统,Windows系列及Linux/Unix系列
--服务器,App Server, Web Server. IBM WebSphere, Oracle WebLogic, JBoss, Tomcat, Apache...
--硬件知识,各大厂商提供的机器型号及配置,在不同应用环境下的性能.
--网络知识,网卡,路由,网络布局.

非技术方面:
--平衡和决策能力;
--培训和讲解能力;
--划分层次;
--制定规则和标准;
--沟通能力;
--领导能力/问题解决型领导;
--在截然不同的抽象层次上概念化解决方案;(这一点尤其关键)

看到了吧,架构师不是个容易活,而且多数公司都不需要这么强的人.在多数情况下,每个公司在自己特定的业务领域已经有比较可靠的架构原型,项目对架构的要求并没有那么高,或者范围相对小一些.不过,这并不妨碍我以此为目标.以前我的目标没有这么明确,还好一直在朝这个方向走.看来我的运气不错.

系统架构的概念可大可小,基本的层次如下(取自知识大金矿--MSDN):
领域--公司做为一个黑盒,以业务的外部用户的视角为业务建模,为与业务外部用户的交互建模
业务处理--系统为黑盒, 为以实现领域级业务交互为目的的业务过程建模,以系统的外部用户的视角为业务过程建模
逻辑--系统设计,系统用户的视角为业务建模
物理--为实现的物理结构建模,协议,页面,数据表等

如果企业的业务相对复杂,可以在此基础上进行扩展.通俗一点讲,就是首先关注企业的客户如何看待企业提供的服务的,然后理清企业内部的业务流程,明确企业对系统的期望,再就是从系统的各个参与者出发明确系统功能.再就是具体的物理架构.看起来非常像需求建模,实际上也确实是需求决定了系统架构.所以,架构包含了两方面的内容,架构的定义和架构的物理实现.

就目前情况来看,我的理论水平还是需要不断提高,通过通用的原则解决通用问题的各种变种。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章