解决方案架构师我需要懂代码吗_架构师不写代码,能行吗?

原标题:架构师不写代码,能行吗?

从什么时候起,技术角色的提升就意味着脱离技术与交付?CTO 不写代码已经引起诸多争议了,架构师也不写代码,能行吗?

就目前看来这似乎没什么问题。毕竟,写代码是开发人员的工作。架构师就应该在更重要的任务上忙碌。

但是,让架构师远离写代码会限制开发团队的潜力。当需求和业务需要发生变化时,也可能导致架构混乱。

所以对于业界的误解,今天我想要为架构师正名,接下来,就让我们来看看为什么让你的软件架构师参与写代码的工作是一件好事。不过,在此之前,我们首先来看看架构师的日常工作。

对于架构师是否需要编写代码一直有肯定或否定两种观点,其实这两种观点都有失偏颇。首先,我们看看支持架构师编写代码的理由:

1.能避免实现细节的失败。很多软件架构师由于思想和抽象思想本身的局限,比如抽象本身实际是对细节的无知和忽视,导致太多项目失败在性能等细节,还有API的精致设计以及组件的相互交互。

当然这些实现细节由代码架构师来编写也不一定能避免,或者认为只有代码架构师才能避免的观点也是片面的。

2.责任,代码架构师能够对自己的项目负责任,但是负责任也不一定必须亲自编码,一个好的架构师需要紧密与递交团队结合在一起。

3.反馈,代码开发是一个迭代过程,架构师应该随同产品开发一直跟进,当然跟进开发过程不代表亲自参与编码,不写代码也不意味着会缺乏反馈。

4.尊重,为了项目能够成功,架构师应该被尊重,架构师能够写代码与每天写代码是两回事,让架构师每天沉浸在代码细节编写中,反而是一种不尊重。

其他两个支持架构师必须编码的理由是:开发人员相比代码架构师实现项目系统的细节可能要困难;其次,没有架构意识的开发人员会将更多问题带入代码。这两个问题其实正是训练开发人员的机会,通过架构师的引导能够培养更多高级软件工程师。

其实,架构师编写代码也有很多缺点:

1.只见树木不见森林,一个架构师忙于编写调试代码会导致他没有时间或精力及时发现开发演进中的架构致命问题。

2.对于一个好的架构师,与其将时间花在编码上,好像是发挥其价值,其实更大的价值是进行代码审查以及与项目有关的知识技术分享上。

3.上下文切换是非常昂贵的,架构师一边负责架构设计的逻辑一致性,一边如果还要跟着项目编码几天,这两种上下文切换其实代价是昂贵的,比如某个人需要更改底层API代码,将之前隐藏的细节暴露给外部调用者,架构师会建议其在原来的API代码上再封装一层等等,这些都是为了维护系统的可维护性和演进发展的逻辑一致性,不至于代码系统随着时间推移变得混乱和不可维护。也就是说,架构师主要职责是对系统的架构负责,架构必须是可维护的,必须是可扩展的,长年累月地能保证做到这两点是非常不容易的,其中大量工作是与莽撞开发人员交涉。所以,架构师身兼数职导致上下文场景不同切换,几项工作可能都做不好。

让架构师亲自动手编码是一个短期思维,并不具有扩展性,只有知识分享才能在长期开发周期中具有可伸缩扩展性。架构师有时动手解决了一些架构问题,他必须向其他人讲解分析问题,以及自己的解决方案的理由,这些都是知识经验分享,这种文化会在开发人员之间传播。一个好的架构师会很快编码解决问题,但是如果不将其知识分享,就只是技巧技能的炫耀而已,而且会导致开发人员想:你能你就干,进而以后架构师越来越多地亲自动手编码;如果他花更多时间讲解培训相关知识,帮助其他人更深入理解这项任务,那么以后越来越多这样的任务就可以直接交给开发人员完成。

