在不同的公司,由于组织架构不同,每个公司的技术团队都有不一样的特点,但是不管什么公司,你一定都听说过架构师这样一个职位,那么架构师这个职位是做什么的呢?

一、架构师的定义

以下是维基百科对系统架构师的定义:

系统架构师(System Architect,簡稱SA或SAr),是在信息系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施的人。他们(与系统分析师共同)确立系统的主体架构和实现方向,并负责指导软件工程师等开发人员的编码开发工作。

通过定义,我们得知,架构师有如下几个职责:

  • 技术选型
  • 主体框架搭建并实施
  • 确定系统的实现方向
  • 负责指导软件工程师

二、架构师的误区

因为以上架构师的职责,许多人对架构师的工作有了误区,主要有以下几个误区:

  1. 架构师负责把控项目进度

在专业的公司中,有专门把控进度的职位,我们称之为项目经理。

项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能

对架构师产生此误区的原因为,在有些公司,架构师是带领团队完成整体设计到产品上线的,所以容易让人对架构师产生此误解。

  1. 按照架构师的框架开发就行,无需怀疑

在架构师搭建出来框架后,因为有些情况是臆想出来的,与实际开发过程不符也是正常现象,一个好的框架搭建出来,少不了的是这样一个正向过程:

#mermaid-svg-8HkpWsTqKa1VURRC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .error-icon{fill:#552222;}#mermaid-svg-8HkpWsTqKa1VURRC .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8HkpWsTqKa1VURRC .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-8HkpWsTqKa1VURRC .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8HkpWsTqKa1VURRC .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8HkpWsTqKa1VURRC .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8HkpWsTqKa1VURRC .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8HkpWsTqKa1VURRC .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8HkpWsTqKa1VURRC .marker.cross{stroke:#333333;}#mermaid-svg-8HkpWsTqKa1VURRC svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8HkpWsTqKa1VURRC .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .cluster-label text{fill:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .cluster-label span{color:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .label text,#mermaid-svg-8HkpWsTqKa1VURRC span{fill:#333;color:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .node rect,#mermaid-svg-8HkpWsTqKa1VURRC .node circle,#mermaid-svg-8HkpWsTqKa1VURRC .node ellipse,#mermaid-svg-8HkpWsTqKa1VURRC .node polygon,#mermaid-svg-8HkpWsTqKa1VURRC .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8HkpWsTqKa1VURRC .node .label{text-align:center;}#mermaid-svg-8HkpWsTqKa1VURRC .node.clickable{cursor:pointer;}#mermaid-svg-8HkpWsTqKa1VURRC .arrowheadPath{fill:#333333;}#mermaid-svg-8HkpWsTqKa1VURRC .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8HkpWsTqKa1VURRC .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8HkpWsTqKa1VURRC .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-8HkpWsTqKa1VURRC .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-8HkpWsTqKa1VURRC .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8HkpWsTqKa1VURRC .cluster text{fill:#333;}#mermaid-svg-8HkpWsTqKa1VURRC .cluster span{color:#333;}#mermaid-svg-8HkpWsTqKa1VURRC div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8HkpWsTqKa1VURRC :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

设计
验证
反馈

其次,架构就算在稳定之后,也不是一直一成不变的,也会随着业务的变化而演变

使用一个技术就好比是搭积木,只要问题明确 ,寻找技术并组合来实现架构 的拆分并不是难事 。如果架构师能够深人理解技术背后的驱动力 ,了解技 术是如何实现的 ,则能够做出更合适的判断和选择, 这就是所谓的 “接地气”。 所以架构 师在做好架构拆分后, 会形成不同的生命周期 。针对不同的生命周期 ,要选择不同的技术来进行支撑, 再把不同 的生 命周 期分工交 给不同类型的软件工程师去实现。 这就是架构师和技术人员的分工配合 架构师拆分生命周期 ,技术人员实现生命周期。

  1. 架构师不用写代码

我也见过一些架构师,就写写ppt,说一下思想,就把活丢出去的人,这个是对架构师最大的误解,也是我本篇最想说的内容。

一个只做高层设计,不低下头去写代码的架构师,那就相当于纸上谈兵。
这样的架构师会造成一系列的问题。

