架构师到底该不该写代码?

简介: 选取了一部分大家可能会感兴趣的问题,汇总此文。

提问:网上有个很有争议的问题“架构师到底该不该写代码?”,您对此怎么看?我旗帜鲜明的认为:架构师应该写代码
做架构设计需要了解业务,任何脱离业务的架构设计都是耍流氓
我比较反对一个公司成立一个所谓的架构师部门,把控全公司所有的架构师资源。我建议是每个业务研发团队都自己的架构师,深入了解业务,针对业务的特点去设计系统架构。

画外音:没有一个架构方案,适用所有的业务场景。


要贴近系统,所以得看代码,写代码。即使完全没有时间去写代码的话,至少详细设计的每一个细节架构师都需要清楚。CodeReview也非常重要, 保证代码至少是有两个人看过 ,而且它的实现逻辑和详细设计是一致的。


我对架构师的建议是: 有时间的话,亲自去写核心代码,如果没有时间的话,要把关详细设计并安排资深工程师去做CodeReview。


提问:当前互联网技术更新非常快,您认为架构师对此应该持什么态度? 先说个人观点,我认为: 对于新技术,需要去关注,学习,研究,但应用到线上,一定要慎重


到家集团、快狗打车的技术体系,拿存储来举例,选择很多,MySQL最成熟,我们就用它,统一非常重要,一定 不能是哪个团队想用什么就用什么 ,统一能够节省很多招聘、运维、测试成本,遇到问题能够查阅社区资料,通过行业牛人沟通快速解决。


提问:大家觉得架构师的知识宽度是很广的,那会不会有什么都懂、什么都不精这样一种现象存在? 首先什么都懂是绝对不可能的,什么都精也是绝对不可能的。
虽然业务不一样,但是 架构设计思路上肯定会有通用的地方
以我个人为例,曾经做过几百万同时在线的即时通讯系统,它肯定有架构领域内通用的东西,比如接入、数据、可用性、扩展性、一致性等,所以这些经验对我后面做推荐系统的设计,支付系统,打车系统等,设计思路上有很大的帮助。


架构师对于知识的宽度和深度都是有要求,我心中合格的架构师,是 “π型人才” ,除了技术宽度,还要有两条腿:一条是 专项深度 ,还有一条是 通用能力 ,比如表达、沟通、解决问题、创新等。


提问:有很多立志于成为架构师的人不知道如何开始?沈老师能不能给一些比较具体的建议? 我认为架构师之路分为 三个阶段 第一是打基本功的阶段 对应我自己的话就是职业生涯的前三年,语言、数据结构、算法、设计模式、研发工具、调试工具等,基本功没打好,其他的一切都是空谈。


第二阶段是业务的深入与技术深度的积累。对于我来说,业务的深入,是职业生涯前五年在即时通讯领域的打拼。业务的深度决定了进入一家公司的时候,你的身价,一个公司要解决某个业务问题,就必须有针对性的招相关的人才, 能够解决某个业务领域内的大部分技术问题,才是你的核心竞争力 画外音:核心竞争力不是Java工程师,而是XX工程师(XX是一个业务前缀,例如即时通讯),很多技术同学容易走偏。


第三阶段,π型人才的另外一条腿,即通用素质。就是你的执行力、责任心、推动能力、沟通表达能力、项目管理能力,这些会让别人觉得你是靠谱的。 在技术能力大家都差不多的情况下,一个事情为什么交给你来做? 因为公司觉得你是靠谱的,靠谱这个评价很高。


提问:没有完美的架构,那好的架构有一个什么样的标准呢? 架构是为业务服务的, 能够满足业务的需求 并且 对它的扩展性多考虑一步 ,我觉得这样的架构就是合适的。 画外音:请注意,是多考虑一步,不是两步,不是五年后。


我曾经被问到“快狗打车从14年发展到现在,架构迭代了很多版,如果回到14年重新做架构设计,其架构会不会是现在的样子”,答案是一定不会跟今天一个样子,一定还是和14年时候一个样子,那个时候的架构,适合那个阶段。
架构不但是设计来的,更是演进而来的。


提问:很多技术人关注公司的技术氛围,技术氛围建立有什么经验分享么?
提几个点吧: 第一,指导人机制很重要。就是任何一个技术人一定会有一个高职阶的人带,有任何技术上的问题一定是有人可以交流和解答的。
第二,技术评审很重要,技术评审是一个很好的契机让大家沟通交流和讨论技术上的问题。
第三,分享机制很重要,每个团队内部定期组织技术分享,让大家沟通交流。 包括我也每周会花时间和团队的同学做一些技术的交流和沟通。


