架构师应不该该写代码
为何别人的系统老是那么烂
成为架构师最困难的门槛是什么?
如何更高效的学习?
面对目前流行的技术不知如何下手?
一家公司待久了,过得很安逸,但跳槽时面试碰壁?
以为如今的技术基础感受到很扎实,但就是本身的技术提高不上?
以为本身很牛B,通常需求都能搞定,可是所学的知识点没有系统化,很难在技术领域继续突破?
如今以为本身技术还能够,但就是薪资涨不上去?java
以上这几点,作为开发人员的大家,有遇到过么?有为本身想过么?有细心仔细的去解决过这些问题么?有深入的想过么?虽然这几个问题很简单,但对于咱们在开发路上,是有很是重要的帮助的。程序员
1:架构师应不该该写代码面试
合格的程序员对于明确分配的任务会完成的很好,可是大部分状况下“架构”这个词意味着架构师并不会涉及太多细节,架构图和代码实现之间总仍是有些距离,你没法保证全部人都会正确的理解你的设计,或者是程序员写代码时遇到障碍时会马上想出足够优雅的解决方案。数据库
在我看来,写代码的架构师更像是在作后勤保障的工做:在代码中第一时间发现可能存在的问题,向其余人提出警告,或是给予其余人改进的意见,必要的时候或是给其余人演示一下正确的姿式。编程
大部分状况下我做为架构师并不须要揽下“核心模块”开发这种工做,毕竟我能调配的时间太零散了,效率难以保证,不少人在专一的状况下比我作的好不少,我只须要保持大局观须要适度参与就能够了。设计模式
总的来讲,架构师和程序员在某些方面上有点像产品经理和用户的关系,大部分程序员并不会主动告诉你他们想要什么、哪里须要优化,甚至本身也不知道这些。想要作出好的产品,捷径之一就是跟用户作一样的事情。api
2:为何别人的系统老是那么烂性能优化
不少程序员解决问题的能力很强,说要解决一个什么问题,下午就能写出几百行代码把功能实现了。可是作出来的东西有种少考虑了什么东西的感受。大部分程序都能实现功能,可是若是把“时间”这个也做为一个考虑的维度的话,就会意识到一个合格的项目须要考虑更多的东西:更通用的使用方式、易于理解的文档、简单而易于扩展的设计,等等。架构
不少公司应该都会有一些遗留系统,它们庞大、笨重、难用、几乎没法维护,全部人都在抱怨这些系统,而且天天都在千方百计换掉那些遗留系统。可是一段时间过去以后,又会发现身边的新人又开始吐槽当时替代遗留系统的那个系统了。并发
3:成为架构师最困难的门槛是什么?
不少人自称架构师的人跟你讲一个架构时简直口若悬河,各类技术名词像是说相声同样从他嘴里说出来,三句话不离高并发大数据,可是稍微追问一下,就会发现不少基本概念的缺失,例如自称精通高并发的人说不清楚他所谓的高并发系统的瓶颈在哪里,自称精通架构设计的人说不明白他的系统怎么保证高可用,自称超大数据量的系统实际上只有不到100万条数据,等等。
架构师虽然听起来很高大上,但本质上仍然是工程师,不是科学家,也不是忽悠人的江湖骗子。学习再多,也须要实践落地。设计架构方案更多的是在作一些抽象和权衡:把复杂的需求抽象成简单的模型,从功能、性能、可用性、研发成本等等方面规划如何构建一个系统,这些内容须要更多的实践练习。
4:如何更高效的学习?
大多数人天天能留给本身学习的时间有限,这个阶段如何提高学习效率就成了要解决的重点。
说说本身提高学习效率的心得,其实很是简单:体系化的学习。
在重复了几回痛苦的学习-梳理过程后,再去看一些独立的文章或者资料每每会事半功倍,由于能在体系内找到相对应的知识,甚至有时候一本书里一页只须要看一句话,点破那层窗户纸,就能够掌握新的知识。
跟不少人同样,刚毕业时我以为做为程序员,只要努力,加上少量天赋即可以得到一些成绩。
工做一段时间后,对本身和其余人的认识也愈来愈清晰,逐渐的发现程序员之间的差距或许比人和猴子之间的差距还大,接受这个事实这让我郁闷了好久。
再过一段时间,发现本身已经可以客观的评价本身的能力,也意识到了距离并非那么重要,只要想办法跑的更快,就足够了。
5:面对目前流行的技术不知如何下手?
第一,根据本身目前工做中所用到的技术,有目的性的学习;
第二,能够根据各大互联网公司的招聘要求,有选择性地进行规划学习;
第三,能够参照文章尾部Java架构师所具有知识点,上面有从源码到分布式到微服务到并发等,是十多年的一群有经验的老师整理出来的。
6:一家公司待久了,过得很安逸,但跳槽时面试碰壁?
不少程序员有这样的状况,由于一直处于本身的温馨区,天天写的是本身熟悉的业务代码,更多的作的是crud的工做,技术上没有挑战性,以为生活也还能够。可是一旦跳出这个温馨区,就会很难适应,不知所措,由于外面新的技术太多,本身彻底跟不上技术的步伐,这时候须要梳理一下本身目前所欠缺的点,有针对性地进行提升。
7:以为如今的技术基础感受到很扎实,但就是本身的技术提高不上?
这种技术扎实更多的是基础,好比javase,javaee等,并不能适应一线互联网公司的技术体系,好比分布式,微服务这块。技术提高不上是由于本身没有接触过相关的项目,之前那种基础知识网上还一大篇,可是越往上走资料越少,好的资料就越少,并且越往上若是没有引路人更加举步维艰。
8:以为本身很牛B,通常需求都能搞定,可是所学的知识点没有系统化,很难在技术领域继续突破?
这里的通常需求,更多的应该是在单机环境之下的crud操做,项目没有太多难度,顶可能是业务上的分析复杂一些,技术用到了一些主流的技术,好比dubbo,也仅仅停留在api的使用层面,不了解其原理,并且与dubbo相关的其余技术分支并无很好的拓展,因此感受很难突破。
9:如今以为本身技术还能够,但就是薪资涨不上去?
须要弄清楚薪资由什么决定,是由你的价值决定,而你的价值取决于你的技术能力,若是你的技术能力一直停留在crud的层面,确定会上不去,你须要作的是突破技术瓶颈。(我相信这一点,是大多数开发人员会首先考虑到的问题)。
通过以上的几个问题的总结,大家有一点点理解了么?有什么感触没?没有?那么大家继续往下看。
第一阶段----三年
我认为三年对于程序员来讲是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,咱们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。咱们知道如何团队协做、如何使用项目管理工具、项目版本如何控制、咱们写的代码如何测试如何在线上运行等等,积累了必定的开发经验,也对代码有了必定深刻的认识,是一个比较纯粹的Coder的阶段。
第二阶段----五年
五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工做,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码以外,还热衷于研究各类技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具有在技术上独当一面的能力而且清楚本身将来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物。
第三阶段----十年
十年又是另外一个门槛了,转行或是继续作一名程序员就在这个节点上。若是在前几年就抱定不转行的思路而且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深刻认识、对技术有着深刻认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于本身绝对是一件荣耀的事,固然老板在经济上也毫不会亏待你。
我认为,随着你工做年限的增加、对生活对生命认识的深刻,应当不断思考三个问题:
我到底适不适合当一名程序员?
我到底应不该该一生以程序员为职业?
我对编程到底持有的是一种什么样的态度,是够用就好呢仍是不断研究?
最终,明确本身的职业规划,对本身的规划负责并为之努力。
一:常见模式与工具
学习Java技术体系,设计模式,流行的框架与组件是必不可少的:
常见的设计模式,编码必备
Spring5,作应用必不可少的最新框架
MyBatis,玩数据库必不可少的组件
二:工程化与工具
工欲善其事必先利其器,无论是小白,仍是资深开发,玩Java技术体系,选择好的工具,提高开发效率和团队协做效率,是必不可少的:
Maven,项目管理
Jenkins,持续集成
Sonar,代码质量管理
Git,版本管理
在此我向你们推荐一个架构学习交流qun。交流学习qun号:+q q-q u n:948 368 769 qun内已经有小伙伴将知识体系整理好(源码,笔记,PPT,学习视频)。里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
三:分布式架构
高并发,高可用,海量数据,没有分布式的架构知识确定是玩不转的:
分布式架构原理
分布式架构策略
分布式中间件
分布式架构实战
四:微服务架构
业务愈来愈复杂,服务分层,微服务架构是架构升级的必由之路,Java技术体系,和微服务相关的技术有哪些呢?
微服务框架
Spring Cloud
Docker与虚拟化
微服务架构
在此我向你们推荐一个架构学习交流qun。交流学习qun号:+q q-q u n:948 368 769 qun内已经有小伙伴将知识体系整理好(源码,笔记,PPT,学习视频)。里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
五:性能优化
任何脱离细节的ppt架构师都是耍流氓,向上能指挥若定,向下能解决一线性能问题,Java技术体系,须要了解:
性能指标体系
JVM调优
Web调优
DB调优
在此我向你们推荐一个架构学习交流qun。交流学习qun号:+q q-q u n:948 368 769 qun内已经有小伙伴将知识体系整理好(源码,笔记,PPT,学习视频)。里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
六:底层知识
从架构设计,到应用层调优,再深刻了解底层原理,扎实的Java基本功才能让本身变为扫地神僧:
内存模型
并发模式
线程模