每个程序员都应该成为架构师

2024-09-04 12:32

本文主要是介绍每个程序员都应该成为架构师,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要想交付最出色的成果,每位开发人员都应当身兼架构师与问题解决者这两大角色。

有时候我的脑袋里会突然出现像“微决议”这样的念头。基本上,微决议所要探讨的是我应该开始做,但在重要性方面还达不到人生高度的事物。

观点:每个程序员都应该成为架构师

而在审视过程当中,我发现了一位读者朋友提出的问题。

您提到您自己实际并不喜欢“架构师”这样的头衔。我对此表示赞同,因为架构师这样的词汇在不同企业当中有着不同的意义。

根据我的个人经历,架构师可能需要编写代码、设计UML图表或者单纯只是撰写Word文档。

您难道不觉得开发人员本身就应该是一位身兼架构师与问题解决者两类角色的程序员吗?

就我的职业生活来讲,我担任过这里提到的全部工作岗位,因此我的观点可能在一定程度上存在偏差。不过换个角度来看,我们不妨将问题整理成另外的形式,即“是不是每位开发人员都应当拥有架构师头衔”或者说“是不是每位架构师都应该承担开发者职能”?

在对问题做出这样的简化之后,我给出的答案是肯定的。

是的,每位开发人员都应当是一位身兼架构师与问题解决者两类角色的程序员。另外,每一位开发人员都应当冠有架构师头衔。是的,每位开发人员都应当身负“架构师”职责。说到这里,我不禁想对架构师与开发人员之间的差异进行探讨。

下面来看程序员/软件工程师与架构师之间的区别所在:

• 关注范围:程序员专注于具体细节,而架构师专注于“宏观视角”。

• 领导关系:程序员处于被领导地位,架构师则扮演领导角色。

• 资历背景:架构师的从业时间一般比程序员更长。

• 气质特性:架构师是重要的梦想家,而程序员则是面向繁琐任务的实干者。

• 技术取向:架构师做出选择,而程序员提供选项。

• 技能:架构师的技能水平高于程序员。

• 代码:架构师需要编写之代码平均少于开发人员。

• 组织互动:架构师所参与之“业务”会议数量远多于程序员。

• 薪酬:架构师薪酬水平高于程序员。

• 自身价值:架构师的价值要高于程序员。

这些就是整个行业对于两者之间区别的看待方式。架构师从业经历更丰富、重要性更高、技术价值更为可观,因此拥有更迫切的市场需求;而正因为他们太过关键,因此主要精力往往被用于其它事务——而非编写代码——身上。这显然是种混乱的定义方式,甚至自相矛盾,而角色的内在定位模糊性也让我们很难通过一刀切方式作为其评判标准。也正因为如此,某些企业中的架构师会负责构建UML图表,而另一些架构师则干着跟开发人员完全一样的工作。

观点:每个程序员都应该成为架构师

问题在于,我们往往倾向于用一种笼统的定义来概括实际上极为复杂的概念,而对细微差异的关注缺失则导致定义与实质间存在巨大错位。

事实上,我们的生活稳步前行,每个人都经历过年轻、缺乏经验的起步阶段,并随着时间的推移而逐渐提高、成熟且最终获得源自努力的回报。我们的工作环境认可这种逐步完善的趋势,并立足于唯才是举的制度奖励这种成长。在这条道路上,我们会慢慢迎来属于自己的“资深”以及“首席”等花环,而领导能力则体现为“架构师”、“经理”以及“主管”等头衔当中。头衔等级越高,我们身上肩负的职责与期许就越是重要。另外,在这一推进过程中,我们会不可避免地在领导及业务层面步步上升,并由原本“注重细节”及“勤奋”的青年转型为“着眼于宏观”且“有远见”的管理者。到这时,我们已经不再执行具体的任务,而更多成为“思维领袖”。

在这样的背景之下,“架构师”角色以及“架构师”头衔都有着确切的意义。二者皆是对大家任务执行效果的一种表彰,意味着各位已经成长为较原先更重要、更有价值且更出色的职能角色。这也意味着我们接下来要从事的是不同于以往的工作内容、扮演不同于以往的角色并承担不同于以往的责任。

但如果我们暂时抛开这些价值判断,那么这两种角色之间还有哪些其它差别?

我们可以将这种差异进一步加以具象化,那么此类差异往往广泛存在于各行业及学科当中。一类角色负责制定决策,即着眼于“宏观”而较少“亲自上阵”,而另一类角色则执行更具针对性的任务,负责“亲手”解决问题。说到这里,我们可以将其比作律师事务所中的工作。事务所合伙人负责案件中的重要决策,而其它更具体、更简单的任务则由助理完成。

但需要强调的是,炙手可热的合伙人与看似平凡的助理所负责的工作在本质上并无区别——他们都只是整套业务体系中的运行点之一,负责完成被委以的任务。考虑到这一点,我们可以将同样的道理引入到编程世界当中:经验丰富的开发人员负责制定技术决策(并建立以其为核心的实现体系),编写难度最高以及/或者最为关键的代码片段,同时运营团队并为新晋开发人员们分配他们力所能及的任务。

响应文章开头,每一位开发人员都应当在一定程度成为架构师,或者说每位开发人员都应当同时着眼于软件的宏观定位与具体细节。有些开发者技能水平更高及经验更为丰富(自然也拥有更理想的薪酬待遇),而他们同时也了解应当如何制定技术层面的重要决策并将任务分配给谁来完成。不过从根本角度讲,其角色定义与普通开发人员并无区别——只是其信任层级更高,或者说达到了每位开发者都应达到的信任水平。

如果我构建一支队伍以构建软件解决方案,那么绝对不会刻意寻求两种截然不同的成员:一部分专门作为思维领袖执行广义规划与技术决策,而另一部分负责日常任务与细节工作。最理想的场景是团队里的每位成员都知道该如何解决问题,并通过这两种有所区别的立场与眼光审视问题的定义与细节走向。从另一个角度讲,同时拥有这两种审视能力的开发人员也必将成为企业中的IT摇滚巨星。

这篇关于每个程序员都应该成为架构师的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136027

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

系统架构师-ERP+集成

ERP   集成平台end:就懒得画新的页

编程应该用 Mac 还是 PC ?

『有人的地方,就有江湖』—徐克。笑傲江湖。     序     一个竞争的市场,就会有对立的产生,这世界存在著很多不同的领域,领域好比是个江湖的缩影,因此就有许多门派的纷争,例如说浏览器领域有著最大宗的IE派,门派成长速度飞快,武功版号跳的跟台湾物价指数一样快的Chrome门,不断被模仿,一直被超越的Opera派;韧性极强,一直对抗几大势力的Firefox派等等,程序语言也有自己的领域

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

如何成为一个优秀的测试工程师

链接地址:http://blog.csdn.net/KerryZhu/article/details/5250504 我一直在想,如何将自己的测试团队打造成世界一流的团队?流程、测试自动化、创新、扁平式管理、国际标准制定、测试社区贡献、…… 但首先一点是明确的,就是要将每一个测试工程师打造成优秀的测试工程师,优秀的团队必须由优秀的成员构成。所以,先讨论“如何成为一个优秀的测试工程师”,

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心