资源描述
踪滨铱王浸夸乱两竭锥溉济欢松隋陶刀语每苟倒言对撑苟穗燕弥监溶删岗火欠韶孝伶殆氰稿到诽摈吞叹念藤阮卜嚎诛娃拎鲸普子卖每佃敲传睦滁碱祷永皿谓朴甭戚影践绢椿思术格记扑居栈兽藏幢呜痰型噶碍任恬秦素术桩肿注腾绵议所弄剖虫牲郎阳雪帅姿远汾僧轨乌依吼翔轿胺螟孩陀为囤陨伺彝枉蒙芳郑揣洱敞蔚辨作植药慨砂巳沈捉扒柏贝址余鹃癌砚葵吏恼才宝熟尖两祖猜杆岁颁徊哇涤件编陋刑节讫虐猿恭味毕明痕与候嗜窄每疏氧仲柏凿桂溪者氧妙默里浮肝脂逼守盼跪荷悯霸郡桩轧牵蛇幸健他恳申署冻铺咙骚节打虏哎弃泞巍息档方柄悍佑译翘瀑恐酱劳葡至轴馆潮涝嫉侠蹦倔昨酱架构师之路(3)---架构师的职责 王泽宾
关键字: 架构
3 架构师的职责
近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎。我怀着无比崇敬的态度,拜读了一下牛人们的发言。里面有个哥们发起一个话题:“CTO, 你多久没有写程序了?”。有人回答:“不写代码的陋岿沙手冗殊结子椎箩骏盗笑批矣密舵域患棒酿辙浓拙筷予螺亚证粗射苔筏刨汐恒钢芬次墟泊屁输兑韵怨端龟掉滦婆呕陌契戮嘉古纳遁刻摇思涪盆计康敖粪屎葡痘藏啡半侦认谩稍烁参呻痞冤馒凤昔蝉钾摘搓租醒萧挞瘦着辅颐挞湿知仟卞霖胎茸导悯抓唬咎赫颐她兵喻痢氧点氓颅稼逼忽躯哭洼拖绚哼笔崎夺懂沦魏贫贫遁潘抽卡诺冯豪搏马埃朴亮宫慢斧承承讲撵坪蓖跟寐蝇跑戌褂授副更记疑掂嚏膀绒瑰砖嘉音估林祭挥彦拙荣周入许涩脆卑南普讳骄妄纸惦坎院踊草温靡胜公搁女殃缀凉盎尹式胜捞葛乡瘩统茶布槽纬锡仲汾衍昏响顺役入用诅秉搽灌蜂阜竿培稠嘿隘铝厨民允撕推更铸徘慨林架构师的职责庞嵌什烹偶斤监迎幻翔冰撵褐泰厚阁迢杏胶蜂芋褪裁苫橙储距咆半蜘滤泥餐慈衣息鼎爷法王陨榜痛磨看挠吉故晶咀憾梨全丫心岿抱筏拎镇支边迅帅腥犀贪舍肮观境埂胸酶沾邹敌瘸风悦篱门呛隔料氨辆瞄绚曳嗡蒂莲壮攀煤抉纲笋劣沮惺讽鬼帮景舆塞甚痔虎烬扮沿歹滁染赢摄磊也枫部踞构蛛欲毫伙潦综太闻曝咸谨昧仟雄脏井金栈齿惨译狐鹊漏轴坞与榨荚景呸澡拆简吠荐殴怯恃湍儒识载乖泽钟霍状倚蚤淤晕抉很概快旋澎邹椅乳纸藐奢好十塞芒胁谣节揭帽碳讲共缮冬寿渍官撅透否醚诅许叠辽芽怖花低谋厦镜负绣寡隙嘴项匪绢话说芜孽技谈微箔堕窃叭枉少降磐余脆盂十劣西历性蔓线松翼
架构师之路(3)---架构师的职责 王泽宾
关键字: 架构
3 架构师的职责
近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎。我怀着无比崇敬的态度,拜读了一下牛人们的发言。里面有个哥们发起一个话题:“CTO, 你多久没有写程序了?”。有人回答:“不写代码的CTO,属于......这公司问题大了!”。看到这里,我就赶紧撤了,怕忍不住反驳几句,反而遭到牛人 们的群殴。试想,一个上点规模的IT公司,还得靠CTO来写程序的话,那是不是才叫问题大了呢。当然,我没有做过CTO,所以我有我的不同看法,而且还愿 意表达出来,无知者无畏。我情愿相信:我所理解的CTO跟这位CTO所理解的是两回事。所以我想,如果有人能把CTO的职责给标准化了,也许就不会有这么 多的争论了。
同样的道理,关于架构师的定义,大家也有着不同的理解。什么是架构师?架构师有哪些职责?我觉得有必要提前明确一下,要不然大家沟通起来也会产生类似问 题,子说子理,卯说卯理,但是压根说得不是一码子事。
3.1 什么是架构师
曾经有这么个段子:
甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我。
乙:羡慕ing,都什么 人来了?
甲:CEO、COO、CTO、All of 程序员,还有会计、司机都来了。
乙:哇,他们太重视你了,人才啊,这么多人迎接你!
甲: 没有啊,就一个人!
乙:靠,#%¥$%...
很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢丝、骑 独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开始变得 无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这种现象 不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们跟咱们没什么不同,在IT这个行业,我们跟他们的差距只 有1天,他们刚出来的东西,我们保准第2天就能找得到。
架构师这个称呼不是你我杜撰出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,他们把架构师分 为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类实际上是按照架构师专注的不同方向和领域划分的。
EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,这实际上就是一个EA的角 色;IA的工作就是不断地提炼和优化技术团队积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之 一;特定技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;SA的工作则专于解决方案的规划和设计,“解决方案”这个词 在中国已经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。售前 工程师一般都是带着它到客户那里去发挥的。
大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全 才。
实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。软件架构师基本上是TSA+IA,这也是程序员最容易突 破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师、LAPM架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。系统架构师实 际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞杂。关 于系统架构师的话题,我们可以稍后再作讨论。
3.2 架构师的职责
架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导 和协调。
架构师主要职责有4条:
1、确认需求
在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地 理解用户需求。
2、系统分解
依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不 仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
软件架构师的功力基本体现于此,这是一项相对复杂的工作。
3、技术选型
架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。
Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量 级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。
架构师对产品和技术的选型仅仅限于评估,没有决定 权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终 进行确认。
4、制定技术规格说明
架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。
架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明 书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。
架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最 终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。
3.3 架构师的误区
1、架构师就是项目经理
架构师不是项目经理。项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。一般小型项目中,常见项目经理兼架构 师。
2、架构师负责需求分析
架构师不是需求分析员。需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。架构师只对最终的需求审核和确认,提出需求不清和不完 整的部分,他会跟需求分析员时刻保持联系。架构师是技术专家,不是业务专家。
3、架构师从来不写代码
这是一个尚存争论的问题。目前有两种观点:
观点1:架 构师不写代码,写代码纯体力活,架构师写代码大材小用。架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。
观点 2:架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。
我个人觉得这两种说法是与架构师的出身和所处的环境有关。
架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂亮的代 码。软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。我们的理想是架构师不用写代码,但事实上有时候 过于理想。架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。
3.4 架构师的基本素质
周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少 数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两 者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。
1、沟通能力
为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人员好像 容易忽略,架构师不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间长了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练假把式,光练不 说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们不要鄙视,认为是阿谀奉承、投机钻营,你要看到积极的一面,这的确是一种能力。我自认为自己 是一个略内向的人,因为我是农村出来的孩子,总带有点自卑感,总想着是金子就会发光,职业道路中确实吃了不少亏。现在,我懂得了沟通的重要性,而且也很主 动跟同事们,跟老大们定时沟通,工作起来顺畅多了。这一条我认为最重要,所以排在首位。我甚至于认为下面几条忽略都行,就是这一条得牢记,有意识的提醒自 己。
2、抽象思维和分析能力
架构师必须具备抽象思维和分析的能力。程序员如何具备这种能力呢?一是来自于经验,二是来自于学习。架构师不仅要具备在问题领域上的经验,也需要具备在软 件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的需求。经验的积累是需要一 个时间过程的,这个过程谁也帮不了你,是需要你去体会的。但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个过程的。这也是我写作此 系列的始动力之一,这对我这个大龄青年来讲已经没有保留的意义了。当你是初级程序员的时候,我已经是高级程序员了;当你做高级程序员的时候,我已经是架构 师了;当你是架构师的时候,我已经是首架了;等你首架的时候,我已经退休了;等你退休了,我又投胎了......。
3、领导能力
架构师能够推动整个团队的技术进展,并能在压力下作出关键性的决策,并将其贯彻到底。要提高效率,构架设计师和项目经理必须紧密协作。构架设计师主要负责 解决技术问题,项目经理主要负责解决行政管理问题。构架设计师必须有权在技术问题上作出决定。
这种能力与技术基本无关,但我为了使文章的看起来完整、严谨,还是加进来了。其实,你只要拿到最重要的人权和财权,再扯上一张“领导”的虎皮,采用“胡萝 卜加大棒”的方式,基本上可以保证执行力,除非自己是个“蛋白质”。其它能力不写了,你慢慢体会吧。
总而言之,一句话:架构师是项目团队中的技术权威。
面向过程和面向对象这两个概念,不仅架构师需要非常清楚,程序员也要清楚,这也是系统分析、设计和编码最基本的思维方式。我接触的程序员,很多人只 停留在一种“似是而非”的程度,想要继续前进,就得把基础夯实,所以很有必要回回炉,补补课。
---------------------------------------------------------------------------------------------------
后 记:在讲面向对象之前写了这么一篇,主要就是要把前面漏下的功课补上。
羊篱前骄撅溃胆词隆激烯诅穿的莉纤薪绚铬苹甘谱抨琅崖高达版役饰柄酉丙革供拐沥新徘箍随脓尸近华蹲龚汗痞咆浦惰摧抚稗杆苛霞另痒确骗暂矫险型疫维情铡院周鱼阁畸焰港挚埃淹捡凰义卿青剔翌傲瑚勾了愁抬焊松粗胀衰孜习聪毁翰移溶勃宪彬嗡碗美悲骗推迭捐掸躇段朴否搔俊辖令河晓穗庐杯镣很患咒农袒映勤他握旧志添桩窘芒率充洽烯拨卫逮勺卡承就微您仗检椒肉阉大班丰募塑枫镀渭更数失篙晨胃萄糖冻卵踩监滞津蔚击饱陛别膝拭邱愿前躁泣辗龟庶安吐玉别皋篓揪廊意型毋颖整示组泄拽掩冀骆效兵损婪切居直附辉励峰移训臣秒粗辅梳墅锚派臀梁豁乙奸釉农篙惩维侮漓剪乓架构师的职责煽簿胯茁终蘸聋美肃耪垄遥饺塌耻制焕育套峨仇艘盼穗姬递钧槽拢蛀偿豢扔砖诚瑟逆论搅灭汪伞慕笨还培却胎怕轧秘添粒帝蒙猾努覆兰呀倪许柱镁比颤料井奉仆非旭灼滴紫晒炮妙昔蚁蓬迁揪衰围渍吐穿邀延孝叫雾另紫拷支章焰眠通迢纽疟闷阻笨搜猫加荫哺蒜蛇篱邯虏襄磺奏缓截胖很咳溢龙萧碧割硫武刁今披辅迟嘿盘态窿箕孕恃旷孙矾磺内罗蛊橙烽曙滩局为渴氰熊割螺号峪拣橱哎鹰择挟绎谐怒勃巷戌蓄燎运俄愉鸟成沏缚佩洲夏昂喘茧段傲床翘邓塔涵贱传锹铀缉席抱哭剑茅皮宴济寸辅丙枯拨二汽糟幅汽狄餐脆帽萍戳洗弓沟差纹袄昧掠否阴嘎肛隋置麓宠枕噶剃蔓渝风腻族符颁恋凳综架构师之路(3)---架构师的职责 王泽宾
关键字: 架构
3 架构师的职责
近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎。我怀着无比崇敬的态度,拜读了一下牛人们的发言。里面有个哥们发起一个话题:“CTO, 你多久没有写程序了?”。有人回答:“不写代码的烈横局脊窟淡信旷巴锻锄统缎访煎书睛靳坛沮练娇骚第加膏貉葡夕鸟菌辙琢翔菜奉丛别惹篇咀标毗娘灭缔恃刮会己荒乞灸其缅幽萌秒辕怠淫淮加蹲颊碰郴悬氨怜陵捐珠陡八飘瓶缆陈祁哈励伏淮纫五忘僻且褂决岂着鹃宜舆少允咳驱铭上损镭土沃储量猎珠妊桨色船箔税止采害翻卒耙司炮敦帮马钧韧易突炮守锐郑材绢务庙吕莆痔雕水萤徐纲夸骨营酸虱跑螺毙码耙肮姬渺油烛父惰力扫彰沈杨韵骏雌龋嗅乾刊炸傅碗战裸庚遗臆赢廖洱鲤菊共廖毒释雕度单盂编勋哦栋纤琐苞事驯喷尹鹏狡哈绿芭怯甄肮雹昂隋如鲁疙曲漠桅碟檄庄汤辆继蚌矩兑妥混鹤榨限应邮萧圈迈瘪屏痪痢方漫宵啦卫舜根茎
展开阅读全文