导航:首页 > 程序命令 > 一个程序员到架构师的经历

一个程序员到架构师的经历

发布时间:2023-03-09 02:47:47

‘壹’ 从程序员到架构师要经历哪些阶段

架构师是什么?
架构师这词其实很有意思,很多人的Title是这个,但其实我们对架构师都干什么并没有太统一的认识。往大了说,比尔盖茨当年好像也称自己为架构师,往小了说随便一个小的软件上做设计的也说自己是架构师。所以如果把这个词泛化而不局限于特定的场景,估计单是说清楚什么是架构师就要花费不少口水。下面我们用一个取巧的办法,在一个具体的场景下来看看,架构师都该干什么,而不把这个词泛化,如果在特定场景下这个角色应该干什么清楚了,那它就可以为其它场景下提供不错的参考。
我们只考虑从头开发一款产品的场景,不考虑这款产品可能是个家族,可能需要在公司里与许多东西配合这样繁琐的事情。这样问题就简化成:当我们要开发一款新产品的时候,架构师都要干些什么?为让事情更具体,我们进一步假设公司想做一个Trello,Worktile这样的协同办公工具。
在产品初期除了UI这类东西,还能明确的一些关键需求大概是这样:

简单、迅速,追求极致的用户体验,这时也许能想到看板这样的功能
打入社交元素(任务分配与沟通时打入信息流的机制)
移动端支持
公司判断:如果产品能在1年内上线,时机比较好

其他的需求呢就是感觉上肯定有,但暂时说不清楚
基于这样的简单提示,长做程序的可能脑子里会立刻冒出来无数东西,比如:

快的确保?
看板里拖动的实现?
SaaS时伸缩性的确保?
数据库中表的设计?
数据库类型的选择?
移动端的支持方式?
人员的现状?
迭代式开发的支持?
... ...

但显然不是每个事情都要在架构设计阶段搞定,否则等于是被弄蒙了,这时候架构师的一个关键职责就是要能区分出哪些东西预先需要搞定,而哪些东西则要在迭代过程中解决。
一般来讲重置成本越大,牵涉的人越多的事情越应该由架构师预先搞定,否则就容易做无用功,对开发工作产生致命伤害。具体来讲这类事情由三个核心部分组成:

选定Tech Stack
概要设计,确立分工的基础
协同方式

下面来分别解释下这三个方面的具体含义。
选定Tech Stack是指要选定包括编程语言,基本框架等一系列东西,比如Trello选完之后大致是下面这个样子:
http://www.csdn.net/article/2014-07-28/2820883

‘贰’ 程序员进阶:怎么成为一个软件架构师

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。
⑴确定软件架构师在软件组织中的职责和充当的角色,确定其相应的必须具备的知识体系,确定软件架构师的职业及其相关制度,制定软件架构师的培养目标和培养方案。
⑵坚持以大学教育为主(特别是各软件学院在这方面可以大施身手),以项目实践为辅的教育方针。大学可以聘请现有的软件架构师担任核心课程的讲师,通过学校教育,系统学习软件架构师所必需的知识体系;通过项目实践使其具有初步的软件开发和设计经验,逐步成长为一名合格的软件架构师。
⑶作位第2条的补充,聘请现有的软件架构师,个人认为适合以讲座的形式在学校开展。
⑷对国外一些大公司的软件架构师的培训和认证予以支持,但是在认证的过程中必须坚持符合中国实际情况的原则。例如,在认证考试之前对考生的知识体系进行系统的测试和评估,在通过认证后的适当时间内进行重新认证和继续教育。
⑸建立完善的软件架构师教育和认证制度,使得通过认证的人员能够在实际的软件开发中成为称职的和优秀的软件架构师。并通过此制度能够为国家培养出更多、更优秀的软件架构师,解决当前软件架构师急缺问题。。

‘叁’ 如何从程序员走向架构师

如何从程序员走向架构师。首先,作为程序员,必须熟练使用各种框架,了解其实际安装的原理、jvm虚拟机原理,云南昆明电脑培训认为了解jvm能够让您编写性能更好的代码。


技术归纳

熟悉tcp协议,为了创建三握手连接和断开四次握手的整个过程,不能优化高并发的网络应用;熟悉http协议,特别是http头,电脑培训认为没有五年多的大量工作无法理解session和cookie的生命周期以及它们之间的关系。

系统集群;负载均衡;反向代理;静态与动态分离;静态网站。

分布式缓存技术memcached,redis,是提高系统性能所必需的。总之,昆明北大青鸟发现把硬盘的内容放入内存提高速度,顺便算法的整合性hash。

数据库设计能力,必不可少的是mysql,最基本的数据库工具易于使用,它的基本参数优化,缓慢的查询日志分析,主从副本配置,至少成为半mysqdba。其他nosql数据库,如mongodb。

