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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.结对编程。

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

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

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

责任编辑:

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

  1. 永磁同步电机驱动视频教程_矢量控制_手把手教你写代码_无感FOC_有感FOC_状态观测器_卡尔曼滤波_慧驱动

    手把手教你驱动永磁同步电机_视频教程 前言 大家在刚开始搞永磁同步电机控制的时候,大部分都是先接触的芯片厂商提供的方案,然后查资料,买芯片厂商的电机套件,买回来后,通电启动,电机顺利的转起来了,然后再 ...

  2. [html] 写html代码时,怎样才加速写代码的速度呢?你有什么方法?

    [html] 写html代码时,怎样才加速写代码的速度呢?你有什么方法? 基于之前项目,整理出标准化方案.调研技术方案,提取可复用组件,方法等写代码前整理业务思路流程,先思考,后写码. 个人简介 我是 ...

  3. 解决方案架构师我需要懂代码吗_架构师真正要学会的事情

    本文引自周爱民老师[就职于南潮(Ruff),现任架构师一职]写给<程序员必读之软件架构>一书的推荐序. 编者按:软件架构师是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本 ...

  4. java代码识别_识别Java中的代码气味

    java代码识别 作为软件开发人员,我们不仅要编写有效的代码,而且还要编写可维护的代码,这是我们的责任. Martin Fowler在他的<重构:改进现有代码的设计>中将代码气味定义为: ...

  5. 存储过程可重用的代码块_如何使您的代码可重用

    可重用代码不是通用代码 Image Credits: Pixabay.com 可重用的代码作为解决所有软件问题的一站式解决方案,是一个危险的神话. 让我解释一下原因. 假设您正在编写软件库. 您脑中冒 ...

  6. python骂人代码大全_边看chromium的代码,边想骂人...

    这一年一直在看chromium for android的代码,边看边想骂,谷歌这帮人.. 一开始搞了个牛逼的架构,在安卓4.4上把以前android webkit团队的简单版替换掉了, 结果发现性能大 ...

  7. linux不写代码,不修 bug 也不写代码, 项目经理干了啥?一位 PM 的自白

    项目经理该干啥?来自一位东航项目经理的自白书. 自 Project Manager 被翻译为项目经理以来,就一直伴随着因"望文生义"导致的种种误解.很多人通过字面意思去想象项目经理 ...

  8. python游戏代码五子棋_用20行Python代码实现2048小游戏,你会吗?

    前些天在b站上看到有个大佬用c写了一个2048小游戏,我便一下来了兴趣.心想着,我貌似也能用Python来整一波,话不多说,直接开搞. 2048的游戏规则: 2048游戏总共有16个格子,初始时会有两 ...

  9. word 代码块_如何优雅的写好 Pythonic 代码?

    (点击上方公众号,可快速关注一起学Python) Python 与其它语言(比如Java或者C++)相比有比较大的区别,其中最大的特点就是非常简洁.如果按照其它语言的思路来写Python代码,则会使得 ...

最新文章

  1. figure diagram illustrate exemplify profile
  2. django建表报错
  3. DIV+CSS列表式布局(同意图片的应用)
  4. Mysql8.0 的sql修改成 Mysql7.X的sql
  5. Promise的几个扩展API总结
  6. 软件测试工程师-软件测试基本介绍
  7. 所有自然数相加的和是-1/12,你信吗?
  8. Android TTS实现简单阅读器(一)
  9. SHA算法 (sha0 sha1源码魔改)
  10. 服务器返回状态码说明,关于服务器返回的十四种常见HTTP状态码详解
  11. 新时达主板服务器改协议软件,新时达电梯主板调试软件
  12. MySQL表空间碎片产生原因和优化
  13. 香港服务器哪家好?香港机房前十排名
  14. 编译liteos(ubuntu)
  15. 服务器清理文件,裸金属服务器清理文件
  16. Origin图表导出png文件和pdf文件的方法
  17. 语音处理/语音识别基础(二)- 声音的存储
  18. 去哪儿网一面:工厂方法模式
  19. 【Python爬虫实战】爬取2021中国大学排名(简单)
  20. 这,不是我想要的生活

热门文章

  1. 【OS修炼指南目录】----《X86汇编语言-从实模式到保护模式》读书笔记目录表
  2. 自定义链表增,删除,链表逆序
  3. 基本数据类型____字典
  4. Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
  5. [转]Win7 系统安装VS2008没反应 点击安装一闪就没有反应 .
  6. [剑指offer][JAVA]面试题第[17]题[打印从1到最大的n位整数][大整数][递归回溯]
  7. python按行读取文件取消空白行_在Python中读取文件时忽略空行的最简单方法
  8. oracle v sql不存在,程序包oracle.sql不存在
  9. wifi 信道_说了这么久的信道和频宽,这回总算能弄明白啦
  10. phpstudy(自己电脑主机做服务器,手机网站界面打不开)