架构师到底该不该写代码

转载 2017年01月03日 19:55:30

周末InfoQ-StuQ直播,主持和听众提问的简版实录,快消时代,精简到1分钟可以读完(原文有10000字)。


提问:沈老师是从什么时候开始写文章的?

我从大学开始有写文章的习惯,最开始主要记录学习上和生活上的一些东西。毕业加入百度之后,在百度空间总结一些学习到的技术的东西,后来百度空间好像转型做交友平台了,于是搭建了自己的博客,在博客上写了一两年。最近当然就是在公众号“架构师之路”上写,梳理和总结自己日常工作中学习到的一些技术,业务上和架构上遇到的一些问题,分享给大家。


提问:网上有个很有争议的问题“架构师需要写代码吗?”,您对此怎么看?

我认为架构师应该写代码。

首先,业务是肯定需要深入去了解的,我比较反对一个公司成立一个所谓的架构师部门,拥有公司所有的架构师资源。我的建议是每个业务线团队都需要有架构师。架构师一定要深入了解业务的特点,针对业务的特点去设计系统架构。


我一直有一个观点“任何脱离业务的架构都是耍流氓”。肯定没有一个一成不变的架构方案,适用所有的业务场景。


其次,是要贴近系统,所以得看代码,写代码。即使完全没有时间去写代码的话,至少详细设计的每一个细节架构师都需要清楚,每一个流程、接口参数、数据库设计都要非常清楚。详细设计尽量详细到组内的任何一个工程师拿到详细设计都可以去做实现。CodeReview也非常重要,保证代码至少是有两个人看过,而且它的实现逻辑和详细设计是一致的。


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


提问:当前互联网技术更新非常快,您认为架构师对此应该持什么态度?

首先对于新技术,需要去关注,但我的观点是“应用到线上,一定要慎重”。去看、去学、去研究是一个技术人员必须做的,但是学习新技术与把它应用到线上生产环境是两回事。


我负责58到家的一些后端架构,实施一些通用的技术平台,比如说线上的监控、数据的统一收集等,如果技术体系统一,综合成本会非常小。

再拿存储来举例,存储的软件和技术有很多,mysql,sql-server, mongodb等,统一用一个非常重要,一定不能是哪个团队想用什么就用什么。


我的建议是:对新技术我们一定要去学习,但应用到线上一定要慎重


提问:大家觉得架构师的知识宽度是很广的,那会不会有什么都懂、什么都不精这样一种现象存在?

首先什么都懂是绝对不可能的,什么都精也是绝对不可能的,但是架构师也不能哪一块都不精。虽然业务不一样,但是架构设计上肯定会有通用的地方。我原来做过几百万同时在线的即时通讯系统,它肯定有架构领域内通用的东西,比如接入、数据、可用性、扩展性、一致性等,所以这些经验对我后面做推荐系统的设计,支付系统的设计肯定会有帮助。


其实架构师对于知识的宽度和深度都是有要求的,像现在网上有一种说法说架构师的能力是π型人才,除了技术宽度,还要有两条腿:一条是专业能力,还有一条是通用能力,比如表达、沟通、解决问题、管理、创新等。


提问:有很多立志于成为架构师的人不知道如何开始?沈老师能不能给一些比较具体的建议?

我认为架构师之路分为三个阶段:

第一个阶段是打基本功的阶段。对应我自己的话就是职业生涯的前三年,语言、数据结构、算法、设计模式、研发工具、调试工具等,基本功没打好,其他的一切都是空谈。


第二个阶段是业务的积累或叫技术深度的积累。对于我来说,则是业务深入,即前五年在即时通讯领域的打拼。业务的深度决定了进入一家公司的时候,你的身价,一个公司要解决某个业务问题,就必须有针对性的招相关的人才,如果你可以解决这个业务领域内的大部分问题,这就是你的核心竞争力。


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


提问:对一个架构来说,因为没有完美的架构,它一定会有一些缺陷,那好的架构有一个什么样的标准吗?

架构是为业务服务的,能够满足业务的需求并且对它的扩展性多考虑一步,我觉得这样的架构就是合适的。


我曾经被问到“58同城从05年发展到现在,架构迭代了很多版,如果回到05年重新做架构设计,58的架构会不会是现在的样子”,答案是一定不会跟今天一个样子,一定还是和05年时候一个样子。


提问:58的技术氛围是怎么建立起来的?

