架构师修炼之路

国内我们对架构师,项目经理,开发经理或者是技术总监这类职业定位普遍不都不清晰,很多的情况是“能者多劳”,一人身兼数职。达尔文的理论在我们的行业是绝对适用的,我从进入这个行业开始我就不甘于成为淘汰者,而我也由心地热爱着这个行业很年前我就立志要成为架构师(当年流行叫:系统分析员 )这目标进发。回首这10几年的磨练,我总结了一下一名合格的架构师应该具备哪一些方面的能力以及怎么才能得到这些能力

编码能力

架构师是一个职业,是一种经历了各种磨练与长年开发经验积累出来的。另外我一直认为:不会编码的架构师不是一个好的架构师。我见过很多所谓的架构师完全不懂编码,但总喜欢拿着架构说事。但从严格来说他们并不属于“软件架构师”的范畴,充其量只能算是个“系统架构设计师”,遇到这样的”架构师“我总喜欢说一句话:”Don’t tell me the concepts show me the code!“。

不参与编码并不代表不会编码,如果没有过硬的开发基础,巨量的编码时间积累为基础,在设计软件时一定会忽略非常多的细节,而这将会直接影响到整个项目的成败,试想想当项目经理按照架构师设计的软件蓝图订制开发计划与安排项目资源时由于“蓝图”内存有大量未确定的风险因素,以及由风险触发后所带来的不可预知的结果,最后项目是否能成功 ?

  • 多看 - 多看别人的代码,从别人的代码中读出软件的架构与设计的设计思路
  • 多学 - 掌握各种语言,不要偏执于某一技术阵形,不管java, .net , phyon 还是javascript每种语言都有其优缺点,成为一名语言控,从语言本身学习与理解语言设计者的思想。
  • 多做 -  疯狂编码,从时间与实践中去体验与领悟,工多艺熟。
  • 勇敢 - 严格要求自己不要写出”发臭“的东西,勇敢地重构!让代码变得优雅,易读充满你的设计思想。

表达力

世界上最难的两件事是:将别人口袋的钱放到自己的口袋里面;将自己脑子的想法完整放到别人的脑子里面。

我认为一份成功的设计是 ”能让不同层面的人都能看得懂“。为什么这样说?那么得了解谁需要看设计,又是出于何目的来看设计。

  • 销       售 - 从设计中寻找卖点与特色,丰富销售方案和定制预售计划。
  • 项目经理 - 根据设计进行时间估算、项目资源准备与工作分解。
  • 开       发 - 根据设计要求进行技术准备、开发环境、编写DEMO以及最终编码 。
  • 测       试 - 根据设计划分测试粒度、准备测试环境、定制测试计划

不同的开发方法与开发流程都会有不同的设计文档要求,而受众无非也是上述几种。作为项目/软件的设计者,能清晰地向受众准确地传达自己的设计思路就显得极其重要。这里指表达不是指嘴上的功底,更多的是在工具的掌握能力与文字的表达能力。使用不同的工具表达向不同的受从表达相同的理念,这基实是对架构设计的一种验证,这种沟通与表达能有效地融合不同角度的观点,也能让架构师能更深入地理解自己的设计方向。

要面对如此多的复杂性应该如何来锻炼自己的表达性呢?

  1. 多与人沟通,多参与头脑风暴
  2. 练习用人类语言表达“非人类”的专业知识。一张用铅笔画的框图往往比一个使用专业UML设计工具做出来的设计更容易让人理解。 UML为作架构师基本上是必修课,也是辅助架构师思维的工具,但对于不懂UML的那就是“非人类”的文档,设计是给人看的,别人看不懂再专业再标准化的设计也只能沦为废纸。
  3. 培养测试先行的习惯 - 在设计时多写范例与测试,在很大程度上可以减少设计误区和验证被实现的可行性。这样可以在将设计交付给开发、测试后节约大量的沟通时间。

拥抱变化