提问:PHP是世界上最好的语言吗? 技术的同学在讨论的时候要避免讨论两个问题,一个是哪种语言是世界上最好的语言,第二个要避免讨论的是Vim好还是Emacs好。
以上纯属 个人看法 ,分享自己认为对的东西。
调研: (1)贵司是 ppt型 架构师,还是 代码型 架构师? (2)贵司是 深度型 架构师,还是 广度型 架构师? (3)贵司是 针对业务 的架构设计,还是 针对晋升 的架构设计? (4)贵司有没有 指导人 评审 分享

最后给有志于成为架构师的同学一个建议: 多学习、多交流、多沟通

本文转自“架构师之路”公众号,58沈剑提供。

目录
相关文章
|
2月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
54 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
1月前
|
存储 安全 Java
系统安全架构的深度解析与实践:Java代码实现
【11月更文挑战第1天】系统安全架构是保护信息系统免受各种威胁和攻击的关键。作为系统架构师,设计一套完善的系统安全架构不仅需要对各种安全威胁有深入理解,还需要熟练掌握各种安全技术和工具。
93 10
|
2月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
82 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
2月前
|
设计模式 人工智能 算法
编程之旅:从代码到架构的感悟
【9月更文挑战第33天】在编程的世界里,代码不仅是实现功能的工具,更是连接思想与现实的桥梁。本文将通过个人的编程经历,分享从编写第一行代码到设计系统架构的旅程,探索编程背后的哲学和技术演变。我们将一起思考,如何在代码的海洋中找到自己的航向,以及在这个过程中如何不断成长和适应变化。
|
2月前
|
机器学习/深度学习 大数据 PyTorch
行为检测(一):openpose、LSTM、TSN、C3D等架构实现或者开源代码总结
这篇文章总结了包括openpose、LSTM、TSN和C3D在内的几种行为检测架构的实现方法和开源代码资源。
58 0
|
3月前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
100 4
|
4月前
|
XML 开发框架 .NET
.NET框架:软件开发领域的瑞士军刀,如何让初学者变身代码艺术家——从基础架构到独特优势,一篇不可错过的深度解读。
【8月更文挑战第28天】.NET框架是由微软推出的统一开发平台,支持多种编程语言,简化应用程序的开发与部署。其核心组件包括公共语言运行库(CLR)和类库(FCL)。CLR负责内存管理、线程管理和异常处理等任务,确保代码稳定运行;FCL则提供了丰富的类和接口,涵盖网络、数据访问、安全性等多个领域,提高开发效率。此外,.NET框架还支持跨语言互操作,允许开发者使用C#、VB.NET等语言编写代码并无缝集成。这一框架凭借其强大的功能和广泛的社区支持,已成为软件开发领域的重要工具,适合初学者深入学习以奠定职业生涯基础。
108 1
|
4月前
|
设计模式 算法 PHP
深入理解PHP中的数组操作探索编程之美:从代码到架构的思维转变
【8月更文挑战第24天】在PHP编程中,数组是基础且强大的数据结构。本文将通过浅显易懂的方式,介绍如何在PHP中高效地操作数组,包括创建、遍历、排序和过滤等常见任务。无论你是初学者还是有经验的开发者,这篇文章都会带给你新的启示。 【8月更文挑战第24天】在编程的世界中,代码不仅仅是冰冷的字符排列,它承载着思想、解决问题的智慧和创新的灵魂。本文将通过个人的技术感悟,带领读者从编写单一功能的代码片段出发,逐步深入到整个软件架构的设计哲学,探索如何将代码块转化为高效、可维护和可扩展的系统。我们将一起见证,当代码与架构思维相结合时,如何引发技术实践的革命性飞跃。
|
4月前
|
前端开发 开发者 C#
WPF开发者必读:MVVM模式实战,轻松实现现代桌面应用架构,让你的代码更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,MVVM(Model-View-ViewModel)模式通过分离应用程序的逻辑和界面,提高了代码的可维护性和可扩展性。本文介绍了MVVM模式的三个核心组件:Model(数据模型)、View(用户界面)和ViewModel(处理数据绑定和逻辑),并通过示例代码展示了如何在WPF项目中实现MVVM模式。通过这种方式,开发者可以构建更加高效和可扩展的桌面应用程序。
185 0
|
4月前
|
消息中间件 缓存 Java
如何优化大型Java后端系统的性能:从代码到架构
当面对大型Java后端系统时,性能优化不仅仅是简单地提高代码效率或硬件资源的投入,而是涉及到多层次的技术策略。本篇文章将从代码层面的优化到系统架构的调整,详细探讨如何通过多种方式来提升Java后端系统的性能。通过对常见问题的深入分析和实际案例的分享,我们将探索有效的性能优化策略,帮助开发者构建更高效、更可靠的后端系统。