为什么很多程序员没有升级到架构师?

本文分析了程序员难以晋升为架构师的原因,包括缺乏实践机会和对所需技能的误解。提出了从运维入手,通过解决实际问题和必要时跳槽来获取架构师实践机会的建议。

作者 | 泰斗贤若如

责编 | Elle

对我们程序员来说,发展的途径要么是走管理岗,从开发升级到项目经理甚至是部门经理;要么走技术升级路线。不过在技术路线方面,无法升级到架构师的程序员不在少数。一方面,在不少公司的高级开发岗位上,无法让程序员实践甚至接触到架构师的技能,另一方面,有不少程序员甚至不清楚架构师所需要掌握的技能和升级途径。所以从结果上来看,至少有5成的程序员止步于“高级开发”的程度,这是非常令人可惜的。

我这几年一直努力地从高级开发升级到架构师,目前虽然职位上没达到,但好歹多少也能干些架构师方面的活了。在本文里,将结合我自身和其它一些程序员的经历,分析不少程序员无法升级到架构师的普遍原因,由此向大家展示从高级开发升级到架构师的难点,并在此基础上给出相关的升级建议。

很多程序员在日常工作里无法接触到架构师的技能


大多数的程序员能在工作中接触到高级开发的技术,所以从初级开发升级到高级开发,难度并不大,但架构师就不同了。

比如在外包公司里,程序员大多是做重复劳动,业务变了,但用到的技术还是增删改查。或者在一些规模比较小的公司,项目组出于成本和质量监控的考虑,也未必会让程序员从事架构方面的工作。哪怕在一些技术含量比较高的互联网公司,出于业务封装的角度,一些高并发高可用的实现往往被封装在方法里,程序员仅仅是通过调用方法实现功能,未必能在代码层面,显式地看到架构方面的技能。

接触不到相关技能,单靠看视频看资料积累起来的技能,在面试过程中往往会不堪一击,从而无法应聘架构师的岗位,这反过来制约了程序员向架构师发展的脚步。

我有时候在面试高级开发的时候,会深入问些架构方面的问题,比如我问,你们系统里,模块间的通讯用的是什么组件 ,不少高级开发甚至是一头雾水,或者在他们眼里,更多的是调用方法实现功能。

不少程序员往往会深挖单机版的技能


很多工作中得过且过的程序员,在实现的功能通过测试以后,或许就无所事事了,而且这类程序员不在少数,在小公司或外包公司里,这类程序员往往会更多,说实现的,他们的竞争力和从培训班里出来的程序员没什么两样,或许就更熟悉业务背景。

或者有些程序员虽然上进,但会深挖单机版的技术细节,比如我问String对象的== 和equals方法有什么差别,或者,JVM虚拟机调优有哪些实践要点,此类回答他们会回答非常到位。这固然要比纯粹会写代码的程序员要好,但此类技能顶了天只能算高级开发的技能。如果在升级时过度追求这方面的技能,无异于缘木求鱼。

列举架构师平时要干的活,确实和高级开发有差距


上文是从客观和主观两个方面,讲述了架构师升级的难处,在讲述升级方法前,我们先来看下架构师究竟要干什么活,以此来明确努力的方向。

  • 1、需要搭建高可用的框架,比如就拿最简单的搭建数据库服务来说,得考虑如果一台MySQL服务器宕了,如何保证业务切换到另外一台机器上。

  • 2、需要考虑高并发的因素,从这个点展开,架构师至少需要会用nginx,mycat,netty,redis之类的工具,以及考虑搭建实现负载均衡的集群。

  • 3、需要把设计好的架构部署上线,或者哪怕上线动作是由运维来做,但架构师至少要知道如何把nginx集群等组件部署上线的活,由此架构师需要了解必须的linux命令和脚本,以及了解jenkins之类的部署工具。

  • 4、上述技能不是简单会用即可,如果在开发部署和运行过程中由问题,架构师得负责解决。这就要求架构师不能仅仅靠看视频知道如何搭建系统,更得具备针对netty等组件的debug能力,还得能通过看日志,知道集群的运作情况,如果集群出了问题,还得知道如何快速解决。

  • 5、不能仅仅关注技术,更得结合业务,把诸如抢红包之类的需求通过架构实现,这就要求架构师得知道各种组件的优劣,以此能选型并设计方案。

从上述对架构师的需求来看,从高级开发升级到架构师很难,也在情理中了。