正如XP(极端编程)中所说:“世界上唯一不变的就是变化”。拥抱变化、预测变化、控制变化不单纯是优秀开发人员的和项目经理的要求同样也是架构师一种重要的能力。

“变”

我的理解 设计中的“变” 就是 “可定制化” 的要求,可定制化程度越高系统/项目的可扩展性就越强。架构师就是需要锻炼的是控制这种变化的范围与程度,“变”是双刃剑,允许过多的变化就会造成“过度设计”,出现一大堆“未来可能使用的功能”;过于封闭则会变得僵化难以适应新的要求。

“不变”

这里所说的“不变”也只是相对而然,在系统/项目中相对不变的就应该是“核心”或者是“基础框架”,举最简单的例子就是 .net framework 就是其中一者,虽然它会不断发展,增强功能。但其基础核心设计理念与架构也从来没有发生过质的改变。更具体的一点来说“不变”的是规则、用法和基础设计理念。

我认为学习控制变化的最佳方法是多看出色的类库或系统,多问为什么这样做,理解原设计师的想法。经过一定时间的积累,随着对“变化”观察的增多,自然而然会在自已的设计中按设计要求将”变“与”不变“应用得当。

方法论

针对架构设计的方法论众多,应该如何选择?我也读过很多的相关书籍,我只选最实用的,这里我推荐几本书。

  • 《设计模式》- 要读懂、活用,我读了10几年每次都可以从中学到不一样的想法,将其应用于架构内可以极大地简化很多复杂的问题。
  • 《Java 编程思想》 - 谈面向对象方面最好的其中一本书,提高面向对象的设计能力会有很大帮助
  • 《Refactoring》- 重构不单单是一种做法和程序员才关心的事。重构重于意识与思维完全可以用于架构设计 。
  • 《eXtreme Programming》- 虽然讨论的是开发方法,但它最能诠释什么是”变化“。

方法论的实践与应用也需要时间磨合并融会贯通,它们给予我们更多的是理念与意识,一定要避免走进为实践方法论而设计的误区。

成为架构师的路子我相信还有许许多多,我相信相同的是每位架构师都需要通过长时间的学习、实践、思考而也且也拥有一颗热爱软件心。

架构师修炼之路,布布扣,bubuko.com

时间: 2024-10-21 11:03:31

架构师修炼之路的相关文章

架构师成长之路(3)--如何成为架构师(方法)

前言: 哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知. 如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做),  执行/行动   1.走正确的路 如果想成为一个架构师,就必须走正确的路,否则离目标越来越远,正在辛苦工作的

测试架构师修炼之道: 1 软件测试工程师的职业规划

测试架构师修炼之道: 1 软件测试工程师的职业规划 2016-08-11 1 软件测试的职业发展方向 1.1 管理 表1 管理级别区分 管理级别 职位 工作年限 属下 测试对象 职责 初级软件测试管理者 测试组长 两年 2~5 一般负责产品的一个或多个特性. 1.   测试计划的制订和执行2. 负责产品重点.难点的测试3. 负责带新员工 中级软件测试管理者 测试经理. 测试代表.测试主管 4年左右 10~20 产品 1.   最重要的工作还是运作测试项目,制订并执行测试计划,测试结束后还需要对产

测试架构师修炼之道:4 如何才能制定好测试策略

测试架构师修炼之道:4 如何才能制定好测试策略 2016-08-18 目录 1 理解测试策略  1.1 什么是测试策略?  1.2 测试策略等于测试方针?  1.3 测试策略等于测试计划?  1.4 测试策略等于测试方案?2 四步测试策略制定法  2.1 明确“产品质量目标”  2.2 进行“风险分析”  2.3 适配“产品研发流程”  2.4 进行“测试分层”  2.5 “四步测试策略制定法”中的测试技术3 产品质量评估模型  3.1 优秀的产品质量评估模型的特征  3.2 软件产品质量评估模

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情 2016-08-12 测试架构师应该考虑以下问题: 测试的目标是什么? 测试的范围是什么? 测试的深度和广度是什么? 测试的重点和难点是什么? 如何安排测试? 如何评估测试结果? 目录 1 测试架构师在需求分析中  1.1 理解产品的商业目标  1.2 梳理用户的使用场景  1.3.输出产品总体测试策略2 测试架构师在测试分析和设计中  2.1 制定阶段测试策略  2.2 落实测试设计策略,保证测试设计的质量3 测试架构师在测试执行中 