第一个指导人机制很重要,就是任何一个研发一定会有一个高职阶的人带,有任何技术上的问题一定是有人可以交流和解答的。

第二个我觉得很重要的是技术评审,技术评审是一个很好的契机让大家沟通交流和讨论技术上的问题。

第三个是分享机制,每个团队内部定期组织技术分享,让大家沟通交流。包括我也每周会花时间和团队的同学做一些技术的交流和沟通。


提问:PHP是世界上最好的语言吗?

技术的同学在讨论的时候要避免讨论两个问题,一个是哪种语言是世界上最好的语言,第二个要避免讨论的是Vim好还是Emacs好。


总结

(1) 架构师需要写代码吗?

有时间的话,亲自去写核心代码,如果没有时间的话,要把关详细设计并安排资深工程师去做CodeReview

(2)对于新技术,持什么样的态度?

需要去学习,但应用到线上一定要慎重

(3)对架构师的能力要求?

π型人才,除了技术宽度,还要有两条腿:一条是专业能力,还有一条是通用能力

(4)架构师三个阶段?

打基本功,业务沉淀,通用素质进阶

(5)好的架构的标准?

能够满足业务的需求并且对它的扩展性多考虑一步

(6)技术氛围怎么培养?

指导人机制,技术评审,技术分享


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

架构师不写代码,怎能知道技术的痛点?

背景 什么是架构师?业内一直没有定论,在前两天『聊聊架构』群的讨论中,来自各大互联网公司的架构师都对自己的工作内容做了总结,然我们还是没有抽象出架构师的定义。反而引来了跟多的问题,比如: 1. 架...

用React+Mobx到底该不该写一个CheckBox组件

从接触React到现在有几个月了,对React的理解也在不断的加深。 最开始还是在拿React当工具用,嗯,就是比模板引擎牛逼点的工具。 后来觉得React在颠覆,颠覆自己对html的认识,或者说我更...

到底该不该来个文凭?写的很好

偶尔看到的,正好回答了一些同学心里的困惑,说的还是很有道理的。值得看看。 原文地址:http://blog.csdn.net/zhangxiaoxiang/article/details/70162...

[歪谈]经理该不该写代码?

这个话题我在好几个地方看到过,基本上大家的意见有几种:1、小公司别说经理,老板都得写(这是在说我吗?)2、一般到100或200人以上的公司,经理很少会直接参与代码的编写。3、大公司(BAT?这个就不说...

“降薪求职,到底该不该?”看程序员的思维

“降薪求职,到底该不该?”看程序员的思维    最近,CSDN都在热议这个话题:“降薪求职在,到底该不该”。       这个话题的前提是:“如果遇到喜欢的工作或是心仪的公司,但薪资不如现在,到底该不...

关于汽油清洁剂,到底该不该加?

网上查清洁剂,有些说要加,有些说不要加,不知道该听谁的 之一:环保性的电喷车,除了必须使用无铅汽油外,以避免过早损坏三元催化器,还必须在汽油中加入清净剂,其中道理何在?     这是因为电喷车...

小辩《降薪求职,到底该不该?》

小辩《降薪求职,到底该不该?》       无意间看到CSDN第十九期观点——降薪求职,到底该不该?人往高处走,之所以会跳槽,无非是期望升职加薪,让自己有更好的未来。如果遇到喜欢的工作或是心仪的公司,...

程序员面经:面试前到底该不该刷题以及面试前该如何准备

引言      首先要说声抱歉,LZ前段时间刚入职,这几天一直在参加新人培训,每天到家都是晚上10点多,因此有关Java教程的文章和视频,只写了篇开头,没有按照计划进行后续Java教程相关的文章撰...

ACM到底该不该坚持??

别人(感觉很牛逼的样子)的经历: 首先就是我为什么要写这么一篇日志。原因很简单,就是因为前几天有个想起步做ACM人很诚恳的问我该如何入门。其实就现在而言,我并不是很想和人再去讨论这样的话题,特别...

纠结的一天晚饭到底该不该吃呢

其实很多时候,太多的人是不会把晚饭当一回事的,更多的时候是吃一堆东西就随意打发自己的肚子了。其实,对于晚饭来说,吃什么、吃多少量、在什么时候吃都是有一定的科学原理的。现在我们说说晚餐该杂吃才会对身体有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:架构师到底该不该写代码
举报原因:
原因补充:

(最多只允许输入30个字)