技术专家和架构师的区别

当你崇尚技术,以技术为中心,把技术的地位放在业务之上时,那你可能会深入钻研某种技术,围绕着这种技术构建起你的知识体系,并且不断地拓宽知识半径,深化知识层次,最终成为这个技术领域的专家。

当你以业务为核心,认同技术是解决业务问题的手段,你围绕着要解决的问颗来组织、选择技术,最终形成了围绕特定业务问题的知识体系,善于识别、拆分业务问题,组织开发者采用合适的技术去落地解决业务问题,那你就成了架构归。

技术专家对某个技术领域特别熟悉,例如,C++ 专家,了解各种晦涩难懂的细节(例如,traits、move、委托构造函数、RTTI、内存对象模型、各种 cast 等),熟知 C++89、C++11、C++17 等各种标准及其异同,能够从技术层面解决该技术相关的各种疑难杂症。他是面向技术的,是某种编程语言或技术框架方面的专家。他的身份可能是 C++ 专家、Qt 技术专家、React 布道者、WebRTC 专家、H.265 专家等。

架构师的核心能力在于:研究业务、识别问题、定位问题、拆分问题、架构软件、选择技术及掌握技术,完成架构的落地执行。

架构师熟悉多种技术的适用场景和优劣对比,但不一定是某个技术领域的专家。

在解决一个业务问题时,根据需要,技术专家需要进入架构师根据业务架构拆分出的软件和组织架构中工作,成为架构落地执行的一个单元,与熟练开发者和普通程序员的工作类似。

但是在技术专家熟知的技术领域内,他可以给出中肯的建议,协助架构师进行技术方案的选择。在遇到技术专家擅长领域的问题时,他拥有权威的影响力,能够参与并影响最终的技术决策。技术专家的影响力往往是基于其在某个方向上的相对技术优势建立起来的。

架构师具有全局视角,以业务为核心,以解决业务问题为目标来构建软件架构和人员组织架构,并且要确保架构落地执行,所以架构师需要拥有组织权力,他往往是团队的领导者,其架构的有效性和职能权力两方面体现。

技术专家不一定能做好架构,因为架构是由业务本身决定的,是从业务拆分出来的,必须站在“有问题的对象的角度”思考“问题是什么”才可能找到合适的架构,而技术专家偏向从技术角度来直接给出自己的解决方案。

架构师不一定是其决定采用的技术方面的专家,因为架构师的关注点在解决业务上,他对技术的态度是使用和取舍。

====================== 文章摘自《大话程序员》======================