从运维入手,熟悉架构师的入门技能


   升级到架构师很难,但绝非不可能,对于高级开发而言,从运维入手,或许能熟悉架构师的技能。

  • 1、比如先从ant脚本,jenkins脚本和linux shell脚本入手,能知道系统的部署方式,以及熟悉必备的linux调试技能。

  • 2、通过观察nginx或dubbo或zookeeper配置文件,了解各组件的运作方式,并能通过这些了解高并发高可用系统里负载均衡和失效转移等配置方式。

  • 3、可以观察线上相关的日志,了解系统部署的情况,以及从架构层面了解诸多组件间的关联。

在上述步骤里提到的脚本和日志,在平时工作中只要上点心,应该可以看到,或者我们可以和运维人员多交流请教,上述组件部署和配置的知识也不难知道。在这个过程中,暂时没涉及“修改配置”和“搭建组件”等技能,毕竟这属于熟悉阶段。

多解决实际问题,了解组件的关键配置,并了解组件的底层代码


程序员在熟悉基本的部署和架构方面的技能以后, 就可以参与解决一些实际的问题了。在公司里,测试和上线阶段出现的问题不能算少,其中也会包含很多和架构相关的问题,比如kafka没配好,导致消息积压,或者dubbo超时时间配置过长,导致调用链路超时失效,或者再如redis超时时间过长,导致OOM异常。类似问题的种类五花八门,只有想不到的,没有不可能出现的。

刚开始,程序员可以跟在资深人员之后查问题,或者找到问题后,再手动复盘一下,学习架构师分析和解决问题的入手点,一来二去,一定能熟悉组件的配置,并了解组件的底层代码,更能熟悉配置各种框架组件的实施方案。

这个阶段依然属于“见习”,但至少能从实践角度,掌握架构师所需的技能。对比自己通过看视频,以闭门造车的方式积累架构师的技能,通过上述步骤得到的相关经验来源于实际,无疑值钱得多。

必要时,得通过跳槽,争取架构师的实践机会


其实在小公司甚至是外包公司里,都有机会了解甚至实践上文提到的架构师相关技能。程序员通过上述步骤掌握架构师的相关技能后,如果再加以实践机会,就能很快成为名副其实的架构师。

这种实践机会在大公司里不难找,但在小公司里或许就不多了,不过也不要紧,这时如果再出去面试架构师的岗位,基本上就没什么难度了。我们来看下架构师的面试问题。

  • 1、如何部署nginx(或其它组件),从而实现高可用?

  • 2、Redis集群里,容灾一般是怎么做的?

  • 3、Kafka消息队列里,如何实现消息重复?如何确保消息不被重复消费?

  • 4、或者是问底层的问题,比如说下netty里的读写索引工作方式。

或者在目前阶段,大家未必能回答好上述问题,但一旦在运维层面了解过组件的搭建方式,或者通过排查实际问题了解过组件的运作和交互方式,再专研下相关底层代码,哪怕没太多的架构师实践经验,此类问题也不难回答。

或许一个没太多实践经验的架构师,在公司里日子会很难过,可以会让领导和组员感觉实践经验不足,但大多数架构师也都是通过实践一点点积累相关经验的,在这个阶段里,如果再肯多听多看多问题,升级到资深架构,就指日可待了。

总结,升级到架构师后,会有更多的机会


其实对于我们做IT的人来说,升级到架构师未必是唯一的发展途径,但不是每个人都适合搞管理。如果走的是技术加成路线的话,从架构师到技术专家,或许是一条比较合适的发展途径。

对于高级开发而言,或许真有30岁或35岁现象,毕竟高级开发所需的技能很容易被毕业生或培训生掌握,年纪一大了就没竞争优势了,但正是因为升级到架构师不是那么容易,到35岁时,或许还有竞争的能力。

而且,一旦升级到架构师,退则可以找个小公司做技术负责人,以求小富即安,从而不会像高龄码农那样被淘汰;进则可以再到大厂里去磨练一番,然后再通过各种途径拓展影响力,那么真就可以说成为技术大牛了。反之,如果止步于高级开发,虽然也能通过跳槽提升工资,但格局始终无法像架构师那样开阔了。

声明:本文为作者投稿,版权归作者个人所有。

【End】

热 文 推 荐 

渐进式 Web 应用程序是移动开发的未来吗?

微信「扫码支付」被诉侵犯专利权;苹果回应“iOS 13 频繁提醒 App 定位”;Python 2 退休 | 极客头条

如何通过 Web 实现防御木马、病毒...... | 原力计划

2019 年被“杀”死的那些技术!

暴力裁员、爬虫被抓、QQ 注销……2019 年程序员大事记

大数据中台之Kafka,到底好在哪里?

新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结