测试架构师修炼之道:3软件测试架构师的知识能力模型(一)

测试架构师修炼之道:3软件测试架构师的知识能力模型(一) 2016-08-15 测试架构师从事的并不是一项纯测试技术的工作,而是一门需要结合产品.沟通协调.书面表达等综合性的艺术,如图1所示. 图1 软件测试架构师需具备的能力 从测试技术来说,软件测试架构师需具备的测试技术能力: 软件产品质量模型 测试类型 测试方法 探索式测试 自动化测试 目录 1 软件产品质量六属性  1.1 功能性  1.2 可靠性  1.3 可移植性2 测试类型3 测试方法  3.1 产品测试车轮图  3.2 功能测试方

架构师修炼 II - 表达思维与驾驭方法论

开篇之前我想先说说当年开发的那点事儿:大约10年前吧,我还是一个程序员的时候经常都是遇到这样的项目开发流程: 解决方案 :满足客户目的和投标用的一堆文档(不少还是互联网上抄的) ,是以Word为主的纯文字. 投标完成和客户付订金后项目组成立,通常为(0至1)个项目经理或者叫项目负责人+(1至N)个程序员 的项目组模式 设计:由项目的头或者经验最足的成员参与编写设计.倒霉的时候我们会得到一份按照软件工程学的纯中文形式的设计想法(抱歉我只能这样来形容),而更遭的情况是得到一份完全看不懂的Rose文档

测试架构师修炼之道:5 测试策略实战攻略

测试架构师修炼之道:5 测试策略实战攻略 2016-09-06 目录 1 开始2 初次使用“四步测试策略制定法”  2.1 产品质量等级  2.2 确定项目中各个特性的质量等级  2.3 对项目整体进行风险分析  2.4 确定测试策略的结构  2.5 初步确定测试分层  2.6 回顾3 制定总体测试策略  3.1 分解产品质量目标    1. 根据质量等级来分解产品的质量目标    2. 为每个测试分层确定测试目标  3.2 使用老功能分析法来对特性进行分类  3.3 基于质量和风险来确定测试深

架构师修炼 后记 - 推荐必读的巨著

首先,很感激架构师系列的文章得到园子小编的多次推荐,也同样感激关注这个系列的园友们,有了大家的支持也成为我写出这个系列的一个动力.这个系列的文章在博客上就暂时要结束了,这个系列其实还没有完,因为还有实战部分的内容,我会将这个系列的文章进一部充实并加入实战系列的内容编撰成书,有望在年内发行的.写这篇博客是要将之前在前三篇文章中提到说要给大家推荐的一些书籍与资源在此进行一下汇总,让有兴趣的园友们也可以共同分享. 书籍 <重构改善既有代码的设计> - 英文原著 “Refactoring : Impr

开启运维自动化架构师成长之路

技术的提升仅是量的积累,思想的提升才是质的飞跃! 这句话是我在网上看到认为最有道理的励志语录了,当然互联网IT行业的工作者相对理解的会更加深刻. 以这句话开头引出我将要写的这篇文章.首先,请允许我做一个自我介绍: 熟悉的朋友喜欢叫我一声岩哥,这么些年我也认可了这个称谓,尽管不是太好听.从毕业之后就接触了互联网,到现在工作N多年,中间有接触过游戏行业.金融行业.教育行业.云计算行业.电商购物和系统项目集成等,所有的工作经验和项目经历都是跟互联网IT技术挂钩,熟知企业中.项目中和学习中关于IT方面的