前言

Github:https://github.com/HealerJean

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

本文抄自:https://www.jianshu.com/p/dbc4adf2d186

一、开发者和架构师

1、最大的区别是什么?

答案:开发者和架构师之间最大的区别就是技术领导力

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

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

答案:经验

架构师都是经过时间逐渐发展成为架构师的。需要有退后一步看代码的能力,从而理解特定软件系统背后的设计决策。退后一步才能看到“大局”,这是架构师必须掌握的核心技能。

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

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

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

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

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

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

3、单元测试要严格

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

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

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

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

4、架构师的基本素质

1)沟通能力

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

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

2)领导能力

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

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

3)抽象思维和分析能力

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

4)技术深度和广度

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

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

5、技术主管工作

技术主管,又叫「技术经理」,英文一般是 Tech Leader ,简称 TL。随着工作经验的不断积累,能力的不断提升,每个人都有机会成为 Team Leader。然而在机会到来前,我们必须提前做好准备,对 TL 的工作职责有一定了解。当然,这也会为当下更好地配合 TL 工作打下基础。

「技术主管」是开发团队中的某位程序员需要对一起创建系统的整个开发团队负责时所承担的角色。通常他既要对最终交付的软件系统负责,另外也会像一个程序员一样去开发实现系统。

一个技术主管的 60%70% 的时间可能花在了开发任务分解分配、开发实践、技术架构评审、代码审核和风险识别上,而余下的 30%40% 的时间则花在为了保障系统按时交付所需的各种计划、协作、沟通、管理上。和团队管理者不同的是,技术主管的大部分管理工作都是针对具体研发任务和技术事务的。

二、技术团队领导者修炼之路

技术团队领导者的职责之一是支持队友的自我发展。培养一支拥有知识渊博、经验丰富的工程师的高性能团队应该是领导者的最终目标。但它也伴随着一个问题:

1、坏领导

⬤ 微观管理——他们只是分配任务,不允许集体决策。

⬤ 不要为产品发现做出贡献——他们不会试图理解要解决的真正问题。

⬤ 不要管理期望——他们不专注于课程纠正,不提高团队的技能组合,也不为员工寻找最有影响力的举措。

⬤ 是看门人,而不是推动者——他们不是找到解决方案,而是“保护”团队,直到他们获得100%的要求。

2、好领导

⬤ 管理人才——挑战和培养工程师,或通过良好的招聘来填补空缺。

⬤ 管理预期——将团队的重点放在结果上,而不是投入上。

⬤ 管理人——让人们感到被重视、有动力和生产力。

⬤ 管理影响——将人员分配到尽可能最好的举措。

⬤ 管理产品——深入了解他们试图解决的问题,以建立最佳解决方案。

⬤ 管理技术——维护技术债务,改善开发人员体验,使技术堆栈与产品战略保持一致,制定技术标准、KPI或SLI/SLO等。

3、如何打造一个好氛围的技术团队

维度 具体措施 好氛围团队特征 差氛围团队特征
团队文化 明确目标与价值观(如 “开放创新”“快速迭代”) 成员目标一致,主动协作 目标模糊,成员各自为战
  建立透明沟通机制(匿名反馈、扁平化沟通) 沟通无层级壁垒,敢于表达不同意见 沟通低效,信息不透明
  鼓励试错,将失败转化为经验分享 创新积极性高,乐于尝试新技术 害怕犯错,创新动力不足
协作机制 职责清晰,分工灵活 协作高效,任务推进顺 职责不清,互相推诿
  统一技术工具与流程规范(如 Git、Jira) 技术协作标准统一,减少内耗 工具流程混乱,沟通成本高
  定期复盘协作瓶颈,优化流程 问题及时解决,不积压矛盾 问题长期搁置,矛盾激化
成员成长 提供技术培训与晋升通道(技术 / 管理双线发展) 成员技能提升快,职业发展清晰 成长受限,成员流失率高
  认可激励(公开表扬、物质奖励) 工作成就感高,归属感强 缺乏认可,积极性低
  支持创新探索(预留 20% 时间用于技术预研) 技术探索热情高,团队技术领先 技术保守,难以突破
管理方式 管理者以身作则,践行团队文化 管理者与成员互信,凝聚力强 管理者脱离实际,信任缺失
  柔性管理,关注成员情绪与需求 工作节奏合理,避免倦怠 高压管理,成员疲惫焦虑
  平衡短期目标与长期技术价值(避免过度加班、技术债堆积) 技术架构可持续,团队竞争力强 技术债务高,系统脆弱
团队活动 组织技术分享会、代码走查等专业活动 技术氛围浓厚,知识共享频繁 缺乏交流,技术封闭
  开展非技术团建(户外拓展、聚餐、兴趣小组) 成员关系融洽,团队归属感强 成员关系疏离,团队松散
  庆祝项目里程碑与个人成就(生日、晋升仪式) 仪式感足,团队士气高昂 无仪式感,士气低落

三、技术主管和架构师

1、核心区别

维度 技术主管 架构师
核心职责 - 团队管理(招聘、分工、绩效)
- 流程规范建设(开发流程、质量标准)
- 跨部门协作(业务需求转化、资源协调)
- 系统架构设计(技术选型、模块划分、性能优化)
- 技术预研与创新(前沿技术落地)
- 技术风险管控(架构优化、故障根治)
目标导向 保障团队效能与业务成功(按时交付、资源高效利用) 保障技术可行性与系统稳定性(架构扩展性、长期技术债管理)
能力要求 - 管理能力(团队管理、项目管理、沟通协调)
- 技术背景(理解需求复杂度,不要求深度编码)
- 技术深度(精通核心技术栈、底层原理)
- 架构设计能力(抽象建模、方案权衡)
- 技术学习能力(跟踪行业趋势)
工作场景 - 需求评审会:排期、资源分配
- 项目开发:进度跟踪、任务协调
- 跨部门会议:业务需求对接
- 架构设计会议:技术方案选型
-代码评审:确保架构落地
-技术攻关:解决高并发、扩展性等难题
决策重点 人效、成本、业务优先级平衡 技术可行性、性能、可维护性、技术前瞻性
典型产出 - 项目计划、团队绩效报告
- 流程文档、跨部门协作方案
- 架构设计文档、技术选型报告
- 性能优化方案、技术预研报告
职业发展路径 技术管理岗(如技术经理、技术总监) 技术专家岗(如资深架构师、首席架构师)
核心挑战 团队凝聚力、跨部门沟通效率、业务与技术的平衡 技术方案迭代、架构落地推进、新技术与现有系统的融合

2、精力分配

角色 精力分配维度 具体工作内容 精力占比
技术主管 技术任务管理 开发任务分解与分配、技术方案评审、代码审核、技术风险识别、技术债管理 60% - 70%
  团队与项目管理 项目计划制定、跨部门协作沟通、团队进度跟踪、资源协调、成员绩效评估、冲突处理、需求优先级管理 30% - 40%
架构师 技术设计与创新 系统架构设计、技术选型决策、前沿技术预研、架构文档输出、技术方案优化、性能瓶颈分析 70% - 80%
  技术指导与协作 开发团队技术指导、代码规范制定、架构落地支持、技术培训、跨团队技术方案对齐、故障技术复盘 20% - 30%

ContactAuthor