前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

1、开发者和架构师之间最大的区别是什么?

架构师和开发者一样,也经常写代码,简单的说,开发者和架构师之间最大的区别就是技术领导力

软件架构师的角色需要理解最重要的架构驱动力是什么,他提供的设计需要考虑这些因素。架构师还要控制技术风险,在需要的时候积极演化架构,并且负责技术质量保证。从根本上讲,架构师是一个技术领导者的角色,这就是最大的区别

2、一位开发者如何才能成为一位架构师?

两个字:经验。

我认识的大部分优秀软件架构师同时也是出色的软件开发者,他们都是经过时间逐渐发展成为架构师的。你需要有退后一步看代码的能力,从而理解特定软件系统背后的设计决策。退后一步才能看到“大局”,这是架构师必须掌握的核心技能。

3、有没有什么是架构师永远都不应该做的?

有,软件架构师永远都不应该停止编程和停止学习!

程序员从初级走向资深的过程中,会面临两个支路,一个叫技术主管,另一个则是架构师。

总结程序员到架构师之路的忠告:

1、程序就是一切。文档是紧接其后的事情。因此,把你们的代码写成本身就是文档,而且要好用。

2、测试 测试 测试。重要的事情说三遍。

3、单元测试要严格。任何一个单元测试中发现的 bug 都负担了开发人员成本外的双重代价。你们要知道,我宁愿给你们更多的薪水也不愿找别的 QA 公司来测试、让你们修改 bug。但如果你的程序写的很差,那我只好把这些钱由这些人平摊,你们只能得到其中很小的一块蛋糕。

4、写出好代码要能给人类阅读,给 CPU 使用。绝对不能向烂代码低头。

5、阅读更多的知识,不要局限于目前的工作所需。如果你只掌握今天需要的知识而不知明天需要的,你不会有发展进步。

6、抽象的能力,抽象思考的能力怎么强调都不为过。现实的需求纷繁复杂,如果架构师不能够把这些乱无头绪的需求抽象成一些“概念”,在概念的层次进行思考,系统根本就无法设计。

7、技术领导力,要用技术的影响力来领导人,而不是威权和职位。换句大白话来说,就是要能让技术人员服你。有了技术影响力,你在团队发出的声音才会被倾听,被尊重。

4、架构师的基本素质

1、沟通能力

为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人员好像容易忽略,想成为架构师就不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间久了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练假把式,光练不说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们千万不要鄙视,认为这是阿谀奉承、投机钻营,凡事都要看到积极的一面,“沟通”的确是一种能力。我认为自己是一个略内向的人,因为我是农村出来的孩子,普通话都说不好,以前或多或少带有点自卑感,幻想着是金子总会发光,所以在职业生涯中吃了不少亏。现在,我深深懂得了沟通的重要性,我会很主动地跟同事们,跟老大们不定时地沟通,感觉工作起来顺畅多了。

这一条我认为最为重要,所以排在首位。我甚至认为下面几条都可以忽略,唯一这一条得牢记,而且要常常提醒自己。

2、领导能力

架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。架构师如何来保证这种执行力?这就需要架构师具有领导能力。

架构师的领导能力的取得跟项目经理不太一样。项目经理主要负责解决行政管理,这种能力与技术关系不大,他有人权和财权,再扯上一张“领导”的虎皮,采用“胡萝卜加大棒”的方式,基本上可以保证执行力。架构师在项目里面可能更多地使用非正式的领导力,也就是我们常说的影响力,里面包括个人魅力、技术能力、知识传递等等

3、抽象思维和分析能力 架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是架构师大局观的形成基础。你如何具备这种能力呢?一是来自于经验,二是来自于学习。架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这个过程谁也帮不了你,是需要你去经历的。但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我写作此系列的始动力之一。

4、技术深度和广度

架构师最好精通1-2个技术,具备这种技术能力可以更加深入的理解有关架构的工作原理,也可以拉近和开发人员的距离,并形成团队中的影响力。

架构师的技术知识广度也很重要,需要了解尽可能多的技术,所谓见多识广,只有这样,才可能综合各种技术,选择更加适合项目的解决方案。有的人说,架构师技术广度的要求高于技术深度的要求,这是很有道理的。

ContactAuthor