“区块链岛”女记者调挖矿事件时惨遭暗杀,时隔2年依旧无法沉冤昭雪……

你点的每个“在看”,我都认真当成了喜欢

<think>好的,我现在需要帮助用户了解从mainframe程序员转型为云架构师所需的技能和时间。首先,我得回忆一下mainframe和云架构师各自的特点。Mainframe程序员通常熟悉COBOL、JCL、DB2等传统技术,而云架构师则需要掌握云计算平台(如AWS、Azure、GCP)、容器化技术(如Docker、Kubernetes)、基础设施即代码(如Terraform)、微服务架构等。 接下来,我需要考虑转型过程中需要学习的技能。可能包括云计算基础,比如IaaS、PaaS、SaaS的区别,虚拟化技术,还有云安全、网络架构等。此外,容器化和编排工具是云环境中的重要部分,需要学习Docker和Kubernetes。基础设施自动化工具如Terraform和Ansible也是必备的。微服务架构和相关的开发实践,比如RESTful API、Spring Boot,可能也需要掌握。另外,持续集成和持续部署(CI/CD)流程,比如Jenkins、GitLab CI,也是关键。 然后,时间估计方面,这取决于用户现有的基础和学习强度。如果有编程经验,但需要补充云计算相关知识,可能需要6个月到2年不等。分阶段的话,基础阶段可能3-6个月,进阶阶段6-12个月,实战阶段可能需要3-6个月。 还要考虑参考之前提供的引用内容,比如系统工程师需要多方面技能,这可能类比到云架构师也需要广泛的知识。引用中的抓住机会和项目经验也很重要,建议用户参与实际项目来积累经验。 需要确保回答结构清晰,分点列出技能和时间估计,并提供学习路径建议。同时,生成相关问题,可能涉及转型挑战、认证推荐、项目经验获取等。</think>### Mainframe程序员转型云架构师的核心技能与学习路径 #### 一、基础技能转型(3-6个月) 1. **云计算基础体系** - 掌握三大公有云平台(AWS/Azure/GCP)的核心服务,包括计算实例$EC2$、对象存储$S3$、虚拟网络$VPC$等 - 理解云原生十二要素原则,熟悉弹性伸缩、负载均衡、分布式存储等概念 - 推荐认证:AWS Certified Solutions Architect - Associate[^2] 2. **分布式系统原理** - 从单体架构向微服务转型,需掌握RESTful API设计原则 - 学习消息队列(Kafka/RabbitMQ)和服务网格(Istio)等中间件 - 对比mainframe的CICS事务处理系统与云端的无服务器架构差异 #### 二、关键技术栈升级(6-12个月) 1. **容器化技术** $$ Docker容器生命周期管理:\text{docker run → exec → stop → rm} $$ $$ Kubernetes集群部署公式:\text{Master节点} + N \times \text{Worker节点} $$ - 需掌握Pod编排、Service发现、自动扩缩容等核心功能 2. **基础设施即代码(IaC)** ```terraform resource "aws_instance" "web" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t3.micro" } ``` - 对比传统JCL脚本与Terraform/HCL的声明式语法差异 3. **云安全体系** - 从RACF安全模型转型到云IAM策略: $$ \text{最小权限原则} = \sum_{i=1}^n (资源访问需求 - 冗余权限) $$ #### 三、架构思维转变(持续过程) 1. **可用性设计** - 将mainframe的99.99%可用性要求转化为云端的多可用区部署: $$ \text{系统可用性} = 1 - (1 - AZ_1可用率) \times (1 - AZ_2可用率) $$ 2. **成本优化模型** - 建立云资源成本计算公式: $$ \text{月度成本} = \sum (计算实例成本 + 存储成本 + 流量成本) \times 优化系数 $$ #### 四、典型转型时间框架 | 阶段 | 主要内容 | 时间投入 | 里程碑成果 | |------------|---------------------------|------------|---------------------------| | 基础转型 | 云计算基础+1个云认证 | 3-6个月 | 完成首个云端PoC部署 | | 技术深化 | 掌握3+核心云服务 | 6-12个月 | 设计实现混合云架构方案 | | 架构实践 | 主导完整云迁移项目 | 12-18个月 | 获得高级云架构师认证 | | 持续进化 | 跟踪云原生技术发展 | 持续 | 建立技术领导力 | #### 五、加速转型的关键策略 1. **利用既有优势转化**:将mainframe的批处理经验转化为云端数据流水线设计能力 2. **参与云迁移项目**:从传统系统改造入手积累实战经验[^2] 3. **构建混合架构视野**:理解z/OS与Kubernetes集群的异构协同机制
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值