架构师核心技能养成计划

作者: 江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/02/18/1511545.aspx,转载请保留。

引子:
   "这个项目的架构是什么?"
   对方爽快的回答:"Spring+Struts+Hibernate。"
   嗯,这位很可能不是架构师了......

一、核心竞争力

架构设计的理论、模式与技术
   
苦命的架构师们在试验与挫折中终于获得了架构设计的经验,但其中大量的原理、模式和技巧,都经历了一个重复发现的过程。
    其实,业界对设计理论与模式的总结虽则没有产生大热的畅销书,但列在前篇架构师书单里的书籍,也已足够为架构师们的知识作一个系统的整理。
    顾影自怜,发现自己的再发现式积累还是太慢,太片面,大概只局限于GOF23,Java EE架构模式,RUP4+1视图等方面。

有序的以方法为驱动源的任务执行
 
     匠级的架构师必然有一套自己的方法论、过程论,每次设计都是熟练而有序的执行,只在Project类型不同时微调一把。
    其中架构师自己做架构设计的小过程可以参考书单里的内容自行秘制。
    而与开发团队配合的大过程,以RUP为基础的剪裁是目前被描述得最为详细,可执行度最高的。

领域知识

    技术人员一般抗拒学习软件开发以外的东西,但作为架构师却非如此不可。
    架构师的职责就是将业务需求转化为系统设计,解决实际的问题,没有良好的领域知识无法保证转化的质量,无法与客户沟通,更不能有意识的让架构支持业务系统可能出现的变化。

    但如果永远只重复同一领域项目也很让人厌倦,G9就写过一篇很有意思的〈商业软件编程很无聊?〉或许很多架构师仍然要不断进入已知领域的子领域或者全新的领域才会愉悦,如何快速成为新领域专家呢?精通快速业务建模方式吗?


大型项目的经验

    中国有多少架构师,不在于有多少人通过了什么考试培训,而在于中国大型项目的数量。
    问:你这个项目的架构是什么?一口回答:Spring+Struts+Hibernate。这位很可能就不是架构师了,因为这仅是技术Stack,通常项目规模不大时,Spring+Struts+Hibernate才会成为架构的重点。

    要增加大型项目的经验植也不定要担任这些项目的架构师,只要完全你了解系统的架构为了满足什么样的功能与非功能性需求而设计成这个样子。
   所以,如果SCM的访问权限许可,可以多读一下公司以往项目的设计文档。同时愉快的接受其他项目组的架构评审会的邀请(如果去到发现其实是需求评审会或者代码评审会你就赶紧开溜了)。


二、基本能力


完整的软件开发生命周期经验

    这个不用说了。幸好中国的架构师也不是从石头缝里爆出来的,很多人什么脏活累活都做过,甚至跟着市场人员跑去做演示这些国外架构师不一定有的经验我们都有了,差别只在理论知识,最好能了解RUP + CMMI3 + 敏捷原则的细节。


精通一两种开发语言、保持当下架构的开发体验

    国内的架构师到了三十岁以后很多就往理论上跑,而国外的架构师则在往上发展的同时保持下面的编程体验,所以国内多水王,而国外则多大师。
    架构师失去了编码的能力与体验后,设计的层次就会过高,与实现之间有断层,质量缺乏保证,与开发人员产生沟通障碍, 自己哗啦啦编一个验证原型的日子更是一去不返。

    更痛苦的是,过了三十之后学习能力开始下降,手艺一旦放下了想重新上手还很难:(

    但是,也不必要挽起袖子每天编码100行,亲自出手编写某个模块,很可能你的"亲自出手"因为时间安排不来反而拖了大家的进度,但一定要保持一个体验。

宏观上的,广度优先的了解当前的技术与产品

     架构师如果连Tuxedo与IBM MQ都分不清,一句"这里搞个异步调用的中间件,要有商业支持的",同样是层次太高了。所以 架构师可以应该宏观上了解各大公司的产品线与著名的开源项目,最好自行编制一个wiki。
     但同时也要抵制成为成为某项技术专家的诱惑,如Oracle启动参数优化的专家。除非会带来较大好处的如Spring Framework,其他技术细节刚好掌握到业务职责需要的水平就够了。

    架构师们还要同步产品频繁的换代与革新,但只看看一些大技术站点上的新闻稿就好了,不用去读changelog和那些小版本间的变化。

与业务域开发域人员沟通的能力及其他领导能力
 
   IT 架构师处在客户和开发人员两个域之间,必须能够使用各种媒体(包括代码、模型、文档、PowerPoint以及谈话和讲座),与技术和非技术的干系人进行沟通,清楚、明了、简洁地对体系结构决策进行描述、演绎和申辩,同时要懂得做一个好的聆听者与观察者。

   另外,架构师好歹也是个半大不小的官,其他当领导必要的能力就不列了。

   参考了IBM DW中国上的两篇文章:
   软件构架师的特点 
   观点与展望,第 3 部分: 什么是最有价值的 IT 体系结构技能,如何学习?
 
   其实上面每一点都在架构师需知识的广度、深度和时间三者中平衡,所以架构师除了天生的能力--领悟多维的“美丽”外,学习如何进行学习,和学习的时间也很重要。
    所以,要戒除做开发人员时看到哪算哪的习惯,学习时有意识的运用已有知识的映射与比较来快速把握重点。甚至在掌握后重新评估学习的过程,寻找过程的改进点。
    另外要有至少一半的时间在做能力进步的活动,花在重复的、无进步的商业设计,或者解决技术细节问题如Tomcat故障的处理的时间要控制。


 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值