小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。
所以,大部分(超过九成的)码农干上许多年,还是做不了架构师,这是什么原因造成的呢?
1:码农分为真的能写代码的,以及自认为能写代码的。
2:真的能写代码的码农又分为自认为写的不错的,以及真的还不错的。
3:真的能写不错代码的码农又分为会钻研会不断优化的,以及安于现状的。
4:会钻研的码农又分为喜欢广度了解新技术蜻蜓点水的,以及深入钻研用到知识的。
了解广度的码农又有少部分愿意深入某些技术,喜欢深入研究的又往往缺乏广度知识。
5:极少深度广度都关注的码农又分为为技术而技术和为业务而技术的。
纯为技术而技术的码农在国内的软件行业需求太少,且需求的往往不是应用软件领域了。
6:为业务而技术的深度广度都了解的码农,又需要有良好的沟通能力。
7:而沟通好的,又有一部分当PM去了。
8:然后剩下的,又有一部分慢慢脱离实际开发(不再做任何实现)或者开始依靠拿各种中间件搭积木来作为“架构”手段。
9:除去这些,剩下对业务有一定了解,对技术广度上有多种涉猎,深度上对部分技术研究彻底,还有很重要的一点,考虑问题足够细致全面。
10:细致全面善于沟通,技术上深度广度都没问题, 又喜欢这个工作,还会不时做底层实现,从业务和开发两个角度出发,搭出“架构”来是为了开发效率,为了运行效率,为了开发质量,为了业务灵活和运行稳定,为了维护方便等等这样的人,个人认为可以称为“架构师”。
而真能满足这种需求的,别说10%的比例,1%能不能达到我也持怀疑态度。其实现在的“架构师”大多数都停留在8这个层次,甚至很多在5这个层次就当上title上的架构师了。
总之,成为架构师,不仅仅是工作上的简单积累,更需要主动接纳工作外的大量知识,同时,对性格上对于非技术能力上也有一定的要求,不仅如此连思维方式都很重要, 要不断 找准自己定位,不断思考 如何搭建架构师知识体系?
1
学会 如何 分析源码?
大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。因为它是两个原因造成的:
1:我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码
2: 大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用
所以,要养成源码三问的习惯:
“为什么要有这样的架构”
“他是什么样子的”
“他是怎么工作的”
2
为什么是分布式?
首先需要说明的是,分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的。
3
微服务 为什么 会这么火?
相信大家都了解 业务越来越复杂,服务分层,微服务架构是架构升级的必由之路,而对于 微服务的优点相信大家都不陌生。
比如: 易于开发与维护 / 微服务相对小,易于理解 / 启动时间短,开发效率高 / 独立部署 / 伸缩性强 / 每个服务都可以在横向和纵向上扩展 / 微服务架构可以更好将架构和组织相匹配 / 每个团队独立负责某些服务,获得更高的生产力 / 降低尝试新技术的成本......
4
程序员到底要不要学习JVM?
总有人问这个东西好像用不上,于是要不要学这样的问题,然后又总有人担心一直搬砖成天做些重复没提升的东西。
如果你这辈子只甘心做一个平庸的Java码农,那么你完全没有必要去学习JVM相关的知识。
话不多说,附上学习体系图:
5
被我们忽略掉的工程化专题
在IT产业中,寡头化出现代表着创业公司减少--没人再去用声势浩大的发布会讲故事、没人再去宣传自己拿了多少融资。
这一代中国人自小的教育不比欧美的STEAM,而是重学术、轻手艺。我们往往会为工科和产能过剩画上等号。强大的资本和技术门槛为这些产业蒙上了一层神秘的面纱,让普通人很难真正了解到其中技术和工艺的复杂程度,也就更难明白其中的价值。可正是因为中国的工程化能力,才让我们有机会走到AI时代的第一梯队,而不仅仅是靠学术研究能力。
附上思维脑图:
6
没有高并发经验,想进大公司该怎么办?
假如没有靠谱的公司,接触不到高并发的业务场景怎么办?你永远解决的是小问题,工作10年技术也未必提升多少。
很多程序员也经常找我说,没有经验就没有靠谱的公司收,没有靠谱的公司也就没有经验,我看了无数的书,自己做了无数的实验拼命想找个靠谱公司去深入,但是感觉好难,简直是个死循环
大家都比较关注高并发,原因很简单,想去BAT这样的大公司,你必须要有高并发的经验。今天普及下高并发的知识,希望大家对高并发有一个正确的认识。
7
学习千遍,不如项目实战成功一次
有人说: 项目实战相信很多程序员都多少会有的,可是我们这个还要学习什么呢?
我的回答是:那就要看你想不想成为一个架构师了, 为什么98%的程序员工作10年,一辈子还只是一个开发者 , 程序员们都要想一想这个问题,我是不是需要提升了。
我认为,学习项目实战最重要的还是学习项目管理,作为程序员,都应该学点项目管理。
凡事皆为“项目” 项目的两类属性(复杂的逻辑,庞大的信息量)
这才是我们学习“项目实战”的终极意义。
现在作为程序员的你, 或许 想提升自己,却找不到突破口,公司没人带。又或许你已经工作6年了,却还是很迷茫,很多知识都还是不懂,也没有达到自己期望的一个职位,薪资。
相信大家,在学习的路上也遇到了不少的坑,有人放弃,有人坚持,但是我相信 作为程序员的你不会想 终其一生也只是一个开发,到年龄就会被公司辞退。
所以,大家如果想往技术路上走的,想成为架构师的,一定要 保持终生学习的态度,让学习力成为核心竞争力,才能不被时代所淘汰, 这里我也分享自己收集的系统的学习资料,和几套学习路径图给大家,真心的希望能帮助到大家 。
大家可以在群QQ群:524470979 群公告自行领取。
注:欢迎有1年以上开发经验Java程序员
↓↓↓ 戳 “阅读原 文” ,也直接加群 。