所以,很少或没有编码的架构师就被强迫积极分享他们的经验知识,从而能让项目减少对架构师的依赖,当然,不少架构师为了保护自己的工作总是通过塔布禁忌规定只有少数人才知道如何做这件事。

当然,有一些支持架构师不编码的理由也是值得商榷的,比如:

1.架构师不应该关心实现细节。其实架构师有责任提出最佳实践等细节,包括开源组件推荐等等,提供实现细节方案比较和知识分享。

2.架构师只要在这个项目写一次代码,然后就可以到其他项目了,这种观点也会给项目带来灾难,因为项目质量(维护性与扩展性)就难以保证了。

3.架构师是高级职务,可以陪伴客户打高尔夫谈业务需求,而开发人员都不知道怎么打高尔夫。这个观点在中国还是有点效果的。

最后总结:知识共享型的架构师不是不编码,而是不会编制太多代码,通常职责如下:

1.代码审查code review ,引导如何编码更好

2.结对编程。

3.考虑架构的改变,如果API经常被改变,或经常向别人解释这段代码是如何工作的,这些就有必要对代码架构进行变动,让其变得更易懂或更易于修改。

4.针对不断涌现问题,经常和队员讨论可能的解决方案。

来源网络,侵权删除返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习在地质灾害的文章--文献阅读

第一篇 Improved landslide assessment using support vector machine with bagging, boosting, and stacking ensemble machine learning framework in a mountainous watershed, Japan | SpringerLinkHeavy rainfall in mountainous terrain can trigger numerous landslide…

取消一个请求(Cancel)

CANCEL请求,就像名字所说的,是用来取消客户端发起的上一个请求的。 CANCEL请求UAS去终止上一个请求并且对上一个请求产生一个错误的应答。CANCEL对UAS已经给出终结应答的请求无效。所以,CANCEL请求的最大用处是取消需要服务器长时间处理的请求…

NYOJ88(数论)