成为架构师不是了解很多技术就行了,这些都是解决问题的基础和工具,不懂这些知识是无法提出解决方案的,云南计算机学习认为这是成为一名架构师所必备的。


‘肆’ 如何从程序员到架构师

程序员到架构师的技术成长之路分为几个典型的阶段:工程师 - 高级工程师 - 技术专家 - 初级架构师 - 中级架构师 - 高级架构师,总的成长原则是每个阶段都需要“积累经验、拓宽视野、深度思考”。

‘伍’ 程序员几年能够成为架构师

五年以上。

它们往往要求工作年限在5年以上,需要求职者有过3年以上的系统设计经验,精通各种架构模式和系统框架,反观自己却一个条件都不满足。

软件架构师就是这么一个让人向往,但又让人望洋兴叹的一个职位。就像建筑设计师总有成为总设计师的梦想,航天工作者总有成为总工程师的壮志,相信每一个软件工程师都有过成为软件架构师的想法。

引用维基网络里的定义,软件架构师的职责就是在软件系统研发中,负责依据需求来确定主要的技术选择、设计系统的主体框架结构,并负责搭建实施。

普通程序员可以利用搜索引擎(网络)寻找答案,经常性找不到好的解决办法,然后更换技术方案,顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。

算法是程序员的重中之重,掌握算法能力才能处理复杂环境,才能对系统做出性能调优,遇到性能瓶颈之后才不会束手无策。

表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。

‘陆’ 请问从java工程师成为一名架构师的学习路线是什么样的

对于java工程师成为一名架构师如何进阶学习及掌握应有的技能体系在这做出一些建议!同时大家可以到知乎专栏“动力节点视频教程资源库”看更架构师的文章,欢迎大家来关注阅读!
可以骄傲地说,Java程序员应该是这个世界上最为广泛的工程师群体。在最新的2019年3月编程语言排行榜中,第一宝座依旧是Java,可见Java强大的生命力。不过,我发现身边不少程序员朋友,对Java的掌握仅限于使用 Java 语言和 Java 生态里的技术框架做功能实现,很少有人去了解 Java 的底层动力 JVM 的运营机制,以至于技术水平和认知停滞不前,最终成了CRUD 研究员。

同时也为那些针对2到5年及以上工作经验的想在技术上提升到一定高度甚至想往架构师发展的Java程序员提供一份系统详情的架构进阶路线,从广度到深度架构图还比较全面的,里面的技术包涵了Java高并发、微服务、源码分析、源码分析、高性能、分布式等技术,这些也是目前互联网企业比较常用的技术,那么来详细看看。

JVM与性能优化
JVM作为Java语言的基础,虽然平时工作中真正运用到的时候可能并不多,一个程序员想要上升到高级层次,那就必须知道Java到底是怎么运行的,这就逃不开JVM。想要告别增删改查和简单开发,而是去做Java性能分析和调优工作,那么,Java虚拟机绝对是一把助力的利剑。学习Java虚拟机的原因,本质是让你了解Java程序是如何被执行且优化的。这样一来,你才可以从内部入手,达到高效编程的目的。同时,你也可以为学习更深层、更核心的Java技术打好基础。

框架源码解读

我认为有三个维度来说明:这个框架是为了解决什么问题而诞生的?这个框架的核心思想是什么?这个框架适合应用到哪些场景?说到思想,我觉得编程的灵魂就是思想,没有思想的编程和咸鱼没什么区别。“不要重复造轮子”,当时听了赶脚这句话挺高大上的,现在我认为这句话只能在某一方面是正确了。首先我来说一下为什么要学会造轮子--因为你会造轮子后,用别人的轮子时才会明白其原理,用的时候才会得心应手,如果你对一个框架的理解只是停留在用,用的多熟练的阶段的话,那么你就是一个“码畜”,别人随时可以替代你。或许有人会说,项目时间紧根本不允许你写一个轮子、你写的还有那些大牛们写的好吗等理由反驳。但我想说的是:我没说项目中非得用自己写的轮子,自己写的轮子不一定要和别人比,因为造轮子的目的是要理解这些轮子的思想。说这么多其实就是想告诉大家学习框架要理解框架的底层的原理,要掌握的就是最常用的原理。

分布式架构
近年来随着服务体系的不断庞大以及用户量的迅速增长,传统单一应用架构已经无法满足我们系统的需求,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。分布式的处理方式越来越受到业界的青睐——计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。同时分布式也成为Java程序员面试不可缺少的一部分知识,尤其是对现在工作2到5年的工程师来说分布式无疑不是一项加分技术。

