通往架构师之路的三本书,高分!

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

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

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

为什么很多程序员成不了架构师?
高级程序员和架构师之间有什么区别?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.《架构师修炼之道》

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

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

通往架构师之路的三本书,高分!

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

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

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

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

2.《从零开始学架构》

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

通往架构师之路的三本书,高分!

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

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

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

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

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

3.《Thinking Architecturally》

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

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

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

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

通往架构师之路的三本书,高分!

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

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

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

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

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

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

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

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

原创不易,希望得到你的 三连支持

ps. 感谢你看到最后,有惊喜!

我特意找了前两本书的电子版,如果想获取,可以扫下图的码,关注后,在公众号后台回复:架构师

通往架构师之路的三本书,高分!

Original: https://www.cnblogs.com/siyuanwai/p/15246611.html
Author: 四猿外
Title: 通往架构师之路的三本书,高分!

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580872/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • c3p0-config.xml

    c3p0-config.xml 一般将 c3p0 连接池的配置文件放置到到src目录下,该文件制订了连接数据库和连接池的相关参数。可以更方便的连接MySQL数据库。 com.mys…

    Java 2023年6月8日
    071
  • 点击按钮收藏

    后台代码 RouteServlet类: FavoriteService接口: FavoriteServiceImpl实现类: FavoriteDao接口: FavoriteDaoI…

    Java 2023年6月6日
    050
  • Java接口和抽象类区别

    接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。 接口中除了 static、final 变量,不…

    Java 2023年5月29日
    084
  • spring mvc异常统一处理(ControllerAdvice注解)

    @ControllerAdvice public class GlobalExceptionHandler { private final static AsJEELogger L…

    Java 2023年5月30日
    068
  • 【JavaWeb-Ajax】网站 — 通过省份 id 获取省份信息(通过Ajax实现局部刷新)

    网站实现功能: 通过输入省份编号,应用 Ajax 向服务端(tomcat服务器)发送请求,在服务端从数据库中取出对应信息打回客户端浏览器,局部刷新页面,来获取省份信息(省份名称,省…

    Java 2023年6月8日
    076
  • 分布式搜索引擎–03

    1.数据聚合 聚合(aggregations)可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机…

    Java 2023年6月9日
    068
  • 2>&1到底是什么意思?

    java -jar snapshot.jar > snapshot.log 2>&1 & 写Java的朋友一定对上面的命令很熟悉,相信大部分人都知道 &…

    Java 2023年6月7日
    071
  • 放弃 Electron,拥抱 WebView2!JavaScript 快速开发独立 EXE 程序

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月16日
    069
  • Bean的生命周期

    bean的生命周期:创建→注入→初始化→返回→销毁 简单来说,bean的生命周期为:创建→注入→初始化→返回→销毁 一、代码过程参考 //org.springframework.b…

    Java 2023年6月13日
    079
  • java8中Stream的一些使用例子总结

    如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 菜肴:Dish.java public cl…

    Java 2023年5月29日
    067
  • nginx基本概念

    例如: 以上规则简单总结就是优先级从高到低依次为(序号越小优先级越高) 6. proxy_pass proxy_pass的作用是代理到其他服务器,与rewrite的区别是,rewr…

    Java 2023年5月30日
    078
  • JDBC学习

    笔记如上 学了个代码 php;gutter:true; import java.sql.*;</p> <p>public class jdbc01 { pu…

    Java 2023年6月9日
    081
  • 阿里云RocketMQ定时/延迟消息队列实现

    一、业务需求 需要实现一个提前二十分钟通知用户去做某件事的一个业务,拿到这个业务首先想到的最简单得方法就是使用Redis监控Key值:在排计划时候计算当前时间与提前二十分钟这个时间…

    Java 2023年6月13日
    074
  • k8s-nginx二进制报Illegal instruction (core dumped)

    未经允许不得转载!! 原文链接:https://www.cnblogs.com/yaohong/p/14920425.html 1.环境 系统:CentOS 7.3 内核:x86 …

    Java 2023年5月30日
    087
  • 四、针对redis容灾切换导致”脑裂”的情况

    网上参考到别人博客说,redis容灾切换的时候,有几率出现脑裂的情况。 什么是脑裂: sentinel判断master宕机,切换slave为新master的过程中,业务数据还在持续…

    Java 2023年6月5日
    071
  • binary与进制转换

    规律数: 0111为4位补码的最大值,规律是1个0和3个1,可以推导出 32位补码的最大值:1个0和31个1——(011111111111111111111…

    Java 2023年6月13日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球