题意明确,让计算出起始有m个金片的汉诺塔金片全部移动到另外一个针上时需要移动的最少步数是多少?(由于结果太大,现在只要求算出结果的十进制位最后六位) 解题思路:大家都很熟悉汉诺塔求移动次数公式为f(n1…

Linq 学习笔记(二)

Linq 学习笔记(二) 下面就来介绍一些查询的示例: 1。Linq查询 var racers from r in Formula1.GetChampions()where r.Wins > 15 && (r.Country "Brazil" || r.Country "Austria") select r;foreach (var …

机器学习在水文地质方面的文章--文献阅读

第一篇 Ensemble machine learning paradigms in hydrology: A review - ScienceDirecthttps://www.sciencedirect.com/science/article/pii/S0022169421003139?via%3Dihub第二篇 Stream water quality prediction using boosted regression tree and random forest models …

查询能力(SIP OPTIONS)

SIP方法OPTIONS允许一个UA来查询另外一个UA或者proxy服务器的能力。这个提供客户端一个手段来查询服务端支持的方法,内容类型,扩展,codecs等等。比如,在客户端试图在INVITE请求头中增加一个请求字段选项的时候,它并不知…

单体预聚合的目的是什么_高分子化学实验指导书-修改-2012

高分子化学实验指导书任课教师姓名:王小慧王小英所用教材:《高分子化学实验》何卫东主编中国科学技术大学出版社选读参考书:《高分子化学实验》梁晖卢江主编化学工业出版社一、教学形式1、课前,学生通过阅读参考书和《高分子化学实…

MemDC,GDI绘制注意点

最近绘制老犯同样的错误,记录下: 1.MemDC中的MemBmp大小一定要设定好,经常设小了,后面的绘不出来,同时最后dc.bitblt时,大小一定要和MemBmp 一致,同样经常是MemBmp必变了,bitblt的rcDest没变&am…

基于集成学习的不平衡数据集分类问题研究--文献阅读

参考文献 基于集成学习的不平衡数据集分类问题研究 - 中国知网https://kns.cnki.net/kcms/detail/detail.aspx?dbcodeCMFD&dbnameCMFD202201&filename1021697818.nh&uniplatformNZKPT&vK9J_5NETTyZXPhDr5D6KwISCv2zm0skRm7rEZ0KmYS0Yv_zs562Re8oiwR5h_ylK 文…

SIP注册

注册服务为特定地区的位置服务创建绑定关系,这个绑定关系是用来建立包含一个或者多个联系地址的address-of-recordURI。因而,当那个地区的proxy接收到一个请求,这个请求的Request-URI和address-of-record的记录匹配,那么这个proxy…

profile 安卓work_androidWorkProfileGeneralDeviceConfiguration 资源类型

androidWorkProfileGeneralDeviceConfiguration 资源类型androidWorkProfileGeneralDeviceConfiguration resource type2020/9/22本文内容命名空间:microsoft.graphNamespace: microsoft.graph注意: 适用于 Intune 的 Microsoft Graph API 需要适用于租户…

[读书笔记]TCP/IP详解V1读书笔记-1

TCP数据单元:tcp segment UDP数据单元:udp datagram IP数据单元:IP datagram 链路层单元:frame --------------------------------------- 应用层: SMTP:简单邮件传输协议 FTP:文件传输协议 DNS…

pandas划分数据

1.根据列位置划分 execldata pd.read_excel(filepath) # 获取列数 bandscount execldata.shape[1] #去除最后一列数据类别 bandscount bandscount - 1 classifypointdata execldata[:, 0:bandscount] classifypointlabel execldata[:, -1] 2.根据字段名称进行划分 exec…

SIP协议(基础技术知识)

SIP协议(基础技术知识) SIP(Session InitiationProtocol)协议是Internet多媒体通信和控制协议体系的一部分,该协议族包括会话描述协议(SDP)、会话发布协议(SAP)和会话启动协议(SIP)。会话描述协议用于描述会话发布、会…

python 程序停止打印日志_停止 Spring Boot 服务的几种优雅姿势

在使用 Spring Boot 的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是 kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。我们很多时候都需要安全的将服…

Office - 安装程序找不到office.zh-cn\*.文件

Office - 安装程序找不到office.zh-cn\*.文件 在同时安装vs2008 和 office2007 有可能会遇到个问题(如果现在安装office2007,在安装vs2008 不会出现问题, 反正会出现下面问题)在安装office2007时总是提示“安装程序找不到 offi…

批量导出部分依赖图(PDP)

部分依赖图 (PDP) 和个体条件期望 (ICE) 图可用于可视化和分析目标响应1与一组感兴趣的输入特征之间的交互。 部分依赖图 (PDP) 显示了目标响应与一组感兴趣的输入特征之间的依赖关系,边缘化了所有其他输入特征(“补充”特征)的值。直观地说…

c#读蓝牙数据_CSharp--BlueTooth 实现蓝牙通讯的程序 C#开发 可以发送和接收数据 方便二次开发 - 下载 - 搜珍网...

蓝牙C#/BluetoothDemo/bin/Debug/BluetoothDemo.exe蓝牙C#/BluetoothDemo/bin/Debug/OpenNETCF.BluetoothEx.dll蓝牙C#/BluetoothDemo/BluetoothDemo.csproj蓝牙C#/BluetoothDemo/BluetoothDemo.csproj.user蓝牙C#/BluetoothDemo/frmMain.cs蓝牙C#/BluetoothDemo/frmMain.Desig…

基于SDP的提议/应答(offer/answer)模型简介

1、引入 在松耦合会议中,会话参数完全由会议创建者来确定,参与者能做的仅仅是根据这些会话参数来加入会议(当然也可以选择不加入)。这种情况下,主要要做的就是会话描述,在这里SDP本身就足够了。 但是在更为…

arcgis已知两点投影坐标求距离

问题: 已知中心点坐标,求个点与中心点坐标的距离 解决方法如下: 新建字段 在新建字段上右键字段计算器 利用字段计算器进行两点间距离计算 不懂问题请进群交流询问相关知识点