阿里技术人分享的三本书豆瓣评分8.5分,让你的架构思维略窥门径

news2024/11/28 10:55:43

又逢“金九银十”,年轻的毕业生们满怀希望与忐忑,去寻找、竞争一个工作机会。已经在职的开发同学,也想通过社会招聘或者内推的时机争取到更好的待遇、更大的平台。

然而,面试人群众多,技术市场却相对冷淡,面试的同学们不得不面临着 1 个职位 N 个应聘者的巨大竞争。

问:在这种现状下,如何才能收获又多又好的 Offer?

答:短期准备——刷面试题;长期筹谋——巩固核心技能。

面试题怎么刷?刷高频题、有深度的题、符合时效性的题。

核心技能如何巩固?先深入理解原理,再系统应用到实践。

之前我写过几篇架构师、架构设计相关的文章。说实话,想通过几篇文章就把架构师的方方面面说明白,挺难的。

这可能需要一系列的文章,今天就给大家安排了这篇文章。

很多程序员都有和下面类似的困惑:

为什么很多程序员成不了架构师?

高级程序员和架构师之间有什么区别?

我认为,架构师和高级程序员最主要的区别在于,两者之间的思想维度上。

我举个例子,假如现在有个需求:公司想要做一套直播卖货的系统。

产品需求给出来了,在我成为架构师之前,作为程序员的我会怎么想?

我的想法可能是最简单直接的:

  • 需求中的礼物打赏如何实现
  • 是不是得有房间
  • 房间的逻辑是如何实现的
  • 滚屏弹幕该怎么落地
  • ……

也就是说,作为程序员,我的第一反应是:业务如何转化为技术,各种业务功能是如何用技术实现的。

那么,在我做过架构师之后,我会怎么想呢?

如果是我牵头负责这个,除了这些业务转成技术的问题,我还需要思考如下问题:

  • 架构用单体还是微服务
  • 通信方式都有哪些
  • 中间件选哪些比较好
  • 普通存储和多媒体存储该如何规划
  • 应该选什么样的架构风格
  • 可靠性,弹性,可用性该怎么保障
  • 开发成本、部署成本、维护成本
  • 成本与系统性能的折中
  • ……

以上,只是架构师典型思考的几个宏观问题。

其实,在一套系统中,架构师不仅仅只是思考这些宏观问题而已。更会深入细节,去解决各种层次的技术难题。

回到直播问题上,架构师还必须去解决一系列技术难题,比如:

  • 直播的卡顿问题
  • 通信协议的优化问题
  • 各种中间件的优化问题
  • 存储的一致性问题

总的来说,一名程序员,他的思维往往是自下而上的,就是先思考功能实现,再根据功能实现去理解整个系统的运行机制。

而一名架构师,他的思维往往是自上而下、自下而上相结合的。

他本能的就会先去想系统的架构,根据系统的架构,再去根据架构的雏形,去根据各个业务定出业务模块之间的通信方法,再根据通信方法去理解各个业务模块的耦合,去想着一些代码实现难题,最后去完整的理顺整个系统的技术实现。

所以,一名程序员想要成长为一名合格的架构师,必须经过思维的转变。

而这种转变,需要多读一些好书,让这些书中的知识,来对个人的思维进行一次大清洗,从而使得这种转变更加容易和更加准确。

我在这里想推荐 3 本书,这 3 本书能让程序员们对架构师的工作先有个初步的了解,从而让他们能对架构的思维略窥门径。

1.《架构师修炼之道》

要转成架构师思维,首先得知道架构师是如何思考问题的,当业务人员给出具体的需求之后,架构师们是如何根据需求去做对应的设计和分析的。

因此,我推荐先可以看看《架构师修炼之道》这本书。

=

这本书的英文版我其实也读过,自认为里面的所思所想,确实是我做架构时都考虑过的事情,甚至里面提及的一些思路,我自身都没考虑过。

这本书,我认为可以作为程序员转架构师的第一本书:

它起码会提醒程序员,从上到下思考系统架构,到底是怎样的一个思路。

了解了架构师是如何从上而下的思考和设计系统架构的,初步对架构师的思维有了些许印象后,就需要找个师傅能全面带你一把,能通过走一遍架构师的工作流程,去开始尝试架构师工作入门,去通过实践,一点点的让这些思维形成习惯。

2.《从零开始学架构》

而这个师傅我认为是《从零开始学架构》这本书。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abOI5zUM-1671092232373)(null)]

