关于问题如何从程序员到架构师?一共有 4 位热心网友为你解答:
【1】、来自网友【风哥草窝】的最佳回答:
从程序员到架构师,需要具备以下几个方面的技能和能力:
- 深入理解软件架构:架构师需要对软件架构有深入的理解,包括架构设计原则、重要的设计模式、架构的演化和变化等。需要了解不同类型的架构,如客户端/服务器、面向服务的架构、微服务架构等,以及如何选择和应用不同类型的架构。
- 具备全局视野:架构师需要具备全局视野,能够从整体上看待和规划系统的架构,考虑系统的可扩展性、可维护性、可重用性和可移植性等,同时也需要考虑系统的安全性和性能等问题。
- 熟悉多种技术:架构师需要熟悉多种技术,包括编程语言、数据库、网络、操作系统等,以及各种开发工具和框架。需要了解不同的技术在系统中的应用和优劣,以及如何选用最适合的技术来实现系统的架构设计。
- 拥有领导力和沟通能力:架构师需要拥有领导力和沟通能力,能够与不同领域的人员进行有效的沟通和协作,包括开发人员、测试人员、产品经理和业务人员等。需要能够为团队提供指导和支持,协调不同部门的工作,以保证系统架构的实现和成功。
新的技术趋势和应用场景,不断提高自己的技能和能力。需要参加行业活动和研讨会,与同行交流和分享经验,也需要阅读相关的书籍和文章,了解最新的技术趋势和最佳实践。
总之,从程序员到架构师需要具备深入的软件架构理解、全局视野、多种技术的熟悉、领导力和沟通能力、以及持续学习和自我提高的能力。需要不断地积累和提高自己的技能和经验,才能成为一名优秀的架构师。
【2】、来自网友【数通畅联】的最佳回答:
架构师从程序员中来,但不是每个程序员都能成为架构师,要想成为架构师,不仅要有一定的基础代码能力,也要对业务有所了解,更重要的是从思维的广度和高度进行提升。
1.基础能力
基础能力是一个程序员必备的能力,如基础代码开发、XML/JSON 操作、数据库、常用框架、工具等,深入一些的还有算法、设计模式、高并发、线程等内容。如果要成为架构师,这些内容是必须要了解和掌握的,所以在平时要多分析源码,分析底层的架构和算法,不断积累自己的基础能力。
2.业务能力
架构都是为系统服务的,为系统服务就是为实际业务服务的,所以对于一个合格的架构师,一定要了解业务,可以根据不同业务设计出最优化的技术方案来满足实际的业务场景,并且能充分考虑到高并发、稳定性和安全性等性能要求。这就要求我们在平时工作的过程中,注意了解业务、积累经验,将实际业务与产品开发相融合,提升业务能力。
3.思维能力
成为一名架构师,不仅是一名优秀的程序员,更要在思维的高度上超过程序员,加强思维的广度,能从分析、设计、开发、使用等多种角色的角度去看待项目和设计架构,同时要具备思维的严谨性和开放性,把握细节的同时也要接纳更多的技术方案,能够协调好各种方案的处理方式和使用范围,实现最优化的设计。
数通畅联专注于企业 IT 架构、SOA 综合集成、数据治理分析领域,感谢您的阅读与关注。
【3】、来自网友【木子教程】的最佳回答:
主要是大部分人没机会接触到足够的经验。现在程序员界也阶级固化了,很多人听上去牛逼的不得了,其实不过是一个组的主力而已,接触不到足够量的全局,你是无法了解什么是架构的。
很多行外的或者学生在问,这黑黑的窗口和一行行代码到底是如何变成一个软件的,这就是外人和程序员对软件的理解不同,相对的,普通程序员,也无法理解,他编的一个功能,到底在最后整体架构当中有什么作用。
在中小企业里,这种架构的要求还不高,但是已经可以看出雏形,那些仅仅跑上一两个微服务做个 react app 的小公司可能不会特别关心架构,这在我看来,和鬼火少年没什么区别,都在裸奔。一个宕机或者主程删库就能干掉一家这样的公司。
有相当多的小朋友对架构师天然有敌意,主要是因为他们无法理解软件或者系统,只有 40%是和编码有关的。无论是源代码版本控制,还是源码质量管控,再到 CICD,再到 HA,DR,这一切都需要一个好的架构师来有机的组成。而这只是一家最小型公司的东西而已,一旦公司变大,系统开始增加,不仅仅上面讲的复杂度成笛卡尔积增加,更出现了因为复杂度增加而导致人力不可能执行的情况,这种时候,监控软件的架构设计又出现了,在中型公司,也就是程序员数量大约小于千人的非外包公司,系统集成,系统自动化是架构的主要职责。
再往上,当一个公司更加巨型化,系统的维护性和优化都可以牵涉每年几百万。这种公司本身架构师团队都可能比一个微型公司大,这些人,普通人根本看不到…
如果还固执地认为计算机世界就是在 IDE 里写代码,拥有这种学生思维的码农,当然成不了架构师
【4】、来自网友【华为云开发者联盟】的最佳回答:
关于这个问题,首先要知道什么是架构。在软件开发中,架构普遍指通过某种特定的平台,而达到完成整体软件功能的设计过程。架构是软件设计中非常重要的一个环节只要需求和架构确定之后,我们认为这个软件也就基本上可以定型了。
软件架构的主要目的是希望能重用以前的代码和设计,从而提高开发效率;在保持系统稳定的前提下,扩充功能和性能。
如何提高系统设计能力
一般而言,开发人员在从事开发 3 年后基本可以逐步做出初步设计,再做设计 3 年基本能够具备架构设计的能力。架构设计虽然高屋建瓴,从顶朝下对问题进行分解并最终解决,但是你会看到真正所有能力却是来源于你日常的编码和日常功能模块设计的大量实践积累。
当然大部分软件开发人员并一定能够在其中具备软件设计能力,这涉及到思维意识的转变问题。比如前面提到的架构要具备自动化和复用,在设计阶段要有分层、分解、抽象、聚合等思维能力。
比如一个边缘设备日志收集上报云端功能,别人告诉你采用 MQ 去接收日志上报到云端,你去编码实现,那么具备的是编码能力,但是你自己能够对问题进行分析和建模,参考比较各种方案后,得出采用 Kafka 去接收并上报日志到云端,效率最高,并最终实现,那么就是具备了设计能力。
因此在日常的编码工作中,需要刻意去培养这方面的软件设计能力。
在架构设计领域,需要站在更高的层次,你面对的是一个完整的业务系统的构建。这个业务系统包括了底层技术框架的搭建,开源组件的选择,开发框架和分层设计这些非功能性的设计内容,同时考虑如何对各种业务进行分而治之。
架构设计能力的培养,我觉得可以从如下几个方面进行:
1.务实技术基础
想要造高楼,基础必须要扎实,这里以 Java 为例,需要务实的基础有:Java 基础、高并发、JVM 优化、设计模式、数据库和索引。
现在有很多好的视频网站,能找到视频教程,比如哔哩哔哩,视频教程有个好处就是可以快进,回退,并且看起来比较轻松,我喜欢看书,书看的比较仔细推荐书籍有:《On Java》(新版 Java 编程思想)、《Java 并发编程的艺术》、《深入理解 Java 虚拟机》、《高性能 Mysql》、《HeadFirst 设计模式》。。。。。。
一边看书,一边实战、一边记录写成博客系列教程,同时又能锻炼自己的文笔和口才,说不定还能收获一批粉丝,打造自己的个人 IP,扩大自己的影响力,如果写的好的话,还能转成收费专栏,还能有一部分收入。
2.培养软件设计能力
设计能力往往就是从编码和编程思维开始的。
首先是将重复的东西自动化掉,其次是将相似的东西通过参数抽象变成可复用的方法或函数,在抽象后来实现自动化。其次就是自动化后你会发现如何更好应对变化,为了应对变化你做了更多的抽象或接口设计,在这个过程中逐步积累设计能力。这一个步骤你会发现你的就是某种设计模式来解决的问题。
其二就是编码积累到一定量后,你可以看软件架构设计的书籍,先形成设计的完整思路和方法论,也可以看设计模式类的书籍,对设计模式有一个完整的了解,能够将日常编码实践的内容和设计模式进行对比分析。这样再遇到类似的问题,你可以少走自己探索的弯路等。
但是以上也仅仅解决了设计能力的问题。
没有解决架构思维层面的问题,架构思维的核心是全局能力,是高度的抽象和建模能力,是既要清楚业务,又要懂得技术的相互衔接能力。
当然大部分架构设计人员更加热衷于开发框架,技术平台,开源组件选择等,而忽视了如何从一个业务需求的提出,你能够通过系统分析,得出整个业务系统应该如何划分模块,如何设计接口,如何设计整体数据模型和数据库来支撑业务,同时你也能够想清楚你需要遵循什么样的开发框架和模式以及分层架构来完成某一个功能模块的开发。
这个事情实际相当有难度,大部分人员不具备这个能力。
但是为何很多人架构设计还是做得不错,简单来说整个信息化和互联网发展到今天,各种业务系统,电商平台,互联网应用你基本都可以找到类似的架构参考和原型,你只需要参考别人的做法去做即可。
比如你要做一个电商平台,具体应该如何分解各个子系统,或者是否建立各个中台能力中心,这些都有标准的做法,不需要你再去创新,你只需要参考别人实践去做即可。
但是如果你面对一个全新业务,你要去规划和构建整个业务系统的架构设计,模块划分,我相信大部分架构设计人员都无法做好这件事情。这个能力已经不是简单的你技术多牛,而是考察的全局思维和系统观,考察的是分解和集成,分类和抽象,问题分析和解决,模式匹配能力,这些能力统筹我经常谈到的思维能力。
如果一个人真正具备这种独立分析和解决问题的能力,具备系统思维的能力,你会发现他不仅架构设计做得好,其它很多事情都能够很好的完成。就是这个道理。
所以要具备这方面的能力,你可以先熟悉相关的业务域知识,也可以看看完整的类似面向对象的软件架构设计书籍,领域驱动建模书籍,传统的类似 RUP 统一软件过程方法论等。看看完整的业务需求如何通过流程分析,用例建模,对象建模,接口设计逐步落地。
3.培养创新和激情
创新并不只是想出一个新颖的点子,创新是把点子转换成经济力量的工作,按照 Joseph Tidd、John Bessant、Keith Pavitt 的理论,创新分为产品创新、过程创新、位置创新、范式创新。
- 产品创新:改变一个单位提供的东西(产品或者服务)
- 过程创新:改变产品或者服务生成或配送的方式
- 位置创新:改变引入某产品或者服务的前后关系
- 范式创新:改变单位所做业务的基础精神模型
为了能够创新,需要找到一定的边界,这能够让你有学习、适应和恢复的空间,而不必过多的关注其中产生的错误,如此让灵感变成为现实的创新产品。
保持激情能够让你感觉是在做自己的事,而不是别人让你做事,要在架构师工作中发现激情、保持激情,当激情被别人浇灭的时候,要学会重启激情,把难事做好,尽心尽力投入,用激情作为前进的动力,同时坚持锻炼,这样才能一直在架构师的路途上不断走下去,成为一名出色的架构师。
以上内容分享自华为云社区《【云驻共创】怎么提高自己的系统设计和架构理论水平》,作者:阿提说说。
以上就是关于问题【如何从程序员到架构师?】的全部回答,希望能对大家有所帮助,内容收集于网络仅供参考,如要实行请慎重,任何后果与本站无关!