当前位置: 首页 > 科技观察

架构师应该写代码吗?

时间:2023-03-21 20:35:14 科技观察

问:沉老师什么时候开始写文章的?我从大学开始就有写文章的习惯,一开始主要是记录学习和生活中的一些事情。毕业加入百度后,总结了自己在百度空间学到的一些技术性的东西。后来百度空间好像变身交友平台了,于是自己建了个博客,写了一两年。最近当然是写在公众号《架构师之路》上,整理总结了自己在日常工作中学到的一些技术,以及业务和架构中遇到的一些问题,分享给大家。提问:网上有一个非常有争议的问题“架构师需要写代码吗?”你怎么看待这件事?我认为架构师应该写代码。首先,业务肯定需要深入了解。我比较反对一个公司设立一个所谓的架构师部门,拥有公司所有的架构师资源。我的建议是每个业务线团队都需要有架构师。架构师必须深刻理解业务的特点,根据业务的特点设计系统架构。我一直有一个观点,“任何倒闭的架构都是流氓”。肯定没有适用于所有业务场景的一刀切的架构解决方案。其次就是要贴近系统,所以要看代码,写代码。哪怕根本没有时间写代码,至少架构师要清楚详细设计的每一个细节,每一个流程、接口参数、数据库设计都要非常清楚。详细设计要尽可能详细,以便组内任何一个工程师拿到详细设计后都可以实施。CodeReview也很重要,保证至少有两个人看过代码,其实现逻辑和详细设计是一致的。我给架构师的建议是:有时间自己写核心代码,没时间自己设计细节,安排资深工程师做CodeReview。问:现在的互联网技术更新很快。您认为建筑师应该对此采取什么态度?首先,我们需要关注新技术,但我的观点是“网上申请,一定要谨慎”。看、学、研是技术人员必须做的,但是学习新技术和将其应用到在线生产环境中是两件不同的事情。我负责58到家的一些后台架构,实现一些通用的技术平台,比如在线监控,统一采集数据等,如果技术系统统一的话,整体成本会非常小。以存储为例。存储软件和技术有很多,比如mysql、sql-server、mongodb等,统一使用一个非常重要,绝对不能被任何一个团队使用。我的建议是:新技术一定要学习,但是线上应用一定要慎重。问:每个人都认为建筑师的知识面很广。会不会出现什么都懂而不擅长什么的现象?首先,绝对不可能无所不知,也绝对不可能无所不能,但架构师也不可能无所不能。虽然业务不同,但是在架构设计上肯定会有共同的地方。我曾经在一个有数百万人同时在线的即时通讯系统上工作。它一定有架构领域的共同点,比如接入、数据、可用性、可扩展性、一致性等等,所以这些经验对我后面设计推荐系统有帮助,支付系统的设计肯定会有帮助。事实上,架构师对知识的广度和深度都有要求。比如网上有一种说法,架构师的能力是π型人才。除了技术广度,他们还有两条腿:一个是专业能力,一个是通用能力,比如表达能力、沟通能力、解决问题能力、管理能力、创新能力等等。问:很多人立志成为建筑师不知道如何下手?沉总能给些更具体的建议吗?我觉得架构师之路分为三个阶段:第一个阶段是打下基本功的阶段。对应我自己的话,这是我职业生涯的前三年。语言、数据结构、算法、设计模式、研发工具、调试工具等等,基本功没练好,其他都是空谈。第二阶段是业务的积累或技术深度的积累。对我来说,就是深入的业务,也就是前五年在即时通信领域的努力。业务深度决定了你进入一家公司的价值。企业要想解决某个业务问题,就必须有针对性地招聘相关人才。如果你能解决这个业务领域的大部分问题,那就是你的核心竞争力。第三阶段,π型人才的另一条腿是综合素质,就是你的执行力、责任感、推动力、沟通能力、项目管理能力,会让别人觉得你靠谱。每个人的技术能力都差不多,为什么还要把工作交给你?你想过吗?因为公司觉得你靠谱,靠谱度高。问题:对于一个架构,因为没有完美的架构,所以一定有一些缺陷。一个好的架构有什么样的标准?架构是为业务服务的,能满足业务的需求。进一步考虑可扩展性,我认为这样的架构是合适的。曾经有人问我“58同程从2005年发展到现在,架构迭代了很多版本,如果回到2005年重新设计架构,58的架构会是现在这个样子吗?”答案是肯定不会和今天一样。一样的模样,肯定还是2005年的样子。问:58的技术氛围是如何营造的?第一个师徒机制很重要,就是任何研发都必须有一个高人来领导,必须有人可以沟通和回答任何技术问题。第二个我觉得很重要的就是技术评审。技术评审是大家交流和讨论技术问题的好机会。三是共享机制。每个团队定期组织技术分享,让大家交流。包括我也是每周都会抽时间跟组员做一些技术上的交流和沟通。问题:PHP是世界上最好的语言吗?技术同学在讨论的时候要避免讨论两个问题,一是世界上最好的语言是哪种,二是Vim好还是Emacs好。总结(一)架构师需要写代码吗?如果有时间,自己写核心代码。如果没有时间,需要做详细设计,安排高级工程师做CodeReview。(2)你对新技术的态度是什么?需要学习,但是网上应用一定要慎重。(3)对架构师能力的要求?π型人才,除了技术广度,还有两条腿:一是专业能力,二是通用能力(4))架构师的三个阶段?基本功、业务积累、高级通用素质(五)好的架构的标准?能否满足业务需求,多考虑其可扩展性(6)如何培养技术氛围?导人机制、技术评审、技术分享***给有志于成为架构师的同学的建议:多学习,多交流,多交流。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文