这本书读起来非常快,读得也很过瘾,是我看到的最贴近中国架构师日常实践的书。

书里面对架构师从设计到经常用的模式,以及对应的理论都做了介绍。

尤其是架构设计中的一些重要的大坑,和架构师重要的取舍思想都做了清晰的介绍,非常适合帮助实践入门,对程序员的技能提升有肉眼可见的帮助。

书的作者李运华还在极客时间出了对应于这本书的课。前几天有读者在群里问这门课,我当时还没反应过来,只是觉得名字耳熟,写这篇文章的时候才想起来。

不过,我本人没订过他的课,听同事讲,说得不错,和他写的书形成了有效的互补。

3.《Thinking Architecturally》

我前面说的两本中文书,缺少了很重要的一部分,就是

架构师是对新技术是如何调研和学习的。

架构师引入新技术,也是架构师工作很重要的部分。

这方面的书,我读过的极其出色的一本就是《Thinking Architecturally》。

只是可惜这本书是英文书。不过,我始终认为,作为 IT 行业的程序员,英语还是重要的,国内引进的优秀技术书籍毕竟有限,很多优秀的书籍因为语言问题,从而错失品鉴的机会,非常可惜。

这本书介绍了怎么评估新工具、新技术,包括新技术引入后的一些注意事项,介绍得都非常详细。

可以说,从我读过这本书以后,看新技术、学新技术、引入新技术都有了坚实的理论基础。不仅如此,读了这本书以后,我甚至引入新技术后,风险的预估能力都提升了非常多。

而且更难得的是,这本书写得十分通俗易懂,也不需要太多的技术门槛。也强烈推荐入门阅读。

以上 3 本书,我认为对一名打算将来进阶成为架构师的程序员,作为入门的引导,以及寻找后面努力的方向是非常足够了。

要知道,架构师不仅仅是个工作,同时也代表着各种各样的更高阶的技术能力,而要提升能力之前,先拥有一套全局的架构师思维,知道架构师都做什么事情,从而能得到努力前进的方向,是极其重要的第一步。

迈出这一步之后,你就会明白,什么架构模式、架构设计、各种原理,都是以架构师的思维为基础的工具。

希望大家能把 3 本书好好学一遍,把通往架构师的路走得更加坚实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssm+Vue计算机毕业设计校园疫情管理系统(程序+LW文档)

ssmVue计算机毕业设计校园疫情管理系统(程序LW文档) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

我用了几行代码就实现了界面变灰效果

前言 前段时间,各个大厂的 App 首页都变成了灰色,网上还有不少人问界面变灰怎么做到的。有人说是后台换了图片,这个回答显然是不懂技术了,对于个性化推荐系统来说,使用的图片那么多张,怎么可能一一替换。还有一种说法是说后台将图片处理后再返回给前端的,这个显然也不太…

$ORACLE_BASE和$ORACLE_HOME下xml文件误删