想做好技术的使用者并不容易。架构师必须深入地了解不同的技术, 知道这些技术的强项和弱点, 懂得合适的取舍。 比如作为一个 建筑架构师, 建造砖瓦结构的房屋 ,如果不了解 砖、 瓦是怎么制作出来的, 就无法理 解砖 、瓦的特性、 弱点以及寿命, 也就使用不好砖、 瓦。 如果没见过砖瓦匠如何使用砖瓦 砌墙的, 就不知道有些砌法是中空的, 有些是实的。 不同 的砌墙技术, 其承重能力如何保温性 能如何, 等等 ,都无从得知。这样是无法使用好技术的 。同样, 无论是采用钢结构, 或是采用木结构, 都要对这些材料, 以及现存 的技术有一个比较通透的 解 ,才能够做出靠谱的判断, 但并不是说架构师必须是所有技术的 专家 。比如木结构里面的 “榫 卯” 1 结构 ,架 构师可以 很了解并使用 。但让架构师自己来做 一个 “ 榫 卯 ” 结 构 , 则并不容 易 , 木工活要非常精细才行 。当架构师需要 一 个 “ 榫 卯”的时候,还是要找木工来解决问题,而不是花时间去学习木工,自己来做。

三、架构师不写代码会怎样

  1. 不能准确感知自己设计的架构是否有问题:如果仅依赖于“验证->反馈”,这样一个过程,会出现

    • 反馈的结果可能是错误的
    • 在出现问题的时候可能没人反馈
  2. 长期的疏离代码,会让架构师的技术判断力下降,感知力的缺乏,会让架构师的架构能力越来越弱
  3. 只写代码的架构师更加不合格
    作为架构师,如果把大部分心思花在写代码上,代码感知力是很强了,可是更上一层的高屋建瓴的能力,也即是架构师的核心竞争力,就会下降了,所以一个架构师花费少量的时间去写代码就行了

四、架构师需要具备的能力

沟通能力

往往一个项目甚至一个产品的上线,需要多个团队共同协作,产品、业务、软件研发、硬件研发等等。

在三国中有一个非常著名的典故,叫做七擒孟获,为何诸葛亮要如此大动干戈呢,因为

一个人只有口服心服,才能好好地为你做事,才能让你无后顾之忧

而沟通能力就是具有,在跨部门的过程中,让其他部门的人心甘情愿帮助你的能力,并且在这种情况下,他们针对出现的情况还会给出合理化的建议,让你的工作做的更好。

领导力

架构师需要安排软件工程师做很多工作,具有影响力,能获得软件工程师的信任,能协助你把工作做的更好。

技术判断力

架构师每周都可以

  • 花两个小时,去写写代码,写写需求
  • 与其他部门和团队多沟通

以此在高屋建瓴和实际落地,两个层面把架构做好。

五、小结

本篇文章主通过

  • 架构师的定义
  • 架构师的误区
  • 架构师不写代码会怎样
  • 架构师需要具备的能力

介绍了架构师并讨论了架构师该不该写代码,并得出结论:架构师每周最好可以花费2个小时左右的时间写代码

