微信号:infoqchina

介绍:有内容的技术社区媒体

通向架构师之路

2013-10-09 20:11 崔康

对于不少开发者来说,成为架构师是职业生涯的目标之一,但是如何成为一名架构师却没有统一的教科书,Verizon公司架构师Bett Correa在Software期刊中分享了自己的成长经历,主要的经验包括均衡发展技术知识、领域知识和沟通能力,通过架构来学习架构等。


Bett认为架构师必须了解当前的系统如何满足客户的需求、实际地编写代码、与客户坐下来观察他们的工作,并听取他们对软件的反馈意见。架构师必须搭建团队之间的桥梁,理解每一个团队自身的局限性,并考虑每一方的利益。当业务部门提交了一个新需求,架构师必须据此做好满足需求的软件设计,并把这个设计“卖给”各个团队,让开发人员和测试人员了解新系统的工作原理。


另一个重要的经验是平衡,技术知识、领域知识和沟通能力之间的均衡发展。Bett最初以技术人员出身,学习Perl和JavaScript等,当时并没有考虑软件设计方面的问题,基本的想法就是“尽可能快速地编码,快速完成任务”,但事实上,通常这只是个美好的愿望。在进入一家新公司之后,她开始了解该领域的知识和沟通技巧。她参与了Toastmasters活动,提高了当众演讲和主持会议的自信。然后,开始了解系统需求,这离软件设计又近了一步,她把其他人对系统的需求分析记录下来,持续了几个月的时间。


她的工作导师要求她了解软件系统和工作原理,并与各个团队的领导打交道。一段时间之后,她成为了该系统的专家,许多人开始找其咨询。同时,与业务部门接触,了解市场行情,学习公司的发展史,阅读公司网站上的白皮书和在线课程。


这些付出都是值得的,因为Bett可以轻松地与开发人员和业务客户讨论系统的细节问题。一天,导师让Bett设计软件系统的一个小模块,她需要决定许多方面的问题。Bett发现设计不是一个简单的01游戏——设计都是权衡和妥协的结果,比如增强安全性可能会降低响应速度。某个决定在一些情况下生效,在其他情况可能无效,Bett不得不找出失效的各种情况,并评估其成本。


在担任架构师的第一年,Bett服务于25个不同的小项目,从而全面的了解软件系统的各个部分。她能够将不同背景的人组织到一起拿出解决方案。慢慢地,Bett发现她的设计可以让各个利益相关者接受。


Bett建议,如果你想培训架构师,那么:

  • 发展团队中的好苗子

  • 给他们安排一些设计工作

  • 鼓励互相交流

  • 让整个团队都考虑设计问题

  • 鼓励设计方面的培训

如果你想成为架构师,那么:

  • 找一位资深的架构师做导师

  • 寻找可以设计的项目,甚至可以是自己的项目

  • 参加正式培训并多交流

    Bett特别强调,只有亲自参与设计,才会真正了解应该如何设计。起初有很多想法,但是开始设计了,才发现很多都是不切实际的。通过课程或者书籍来培训自己是必要的一步。


说到架构师的沟通和协商能力,Dave Hendrichsen在“软件架构师的12项修炼”中做了充分的剖析,建议如下。


多说“是”,少说“不是”


架构师经常会被咨询问到某个项目的可行性,并提供从战略到战术的多个替代方案,附带若干成本选项,以使商务伙伴能根据特定项目的投资进行判断。架构师与项目评估团队的角色不是决定要构建什么,而是决定怎样构建。我们试图说出的答案是“对,我们能构建这个项目,这些是相关的信息”。产生的信息需要包括诸如所考虑的各种替代方案、项目风险(以及可能的规避策略)、基于的假设条件,以及需要指出的突出问题。我们不是在寻找这样的答案:“不行,这个项目不可行,但我们能构建另一个项目(通过消除原困难项目中的难题,而代之以我们想构建的那些特性)。”


但是,如果一个项目或任务不可行,我们需要立即巧妙地指出评估结果、解释原因,并提供替代方案。这通常归结于法律法规、行规等原因,以致“不”是正确的回答。当然了,还有其他一些例外情况:提出需求的人是想逃避工作,需求违反了公司的政策,或者你手头有优先级更高的工作,无法让你有足够时间来对需求做出满意的答复。这些情况下,你要清楚地告诉人家你说“不”的原因。


了解别人和自己的沟通需求


在架构师的世界中,你需要例行地与许多人交流。你可能在上一次会议上与有些人谈过话,也可能没有和这些人谈话。挑战就是快速了解人们在说什么,他们怎么说这些话,来“读懂”本次会议。

观察关键的时刻,即做出决定的时刻是一个要点,以此识别人们提出的问题和关心的地方,来加强核心概念,帮助你关注会议的方向以及把会议引向一个成功的结论。为了认识这些关键时刻,我们需要吸收所有信息,包括提供给我们的语言或非语言信息。


观察别人的举止能够告诉我们如何与每个人最好地沟通。由于每个人都不相同,并且对沟通也有不同的需求,架构师必须让传递信息的方式适应这些需求,以确保有效沟通。

关键点就是我们要基于每个听众成员的沟通需求来匹配交流风格。有些人的反应是能够看出来的,他们的偏好能够用诸如“我明白你的意思”之类的话辨别。另外有些人需要倾听,并吸纳语言细节,他们的偏好能够用诸如“我在听你说”之类的话辨别。还有一些人在交谈中比较情绪化,他们的偏好能够用诸如“我觉得怎样怎样”之类的话辨别。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 建立微型数据中心 – 在笔记本电脑上运行Rancher 你读了那么多书,为什么还那么穷? AlphaGo 与深度学习 Connect(); //2015开发者在线活动 Java并发原理无废话指南(3)