问题描述: 某项目安装环境grid管理的oracle,环境已经搭建好许久,执行上线检查PSU版本时发现opatch lsinventory报错 但实例的sqlpatch显示已经应用成功且oracle client版本也显示为19.13 怀疑是Central Inventory(/oracle/oraInv…

【知识图谱】(task4)知识图谱的抽取和构建

note CRF条件随机场是全局最优(判别式模型),HMM是局部最优(生成式模型)实体关系抽取方法概览: 事件抽取主要分为事件的发现和分类和事件要素抽取两部分,又可以细分为触发词识别与事件分类和要素…

第13部分 VLAN,Trunk 和VTP

目录 13.1 VLAN,Trunk 和VTP 简介 13.1.1 VLAN 13.1.2 Trunk 13.1.3 VTP 13.1.4 EtherChannel 13.2 实验1:划分VLAN 1.实验目的 2.实验拓扑 3.实验步骤 4.实验调试 13.3 实验2:Trunk 配置 1.实验目的 2.实验拓扑 3.实验步骤 1…

SpringBoot整合Graylog做日志收集

日志收集折腾过程 ELK 之前整合过ELK做日志采集,就是Elasticsearch Logstash Kibana: Elasticsearch:存储引擎,存放日志内容,利于全文检索Logstash:数据传输管道,将日志内容传输到Elastics…

无法在Anaconda环境中使用pre-commit run --all-files:缺少匹配版本的ruamel.yaml

参考来源:https://stackoverflow.com/questions/68794749/unable-to-run-pre-commit-in-anaconda-environment 问题 与电脑两地隔离了半个月,今天开机commit的时候忽然弹出了下面的错误(自己图忘存了,图源置顶链接)&…

b站黑马的Vue快速入门案例代码——小黑记事本

目录 目标效果: 重点原理: (1)push()方法——向数组末尾,添加新元素,并返回新长度 (2)v-on可以传递自定义参数,v-on:click”...“的简写是clic…

jdk11新特性——标准Java异步HTTP客户端

目录一、概述二、HTTP Client 同步发送请求使用示例2.1、创建简单的服务端2.2、创建HTTP Client 同步代码三、HTTP Client 异步发送请求使用示例3.1、创建简单的服务端(参考2.1)3.2、创建HTTP Client 异步代码一、概述 Java 9 开始引入的一个处理 HTTP …

浅谈ioremap,vmalloc,mmap三者之间的脉络

前言 系统mmu开启后, 程序对内存的访问都是虚拟地址, 之后mmu会自动将虚拟地址变为实际的物理地址(硬件行为), 所以我们的程序如果要访问物理地址的话,必须要通过mmu建立虚拟地址与物理地址之间的映射关系。对于虚拟地址映射到物理地址的操作…

非零基础自学Golang 第7章 函数 7.6 延迟执行语句 7.7 小结

非零基础自学Golang 文章目录非零基础自学Golang第7章 函数7.6 延迟执行语句7.7 小结第7章 函数 7.6 延迟执行语句 Go语言中存在一种延迟执行的语句,由defer关键字标识,格式如下: defer 任意语句defer后的语句不会被马上执行,在…

Redis持久化详解

一、概述 在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群,下面分别说明它们的作用,以及解决了什么样的问题。 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份…

springboot整合系列之如何选择版本及项目搭建

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能会略有不同。因为我很久没用过eclipse了,所以也没有办法给出两个版本。如果不一致的地方就自行google解决吧~~ springboot整合之如何选择版本及项目搭建 springboot整合mybatis-pl…

ADI Blackfin DSP处理器-BF533的开发详解52:图像处理专题-CMOS摄像头采集图像(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 板卡上设计了一个摄像头接口,可以连接与板卡匹配的 ADSP-EDU-CMOS 子卡板。摄像头接口采用 20PIN 插针接入,将插…

照片变漫画怎么做?分享这几个照片变漫画的技巧给你

大家在网上是否有看到过一些绘画博主给别人画漫画图呢?这些图片中的人物形象与现实中的非常相像,而且看起来真的很像漫画中的人物一般,画出来对于一些没有绘画功底的人来说是比较困难的。那么我们又该如何得到我们在漫画中的图片呢&#xff1…

四种常见排序(冒泡、选择、插入、快速排序)--- Python版

经典排序算法总结与实现 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,这次收集整理并用Python实现了八大经典排序算法,包括冒泡排序,插入排序,选择排序,希尔排序,归…

Python实现批量采集美女视*频 <无水印>

前言 大家早好、午好、晚好吖 ❤ ~ 我给大家准备了一些资料,包括: 2022最新Python视频教程、Python电子书10个G (涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等 直接在文末名片自取即可&#x…

机器学习还能预测心血管疾病?没错,我用 Python 写出来了

全球每年约有1700万人死于心血管疾病,当中主要表现为心肌梗死和心力衰竭。当心脏不能泵出足够的血液来满足人体的需要时,就会发生心力衰竭,通常由糖尿病、高血压或其他心脏疾病引起。 在检测心血管疾病的早期症状时,机器学习就能…

nodejs+vue企业固定资产管理系统-vscode

目 录 摘 要 I 目 录 III 第一章 概述 1.1研究背景 1.2 开发意义 1.3 研究现状 1.4 研究内容 1.5 论文结构 第二章 开发技术介绍 2.5 B/S架构 3.1 可行性分析 3.1.1技术可行性 3.1.2操作可行性 3.1.3 经济可行性 3.1.4 运行可行性 3.2性能需求分析 3.4功能分析 第四章 系统设计…

轻量级的架构决策记录机制

作者:倪新明 ADR是一种性价比非常高的架构决策文档化实践,团队引入和实践成本很低,却能为团队带来极大收益! 1 团队研发面临的问题 不论是在传统的IT行业,还是互联网行业,研发团队在架构决策层面或多或少…