微服务架构
虽然很多文章都说微服务架构是复杂的、会带来很多分布式的问题,但只要我们了解这些问题,并找到解法,就会有种拨开云雾的感觉。微服务架构也不是完美的,世上没有完美的架构,微服务架构也是随着业务、团队成长而不断演进的。最开始可能就几个、十几个微服务,每个服务是分库的,通过 API Gateway 并行进行服务数据合并、转发。随着业务扩大、不断地加入搜索引擎、缓存技术、分布式消息队列、数据存储层的数据复制、分区、分表等!

总结
不管是学什么技术,最终都需要你进行归纳、整理,才能把所学的东西变为自己的。工作为什么要写日志,平时学习为什么要写博客,其实就是在构建自己的知识体系。在学习的过程中多做笔记,多做总结,习惯一旦形成,久而久之,便会印在你的脑海里,你下次再被问到这一问题时,你就可以用自己之前总结过的内容来回答。

‘柒’ 如何从普通程序员晋升为架构师

程序员晋升架构师的十项必备技能
1、卓越的程序员 Fred George先生说:“不编程的架构师的职业生涯是短暂的”。他说这句话的背景主要是针对有些架构师的设计与实现有断层的问题而言的,因为如果架构师不去 实践,只是想当然的认为“没问题,这个想法能实现”,那么对于项目的落实而言是个很大的隐患。支付宝架构师冯大辉也表示过,架构师是一个比较“虚”的岗 位,主要的问题都在“落地”的过程中。--ITJOB--
2、抽象思维 很多优秀的架构师们都一致的表示,逻辑思维和抽象思维能力是一个架构师最重要的素质。eBay的 Randy Shoup先生称拥有条理清晰的逻辑思维能力的人“就像稀有动物那样难找”。Fred George则表示“驾驭概念的技能,在我看来是每一个人最高的潜力”,并表示自己不太介意这样一个苗子在其他方面的技能和经验的匮乏,因为在他看来除了 思维之外的其他因素都是可以培养的。 --ITJOB--
3、技术前瞻性 有人谈到技术高手与架构师的区别就在于,架构师不光是着眼于现在,不仅仅局限于开发细节,比如如何调用,如何并发等等。而是跳出三界外,考虑一下面向未来问题和潜在风险的应对之道。--ITJOB--
4、问题解决大师 只是,架构师之所以为架构师,是在于他们在面对庞大系统之时,仍然能够敏锐的发现其底层之真实。这不仅需要此哲学层面的“内功”,还需要架构师具有多领域知识和经验的积淀。--ITJOB--
5、多领域知识 架构师身为一名技术领袖,需要通过发散知识的光芒来统御开发团队的。如果只是对本行业知识做到烂熟于心,那还仅仅是一名熟练工的水平。要想晋升更高的层次,还需要跳出“只缘身在此山中”的困惑。--ITJOB--
6、沟通能力 做到人性化的沟通,需要我们在平时就进行培养。写出大部头的架构书,有的时候并没有用VISIO画出的简单架构图好理解。人对图形理解远远大于对文字的理解,直观简单的UML图可以极大的方便程序员理解架构师的意图。--ITJOB--
7、内力 很多人理解的内力就是开发技术,包括语言的掌握、对框架的掌握、数据库管理能力、安全管理能力等等。但是我们看到,架构更多的内力体现在对技术的综合运用上,光会编程的程序员,最多就能做到高级程序员,也就是技术实现上的高手。 --ITJOB--
8、权衡取舍 Fred George先生提出了“短期滥用”的说法,即在系统能够承受的范围内做出一些妥协。在ATAM方法中,分析的思路是基于“情景”的:你需要提出各种可能 的情景,然后来证明在每一个用户使用场景中,系统的哪一些内容是必要的、不可丢弃的——从而确定哪些部分是暂时可以不予考虑的。--ITJOB--
9、管控能力 架构师在管理和控制的能力上,需要有自己独到的见解,而不是简单的认为这是项目经理或者财务部门 的事情。身为技术专家的架构师,随不需要处理那些烦杂的日常管理。奇虎架构师李钊在一次接受采访时道出过架构师们的心声,技术人才转向管理就是莫大的浪 费。对,如果架构师只是一味的去进行项目管理,那就和其他市场人员没有任何区别了。在这里架构师所需要的管理与控制,其实是从技术的角度,对一些问题的控 制,特别是开发过程中的监控,而不是普通意义上的纯粹管理。--ITJOB--
10、艺术气质 一个优美的系统则是可以像有机的生命一样成长的,这是因为从系统开始架构的那一刻起,架构师就考 虑到这个系统以后将会面临的挑战,为系统的成长预留好空间。项目经理经常会对这位架构师提出的看似理想化的要求不置可否——项目经理只想着能够尽快以比较 低的成本实现客户的需求,然而这些充满艺术美感的想法其实是打造健康——因而优美——的系统的根本因素。--ITJOB--