架构师该不该写代码?相关推荐

  1. 架构师究竟要不要写代码?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! Talk is cheap, show me the c ...

  2. 架构师,是否需要写代码?

    中生代高级架构师社群 读完需要 9 分钟 速读仅需 3 分钟 小编:架构师是否需要写代码,这个话题已经记不起从何时开始,在攻城狮圈内成为一个经常拿来讨论的话题,上周中生代深度交流群群友们对此问题做了有 ...

  3. 阿里CTO程立:好的架构师,都是写代码写出来的!

    阿里CTO程立在访谈中提到,好架构师都是写代码写出来的,PPT是架构师必备的一个技能. 关于这段访谈的文字版如下: "反正我认为架构师是要写代码的.首先的话,好的架构师都是写代码写出来的.本 ...

  4. 架构师前辈告诉你:代码该如何才能自己写得容易,别人看得也不痛苦

    来源 | 编程新说 责编 | Carol 头图 | CSDN 下载自视觉中国 切身感受 在这个世界上,最难看懂的文档,永远是同事写的需求文档.最难看懂的代码,永远是同事写的业务代码. 我很纳闷,像Sp ...

  5. 架构师修练 I - 超级代码控

    可实现的是架构,空谈是概念 So don't tell me the concepts show me the code!  "不懂编码的架构师不是好架构师" 好架构师都是超级代码 ...

  6. 阿里P8架构师让我简历写精通AlibabaSentinel,结果收到P7的offer

    有些程序员可能不知道阿里的职级是怎么划分的,下面就给大家介绍一下: ​ 从图上可以看出来,P7是技术专家,薪资在30W-50W,但是股票给到2400股,在大环境不好的情况下,还能给到这么高的薪水着实不 ...

  7. 架构师如何教小学生写作文

    如何教孩子写小学作文 问题提出 基本套路 这集先说记叙文中的记人.叙事 谋篇 发生阶段,主要是铺垫 发展阶段,通常会变坏 高潮阶段主要是克服挑战.解决矛盾 结尾阶段要煽情 问题提出 儿子四年级了,对写 ...

  8. 不会写简历?阿里Java技术架构师教你如何写好你的技术简历

    我们来系统的梳理一遍面试流程,让你轻松成为面霸,拿到满意的offer! 本场聊聊将从招聘者和面试官的角度,主要内容如下:(以阿里巴巴为例) 1.岗位选择与简历投递 大型互联网公司的岗位是非常多的,阿里 ...

  9. 投递简历上百家,石沉大海了无音讯?阿里Java技术架构师教你如何写好你的技术简历

    你是否也遇到过这类问题? 投递简历上百家,石沉大海了无音讯? 一直找不到工作,很迷茫,不知道该不该继续? 那么没有面试机会的时候,我们如何通过简历打破僵局呢?在文章开始之前先给大家推荐一个免费的直播课 ...

  10. 一名年薪百万阿里P8架构师写给Java程序员一些建议(架构师必备)

    阿里P8架构师-Peter 毕业于海南大学,曾就职于阿里.苏宁易购等一线互联公司,十余年Java从业经验,系统架构师及微服务之先驱,JEECG急速开发框架的设计与布道者.重点关注微服务设计与编排.高并 ...

最新文章

  1. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(自定义分组的颜色)实战
  2. 向海龙回应“被百度开除”:离开是为了专心做投资
  3. 我有一个竞争方法,让用户去选择你的产品而不是别人
  4. 设计几个简单的汇编函数
  5. 分布式存储系统学习笔记(三)—分布式键值系统(2)—淘宝Tair
  6. vagrant 网络三种模式
  7. Win32软件开发: 按键精灵 鼠标模拟器(VibraClick)
  8. FFmpeg系列-2-命令行工具之FFmpeg
  9. 关于win8.1系统的网络用一段时间就会受限的原因及解决方法
  10. pycharm定时运行python脚本_Python脚本定期执行_执行python脚本_如何执行python脚本
  11. SPIR-V教程 -- SPIR-V介绍(一)
  12. python 数据可视化sns作图
  13. Linux valgrind java_linux下valgrind的使用概述
  14. 用python提取word到excel(excel可更新)
  15. 【万字长文】Dubbo 入门总结 ,一款高性能的 Java RPC 框架
  16. 如何评价深度学习相关顶级期刊论文难复现的问题?
  17. C++学习日记#1.1——四元一次方程组进行Sor松弛迭代法求解(现已推向n元一次方程组进行Sor松弛迭代法求解)
  18. sass/lsee 转换css 网站 SASS 转 CSS 工具,在线 SASS/SCSS 编译工具 - 在线工具-wetools.com微工具
  19. 数据结构(C语言版第2版)课后习题答案
  20. 海外商标国内公司如何入驻小红书

热门文章

  1. 0001 工作业务问题_滞纳金公式计算区别实例
  2. VOIP Codec 三剑客之 ISAC/ILBC -- ISAC (1) 介绍
  3. LinkList L 与LinkList L(LNode* L , LNode* L)的区别
  4. Win7安装VMware Tools问题
  5. 基于https的harbor部署与升级
  6. android webview最新版下载,Android WebView 支持文件下载的几种方式
  7. python视频格式转换_用Python+FFmpeg进行音视频格式转换
  8. 光大银行笔试真题解析,答题技巧
  9. 【Java实现PDF文件转换为图片】
  10. phpstudy php56 zend,phpstudy集成环境