前言
大家都看到了从疫情以来,各个行业开始内卷,互联网行业环境越来越差,裁员的厂子越来越多,趁着刚刚跳槽到一家小公司,从今天开始,我会重新开始积累作为架构师相关需要的一些技术,这里目前主要通过Java这门语言来支持。
一、为什么要成为一名架构师
1. 回顾与反思
首先,作为从业6年多、换过4家公司,并且还在P6+边缘挣扎的loubi程序员来说,我深感惭愧。
现在回头看看,我发现我并没有真正做到一位资深程序员该有的素质,也违背了我毕业想要做好程序员,实现技术大牛梦想的初心,反思了一下,主要原因也是因为自己因为贪玩,身上也经历了一些事情,把我自己给耽误了。
2. 为何想到要加强技术能力
其实这个答案很直接,就是面试碰壁了,而且也想拿更高的年薪了
作为程序员,大部分人都会经历跳槽和面试,那么你就会去看Boss、拉钩上面找对应职位的要求,如果你想进大厂、拿高薪资,那么你可以看到在岗位技能能力上也相对需要更高的要求,当然这个是无可厚非的。
我们都在说程序员行业门槛越来越低了,那么这就意味着拥有更深、更广的技术是我们追求资深、专家的基本要求。
二、架构师的要求
1. 技术OR业务
作为技术,我认为的优秀的架构师当然需要有丰富的技术经验,业务场景的思考以及合理的实现方案也是必要的,这里就可以分技术架构师和业务架构师。
当然这里的架构师,重点还是在技术方面,对于业务经验方面,后面我会单独拿出来聊。
2. 技术深度OR技术广度
以前遇到过一些leader,之所以他们能做leader,要么是有丰富的业务和带团队的经验,要么技术过硬,但是在我印象当中都没有达到一个技术架构师的水平,也或者是因为我没有加入那些大厂优秀的团队吧。但是可见架构师这个位置,不是一般开发能够胜任的。
为什么提到技术深度,因为目前绝大部分开发还停留在CRUD的开发,通过面试,我们也可以看到从Java基础到算法、高并发、分布式技术,从应用到原理,再到大型项目的架构设计,以及各种复杂场景,技术深度明显代表了你的技术能力。
技术广度并没有那么重要
为什么这么说,技术永无止境,技术是一直在更新的,强如架构师这个岗位也需要一直学习下去,涉及范围广,可以说明你关注技术的发展,而架构师需要的是实践和解决问题的能力,技术深度明显比广度重要多了。
我觉得,如果一个人什么都懂,而什么都只懂些皮毛,那么这个人可能只会吹毛求疵、纸上谈兵,很难成为架构师
3. 学习能力
优秀的架构师必须要有超强的学习能力,这点很重要。当你老板要做一个新项目,要用到新的或者以前没接触过的技术时候,你可以花2天或者极短时间内去掌握并快速应用上线,那才是体现技术能力的价值的时候
4. 沟通能力
我见过的程序员大部分都是社恐,毕竟搞技术的很少时间去社交,宅成为我们的一种习惯。但即使是这样,沟通和表达依然是我们需要去提升的。
如何提升沟通能力大家可以去看一些书## 《关键对话:如何高效能沟通》
5. 抽象能力
抽象能力就是在思维活动中,通过对事物整体性的科.学分析,把自己认为是事物的本质方面、主要方面提取出来,舍弃非本质、非主要的东西,从而形成概念和范畴的思维能力。抽象要以分析、综合、比较为基础,抽象为判断和推理提供前提条件。在工作中,借用抽象能力,才能更深刻、更正确、更完全地反映客观事物
作为软件开发者,我们其实是非常需要有这份能力
而如何提升对事物的抽象能力,我建议以下几个方法,后续有时间再展开说明一下
- 经常总结归纳
- 迁移、举一反三
- 关注身边事物,并且联想归类
- 反向思维
6. 提前布局
作为开发者来说,老程序员们都在喊卷不过毕业开发者,而经验则是我们老程序员相比毕业生来说一个重要优势,通过踩过的坑、看过的书、经历过的项目来预判和提前布局一些事情。
三、如何成为优秀的架构师
如何成为优秀架构师,有太多需要去总结的,这里主要列出我接下来这段日子会去学习总结的技术堆,后续会有专题探讨这个问题
- 数据结构
- 常用算法
- 并发
- 操作系统
- 设计模式
- 运维&统计&技术支持
- 中间件
- 网络
- 数据库
- 搜索引擎
- 性能
- 大数据
- 安全
- 常用开源框架
- 分布式设计
- 设计思维&开发模式
- 项目管理
- 团队管理
- 技术趋势
- 技术资源
- 架构师素质
- ....