‘捌’ 前阿里P9:架构师是如何炼成的

大家好,我是程序员菜菜。[太阳]

相信每个程序员心中都有一个成为架构师的梦想,但梦想是美好的,道路是曲折的。

可能很多人觉得 学习架构设计就像学习一门编程语言一样,先学习一下基本的语法,再研究一下细节和原理,然后实践一下就能够快速掌握。不过,真正实践之后,你会发现——架构设计的难度和复杂度要高很多。

前阿里架构师李运华(P9)在他的专栏里 总结了几个架构设计相关的特性:

1. 架构设计的思维和程序设计的思维差异很大。

架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。很多程序员在转换为架构师后,很难一开始就意识到这个差异,还是按照写代码的方式去思考架构,会导致很多困惑。

2. 架构设计没有体系化的培训和训练机制。

3. 程序员对架构设计的理解存在很多误区。

例如:要成为架构师必须要有很强的技术天分;架构师必须有很强的创造力;架构设计必须要高大上才能体现架构师的能力;架构一定要具备高可用、高性能……这些似是而非的误区让很多技术人员望而生畏,还没尝试就已经放弃了。

在他的专栏《从0开始学架构》中,李运华还提到了架构设计的目的。 从架构设计的 历史 背景,可以看到,整个软件技术发展的 历史 ,其实就是一部与“复杂度”斗争的 历史 ,架构的出现也不例外。

简而言之,架构也是为了应对软件系统复杂度而提出的一个解决方案,通过回顾架构产生的 历史 背景和原因,我们可以基本推导出答案: 架构设计的主要目的是为了解决软件系统复杂度带来的问题。

这个结论虽然很简洁,但却是架构设计过程中需要时刻铭记在心的一条准则,为什么这样说呢?

首先,遵循这条准则能够让“新手”架构师心中有数,而不是一头雾水。

“这么多需求,从哪里开始下手进行架构设计呢?”。“架构设计要考虑高性能、高可用、高扩展……

这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”。

“业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?”。

以上类似问题,如果明确了“架构设计是为了解决软件复杂度”原则后,就很好回答。

“这么多需求,从哪里开始下手进行架构设计呢?”—— 通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。

“架构设计要考虑高性能、高可用、高扩展……这么多高 XX,全部设计完成估计要 1 个月,但老大只给了 1 周时间”—— 架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题。

“业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?”——理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂点相似的方案。

其次,遵循这条准则能够让“老鸟”架构师有的放矢,而不是贪大求全。技术人员往往都希望自己能够做出最牛的东西,架构师也不例外,尤其是一些“老鸟”架构师,为了证明自己的技术牛,可能会陷入贪大求全的焦油坑而无法自拔。例如:“我们的系统一定要做到每秒 TPS 10 万”。“淘宝的架构是这么做的,我们也要这么做”。“Docker 现在很流行,我们的架构应该将 Docker 应用进来”。

以上这些想法,如果拿“架构设计是为了解决软件复杂度”这个原则来衡量,就很容易判断。

得益于移动互联网技术的快速发展,李运华有很多的机会直接参与架构设计,这些架构背后的业务形形色色,包括社交、电商、 游戏 、中间件、内部运营系统;用到的技术栈差异也比较大,包括 PHP,Java、C++ 等。

虽然每次架构设计对他来说都是一个新的挑战,但正好也提供了非常好的机会,让他亲身体验不同的架构设计。在这个过程中,他不断学习、思考、实践、总结、改进、交流,逐步形成了自己的一套架构设计方法论。有了这套方法论后,不管什么样的业务,不管什么样的技术,按照这套方法论都能够设计出优秀的架构。

从普通程序员到大厂架构师,它指明了方向,非常不错的学习资料啦!

阅读全文

与一个程序员到架构师的经历相关的资料

热点内容
反诈骗app怎么找回密码 浏览:631
java方法和函数 浏览:420
程序员衣服穿反 浏览:959
java多类继承 浏览:159
怎么用多玩我的世界连接服务器地址 浏览:483
为什么华为手机比安卓流畅 浏览:177
javamap多线程 浏览:228
卡西欧app怎么改时间 浏览:843
jquery压缩图片 浏览:970
用纸筒做解压东西 浏览:238
神奇宝贝服务器如何tp 浏览:244
云服务器支持退货吗 浏览:277
贷款等额本息算法 浏览:190
根服务器地址配置 浏览:501
单片机是软件还是硬件 浏览:624
vivo手机怎么看编译编号 浏览:320
塑钢扣条算法 浏览:301
linux应用程序安装 浏览:414
linux怎么查找命令 浏览:431
安卓12原生和非原生是什么意思 浏览:277