架构师到底该不该写代码

周末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)技术氛围怎么培养?

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

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

原文发布于微信公众号 - 架构师之路(road5858)

原文发表时间:2016-12-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

AI 行业实践精选:五条建议让你的 Chatbot 出人头地

Chatbots 是客户服务的新阵地——它不仅减少了人类代理所带来的影响,还帮助企业在运营过程中节省了大量的资金。 然而,Chatbots 带来的体验迄今未能...

386100
来自专栏大葡萄元元

(二)市场+运营+商务需要积累什么?

   上次说到渠道商务的局限性,权限有限可运作的范围也有限,但对于渠道不能光是坐等资源上门,对于有潜力的APP产品应该懂得挖掘......接触越来越多的开发者以...

8910
来自专栏云计算D1net

升级SaaS应用管理 积极拥抱“互联网+”

随着云计算、移动互联网和应用软件的成熟,SaaS作为一种即买即用的云服务模式已经逐步得到中小企业的认可。目前市场上已经有很多SaaS应用,如办公类应用、销售类应...

30840
来自专栏web前端教室

只要在学习,便不再是菜鸟

image.png 这句标题直接读出来,可能100%的人都不会赞同。菜鸟就是菜鸟,读了100本JS或程序的书,他依然是菜鸟。但我并不这样理解,在我的脑子里,工作...

21270
来自专栏人工智能的秘密

知识图谱技术已发展得相对成熟,未来的探索方向在哪

前段时间被沙特阿拉伯授予公民身份的人形机器人“索菲亚”,再一次颠覆了人们对人工智能技术的认知。“索菲亚”多次与人类交锋并公开发表言论的过程中,我们感受到了基本的...

61360
来自专栏华章科技

成功实施BI项目的四大要素

其实所谓“要素”不一定是项目执行过程中的关键点,这其中也包含了执行人的要素,毕竟所有项目的实施都是以人为发起点,然后以事件作为驱动,所以项目中最难把控的就是人的...

16220
来自专栏人称T客

传统会计软件将死 云会计星火燎原成必然

在数年之前,云端会计软件的数量相当稀少,甚至很多人怀疑这些软件的出现只是昙花一现不会长久,但是事实证明,他们错了。今天,云端的会计和其他应用程序一样是百花齐放,...

55960
来自专栏孟永辉

B站、秒拍被责令整改,短视频的世界里并非只有流量

有关以B站、秒拍为代表短视频平台被有关部门监管的消息引发热议,热议背后有关短视频未来如何发展的话题引发人们的反思。短视频的快速发展在为用户提供源源不断内容的同时...

6510
来自专栏about云

小白与大神存在哪些差距

看到很多about云会员,铁粉及QQ群成员,当然也包括一些转行成员,而且整个IT行业很多人可能都面临这个问题,感到困惑。比如没有大数据工作经验,没有人工智能工作...

9220
来自专栏架构师小秘圈

程序员、架构师、技术经理、技术总监和CTO都是干什么的?

程序员   程序员,英文名coder/programmer,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可用的软件产品。   此职位为执行级别...

59740

扫码关注云+社区

领取腾讯云代金券